embd/bower_components/gumby/sass/extensions/modular-scale/lib/modular-scale.rb

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