module Compass::Core::SassExtensions::Functions::Constants

Constants

POSITIONS

Public Instance Methods

is_position(position) click to toggle source
# File lib/compass/core/sass_extensions/functions/constants.rb, line 3
def is_position(position)
  bool(position.is_a?(Sass::Script::Value::String) && !!(position.value =~ POSITIONS))
end
is_position_list(position_list) click to toggle source
# File lib/compass/core/sass_extensions/functions/constants.rb, line 6
def is_position_list(position_list)
  bool(position_list.is_a?(Sass::Script::Value::List) && position_list.value.all?{|p| is_position(p).to_bool})
end
is_url(string) click to toggle source
# File lib/compass/core/sass_extensions/functions/constants.rb, line 48
def is_url(string)
  if string.is_a?(Sass::Script::Value::String)
    is_url = !!(string.value =~ /^url\(.*\)$/)
    bool(is_url)
  else
    bool(false)
  end
end
opposite_position(position) click to toggle source

returns the opposite position of a side or corner.

# File lib/compass/core/sass_extensions/functions/constants.rb, line 10
def opposite_position(position)
  position = unless position.is_a?(Sass::Script::Value::List)
    list(position, :space)
  else
    list(position.value.dup, position.separator)
  end
  position = list(position.value.map do |pos|
    if pos.is_a? Sass::Script::Value::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
      identifier(opposite)
    elsif pos.is_a? Sass::Script::Value::Number
      if pos.numerator_units == ["%"] && pos.denominator_units == []
        number(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, position.separator)
  if position.value.size == 1
    position.value.first
  else
    position
  end
end