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