Class: Unmagic::Color::RGB::Named

Inherits:
Object
  • Object
show all
Defined in:
lib/unmagic/color/rgb/named.rb

Overview

Named colors support for RGB colors.

Provides access to standard named colors (like “red”, “blue”, “goldenrod”) and converts them to RGB color instances.

Examples:

Parse a named color

Unmagic::Color::RGB::Named.parse("goldenrod")
#=> RGB instance for #daa520

Case-insensitive and whitespace-tolerant

Unmagic::Color::RGB::Named.parse("Golden Rod")
#=> RGB instance for #daa520
Unmagic::Color::RGB::Named.parse("GOLDENROD")
#=> RGB instance for #daa520

Check if a name is valid

Unmagic::Color::RGB::Named.valid?("goldenrod")
#=> true
Unmagic::Color::RGB::Named.valid?("notacolor")
#=> false

Defined Under Namespace

Classes: ParseError

Class Method Summary collapse

Class Method Details

.allArray<String>

Get all available color names.

Examples:

Unmagic::Color::RGB::Named.all.take(5)
#=> ["black", "silver", "gray", "white", "maroon"]

Returns:

  • (Array<String>)

    Array of all color names



69
70
71
# File 'lib/unmagic/color/rgb/named.rb', line 69

def all
  data.keys
end

.parse(name) ⇒ RGB

Parse a named color and return its RGB representation.

Examples:

Unmagic::Color::RGB::Named.parse("goldenrod")
#=> RGB instance for #daa520

Parameters:

  • name (String)

    The color name to parse (case-insensitive)

Returns:

  • (RGB)

    The RGB color instance

Raises:

  • (ParseError)

    If the color name is not recognized



40
41
42
43
44
45
46
47
# File 'lib/unmagic/color/rgb/named.rb', line 40

def parse(name)
  normalized_name = normalize_name(name)
  hex_value = data[normalized_name]

  raise ParseError, "Unknown color name: #{name.inspect}" unless hex_value

  Hex.parse(hex_value)
end

.valid?(name) ⇒ Boolean

Check if a color name is valid.

Examples:

Unmagic::Color::RGB::Named.valid?("goldenrod")
#=> true

Parameters:

  • name (String)

    The color name to check

Returns:

  • (Boolean)

    true if the name exists



57
58
59
60
# File 'lib/unmagic/color/rgb/named.rb', line 57

def valid?(name)
  normalized_name = normalize_name(name)
  data.key?(normalized_name)
end