[](name)
click to toggle source
def self.[](name)
case
when self === name then name
when name.to_s =~ /\A(on_)?(\d+)\z/ then get "#$1color#$2"
when name.to_s =~ /\A#([0-9a-f]{3}){1,2}\z/ then nearest_rgb_color name
when name.to_s =~ /\Aon_#([0-9a-f]{3}){1,2}\z/ then nearest_rgb_on_color name
else get name
end
end
attributes(&block)
click to toggle source
def self.attributes(&block)
@__store__.each_value(&block)
end
get(name)
click to toggle source
def self.get(name)
@__store__[name.to_sym]
end
named_attributes(&block)
click to toggle source
def self.named_attributes(&block)
@named_attributes ||= attributes.reject(&:rgb_color?).each(&block)
end
nearest_rgb_color(color)
click to toggle source
def self.nearest_rgb_color(color)
rgb = RGBTriple[color]
rgb_colors.reject(&:background?).min_by { |c| c.distance_to(rgb) }
end
nearest_rgb_on_color(color)
click to toggle source
def self.nearest_rgb_on_color(color)
rgb = RGBTriple[color]
rgb_colors.select(&:background?).min_by { |c| c.distance_to(rgb) }
end
new(name, code, options = {})
click to toggle source
def initialize(name, code, options = {})
@name = name.to_sym
@code = code.to_s
if html = options[:html]
@rgb = RGBTriple.from_html(html)
elsif !options.empty?
@rgb = RGBTriple.from_hash(options)
end
end
rgb_colors(&block)
click to toggle source
def self.rgb_colors(&block)
@rgb_colors ||= attributes.select(&:rgb_color?).each(&block)
end
set(name, code, options = {})
click to toggle source
def self.set(name, code, options = {})
name = name.to_sym
result = @__store__[name] = new(name, code, options)
@rgb_colors = nil
result
end