mirror of
https://github.com/kidoman/embd
synced 2025-02-11 13:13:18 +01:00
129 lines
3.1 KiB
Ruby
Executable File
129 lines
3.1 KiB
Ruby
Executable File
require 'compass'
|
|
# require 'sassy-math'
|
|
|
|
# This tells Compass what your Compass extension is called, and where to find
|
|
# its files
|
|
# Replace 'extension' with the name of your extension. Spaces allowed.
|
|
extension_path = File.expand_path(File.join(File.dirname(__FILE__), ".."))
|
|
Compass::Frameworks.register('modular-scale', :path => extension_path)
|
|
|
|
# Version and date of version for your Compass extension.
|
|
# Replace Extension with the name of your extension
|
|
# Letters, numbers, and underscores only
|
|
# Version is a number. If a version contains alphas, it will be created as
|
|
# a prerelease version
|
|
# Date is in the form of YYYY-MM-DD
|
|
module ModularScale
|
|
VERSION = "1.0.6"
|
|
DATE = "2012-08-13"
|
|
end
|
|
|
|
# This is where any custom SassScript should be placed. The functions will be
|
|
# available on require of your extension without the need for users to import
|
|
# any partials. Uncomment below.
|
|
|
|
# Modular Scale Sass Script
|
|
module Sass::Script
|
|
class Number < Literal
|
|
# Comparison
|
|
def <=>(other)
|
|
value <=> other.value
|
|
end
|
|
end
|
|
end
|
|
|
|
module Sass::Script::Functions
|
|
# Modular Scale
|
|
def double_octave
|
|
value = 4 / 1.0
|
|
Sass::Script::Number.new(value)
|
|
end
|
|
def major_twelfth
|
|
value = 3 / 1.0
|
|
Sass::Script::Number.new(value)
|
|
end
|
|
def major_eleventh
|
|
value = 8 / 3.0
|
|
Sass::Script::Number.new(value)
|
|
end
|
|
def major_tenth
|
|
value = 5 / 2.0
|
|
Sass::Script::Number.new(value)
|
|
end
|
|
def octave
|
|
value = 2 / 1.0
|
|
Sass::Script::Number.new(value)
|
|
end
|
|
def major_seventh
|
|
value = 15 / 8.0
|
|
Sass::Script::Number.new(value)
|
|
end
|
|
def minor_seventh
|
|
value = 16 /9.0
|
|
Sass::Script::Number.new(value)
|
|
end
|
|
def major_sixth
|
|
value = 5 / 3.0
|
|
Sass::Script::Number.new(value)
|
|
end
|
|
def minor_sixth
|
|
value = 8 / 5.0
|
|
Sass::Script::Number.new(value)
|
|
end
|
|
def fifth
|
|
value = 3 / 2.0
|
|
Sass::Script::Number.new(value)
|
|
end
|
|
def augmented_fourth
|
|
value = Math.sqrt(2) / 1.0
|
|
Sass::Script::Number.new(value)
|
|
end
|
|
def fourth
|
|
value = 4 / 3.0
|
|
Sass::Script::Number.new(value)
|
|
end
|
|
def major_third
|
|
value = 5 / 4.0
|
|
Sass::Script::Number.new(value)
|
|
end
|
|
def minor_third
|
|
value = 6 / 5.0
|
|
Sass::Script::Number.new(value)
|
|
end
|
|
def major_second
|
|
value = 9 / 8.0
|
|
Sass::Script::Number.new(value)
|
|
end
|
|
def minor_second
|
|
value = 16 / 15.0
|
|
Sass::Script::Number.new(value)
|
|
end
|
|
|
|
# Lists
|
|
def sort_list(list)
|
|
sep = list.separator if list.is_a?(Sass::Script::List)
|
|
list = list.to_a.sort
|
|
Sass::Script::List.new(list, sep)
|
|
end
|
|
def reverse_list(list)
|
|
sep = list.separator if list.is_a?(Sass::Script::List)
|
|
list = list.to_a.reverse
|
|
Sass::Script::List.new(list, sep)
|
|
end
|
|
def trim_list(list, threshold, ascending)
|
|
# remove list items above or below a threshold
|
|
sep = list.separator if list.is_a?(Sass::Script::List)
|
|
list = list.to_a
|
|
if ascending.value
|
|
list = list.delete_if {
|
|
|x| x.value <= threshold.value
|
|
}
|
|
else
|
|
list = list.delete_if {
|
|
|x| x.value >= threshold.value
|
|
}
|
|
end
|
|
Sass::Script::List.new(list, sep)
|
|
end
|
|
end
|