class Sass::Constant::Color
:nodoc:
:nodoc:
def self.filter_value(value)
def self.filter_value(value) value.map { |num| num.to_i } end
def div(other)
def div(other) if other.is_a? Sass::Constant::String raise NoMethodError.new(nil, :div) else piecewise(other, :/) end end
def minus(other)
def minus(other) if other.is_a? Sass::Constant::String raise NoMethodError.new(nil, :minus) else piecewise(other, :-) end end
def mod(other)
def mod(other) if other.is_a? Sass::Constant::String raise NoMethodError.new(nil, :mod) else piecewise(other, :%) end end
def parse(value)
def parse(value) if (value =~ REGEXP) @value = value.scan(REGEXP)[0].map { |num| num.ljust(2, num).to_i(16) } else color = HTML4_COLORS[value.downcase] @value = (0..2).map{ |n| color >> (n << 3) & 0xff }.reverse end end
def piecewise(other, operation)
def piecewise(other, operation) other_num = other.is_a? Number other_val = other.value rgb = [] for i in (0...3) res = @value[i].send(operation, other_num ? other_val : other_val[i]) rgb[i] = [ [res, 255].min, 0 ].max end Color.from_value(rgb) end
def plus(other)
def plus(other) if other.is_a? Sass::Constant::String Sass::Constant::String.from_value(self.to_s + other.to_s) else piecewise(other, :+) end end
def times(other)
def times(other) if other.is_a? Sass::Constant::String raise NoMethodError.new(nil, :times) else piecewise(other, :*) end end
def to_s
def to_s red, green, blue = @value.map { |num| num.to_s(16).rjust(2, '0') } "##{red}#{green}#{blue}" end