class MirrorMirror::Transformation::LinearGradient

Constants

DIRECTIONAL_KEYWORDS
IMAGE_PROPERTIES
S360

Public Instance Methods

color_stop?(e) click to toggle source
# File lib/mirror-mirror/transformation/linear_gradient.rb, line 56
def color_stop?(e)
  e.is_a?(Sass::Script::Color) ||
    (e.is_a?(Sass::Script::List) && e.value.first.is_a?(Sass::Script::Color))
end
degree?(e) click to toggle source
# File lib/mirror-mirror/transformation/linear_gradient.rb, line 42
def degree?(e)
  e.is_a?(Sass::Script::Number) && e.numerator_units.first == "deg"
end
direction?(e) click to toggle source
# File lib/mirror-mirror/transformation/linear_gradient.rb, line 52
def direction?(e)
  degree?(e) || directional_keywords?(e)
end
directional_keywords?(e) click to toggle source
# File lib/mirror-mirror/transformation/linear_gradient.rb, line 47
def directional_keywords?(e)
  (e.is_a?(Sass::Script::List) && e.value.first.is_a?(Sass::Script::String) && DIRECTIONAL_KEYWORDS.include?(e.value.first.value)) ||
    e.is_a?(Sass::Script::String) && DIRECTIONAL_KEYWORDS.include?(e.value)
end
find_linear_gradient(expression) click to toggle source
# File lib/mirror-mirror/transformation/linear_gradient.rb, line 29
def find_linear_gradient(expression)
  case expression
  when Sass::Script::List
    expression.value.each do |v|
      grad = find_linear_gradient(v)
      return grad if grad
    end
    nil
  when Sass::Script::Funcall
    expression if expression.name =~ /^(-(moz|webkit|o|ms)-)?(repeating-)?linear-gradient$/
  end
end
flip(direction) click to toggle source
# File lib/mirror-mirror/transformation/linear_gradient.rb, line 62
def flip(direction)
  if degree?(direction)
    opts(direction.options) { S360.minus(direction).mod(S360) }
  else
    case direction
    when Sass::Script::List
      direction.value.map!{|v| flip(v) }
      direction
    when Sass::Script::String
      if direction.value == "left"
        opts(direction.options) { Sass::Script::String.new("right") }
      elsif direction.value == "right"
        opts(direction.options) { Sass::Script::String.new("left") }
      else
        direction
      end
    else
      direction
    end
  end
end
transform_expression(name, expression) click to toggle source
# File lib/mirror-mirror/transformation/linear_gradient.rb, line 16
def transform_expression(name, expression)
  for_each_value(expression) do |e|
    if grad = find_linear_gradient(e)
      if direction?(grad.args[0])
        grad.args[0] = flip(grad.args[0])
      end
      e
    else
      e
    end
  end
end
transform_expression?(name) click to toggle source
# File lib/mirror-mirror/transformation/linear_gradient.rb, line 12
def transform_expression?(name)
  IMAGE_PROPERTIES.include?(name)
end