Module: Compass::SassExtensions::Functions::Constants
- Included in:
- GradientSupport::LinearGradient, GradientSupport::RadialGradient, Sass::Script::Functions
- Defined in:
- lib/compass/sass_extensions/functions/constants.rb
Constant Summary collapse
- POSITIONS =
/top|bottom|left|right|center/
Instance Method Summary collapse
- #is_position(position) ⇒ Object
- #is_position_list(position_list) ⇒ Object
- #is_url(string) ⇒ Object
-
#opposite_position(position) ⇒ Object
returns the opposite position of a side or corner.
Instance Method Details
#is_position(position) ⇒ Object
4 5 6 |
# File 'lib/compass/sass_extensions/functions/constants.rb', line 4 def is_position(position) Sass::Script::Bool.new(position.is_a?(Sass::Script::String) && !!(position.value =~ POSITIONS)) end |
#is_position_list(position_list) ⇒ Object
7 8 9 |
# File 'lib/compass/sass_extensions/functions/constants.rb', line 7 def is_position_list(position_list) Sass::Script::Bool.new(position_list.is_a?(Sass::Script::List) && position_list.value.all?{|p| is_position(p).to_bool}) end |
#is_url(string) ⇒ Object
49 50 51 52 53 54 55 56 |
# File 'lib/compass/sass_extensions/functions/constants.rb', line 49 def is_url(string) if string.is_a?(Sass::Script::String) is_url = !!(string.value =~ /^url\(.*\)$/) Sass::Script::Bool.new(is_url) else Sass::Script::Bool.new(false) end end |
#opposite_position(position) ⇒ Object
returns the opposite position of a side or corner.
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
# File 'lib/compass/sass_extensions/functions/constants.rb', line 11 def opposite_position(position) position = unless position.is_a?(Sass::Script::List) Sass::Script::List.new([position], :space) else Sass::Script::List.new(position.value.dup, position.separator) end position.value.map! do |pos| if pos.is_a? Sass::Script::String opposite = case pos.value when "top" then "bottom" when "bottom" then "top" when "left" then "right" when "right" then "left" when "center" then "center" else Compass::Util.compass_warn("Cannot determine the opposite position of: #{pos}") pos.value end Sass::Script::String.new(opposite) elsif pos.is_a? Sass::Script::Number if pos.numerator_units == ["%"] && pos.denominator_units == [] Sass::Script::Number.new(100-pos.value, ["%"]) else Compass::Util.compass_warn("Cannot determine the opposite position of: #{pos}") pos end else Compass::Util.compass_warn("Cannot determine the opposite position of: #{pos}") pos end end if position.value.size == 1 position.value.first else position end end |