class Colors::NamedColors::Mapping
Public Class Methods
new()
click to toggle source
# File lib/colors/named_colors.rb, line 4 def initialize @mapping = {} @cache = {} end
Public Instance Methods
[](name)
click to toggle source
# File lib/colors/named_colors.rb, line 9 def [](name) if NamedColors.nth_color?(name) cycle = ColorData::DEFAULT_COLOR_CYCLE name = cycle[name[1..-1].to_i % cycle.length] end @cache[name] ||= lookup_no_color_cycle(name) end
[]=(name, value)
click to toggle source
# File lib/colors/named_colors.rb, line 55 def []=(name, value) @mapping[name] = value ensure @cache.clear end
delete(name)
click to toggle source
# File lib/colors/named_colors.rb, line 61 def delete(name) @mapping.delete(name) ensure @cache.clear end
update(other)
click to toggle source
# File lib/colors/named_colors.rb, line 67 def update(other) @mapping.update(other) ensure @cache.clear end
Private Instance Methods
lookup_no_color_cycle(name)
click to toggle source
# File lib/colors/named_colors.rb, line 17 def lookup_no_color_cycle(name) case name when /\Anone\z/i return RGBA.new(0, 0, 0, 0) when String # nothing to do when Symbol name = name.to_s else name = name.to_str end color = @mapping.fetch(name, name) case color when /\A#\h+\z/ case color.length - 1 when 3, 6 RGB.parse(color) when 4, 8 RGBA.parse(color) else raise RuntimeError, "[BUG] Invalid hex string form #{color.inspect} for #{name.inspect}" end when Array case color.length when 3 RGB.new(*color) when 4 RGBA.new(*color) else raise RuntimeError, "[BUG] Invalid number of color components #{color} for #{name.inspect}" end else color end end