class HighLine::ColorScheme

ColorScheme objects encapsulate a named set of colors to be used in the {HighLine.color} method call. For example, by applying a ColorScheme that has a :warning color then the following could be used:

color("This is a warning", :warning)

A ColorScheme contains named sets of HighLine color constants.

@example Instantiating a color scheme, applying it to HighLine,

and using it:
ft = HighLine::ColorScheme.new do |cs|
       cs[:headline]        = [ :bold, :yellow, :on_black ]
       cs[:horizontal_line] = [ :bold, :white ]
       cs[:even_row]        = [ :green ]
       cs[:odd_row]         = [ :magenta ]
     end

HighLine.color_scheme = ft
say("<%= color('Headline', :headline) %>")
say("<%= color('-'*20, :horizontal_line) %>")
i = true
("A".."D").each do |row|
   if i then
     say("<%= color('#{row}', :even_row ) %>")
   else
     say("<%= color('#{row}', :odd_row) %>")
   end
   i = !i
end

Public Class Methods

new(h = nil) { |self| ... } click to toggle source

Create an instance of HighLine::ColorScheme. The customization can happen as a passed in Hash or via the yielded block. Keys are converted to :symbols and values are converted to HighLine constants.

@param h [Hash]

# File lib/highline/color_scheme.rb, line 51
def initialize(h = nil)
  @scheme = {}
  load_from_hash(h) if h
  yield self if block_given?
end

Public Instance Methods

[](color_tag) click to toggle source

Allow the scheme to be accessed like a Hash. @param color_tag [#to_sym] @return [Style]

# File lib/highline/color_scheme.rb, line 75
def [](color_tag)
  @scheme[to_symbol(color_tag)]
end
[]=(color_tag, constants) click to toggle source

Allow the scheme to be set like a Hash. @param color_tag [#to_sym] @param constants [Array<Symbol>] Array of Style symbols

# File lib/highline/color_scheme.rb, line 95
def []=(color_tag, constants)
  @scheme[to_symbol(color_tag)] =
    HighLine::Style.new(name: color_tag.to_s.downcase.to_sym,
                        list: constants,
                        no_index: true)
end
definition(color_tag) click to toggle source

Retrieve the original form of the scheme @param color_tag [#to_sym]

# File lib/highline/color_scheme.rb, line 81
def definition(color_tag)
  style = @scheme[to_symbol(color_tag)]
  style && style.list
end
include?(color_tag) click to toggle source

Does this color scheme include the given tag name? @param color_tag [#to_sym] @return [Boolean]

# File lib/highline/color_scheme.rb, line 68
def include?(color_tag)
  @scheme.keys.include?(to_symbol(color_tag))
end
keys() click to toggle source

Retrieve the keys in the scheme @return [Array] of keys

# File lib/highline/color_scheme.rb, line 88
def keys
  @scheme.keys
end
load_from_hash(h) click to toggle source

Load multiple colors from key/value pairs. @param h [Hash]

# File lib/highline/color_scheme.rb, line 59
def load_from_hash(h)
  h.each_pair do |color_tag, constants|
    self[color_tag] = constants
  end
end
to_hash() click to toggle source

Retrieve the color scheme hash (in original definition format) @return [Hash] scheme as Hash. It may be reused in a new ColorScheme.

# File lib/highline/color_scheme.rb, line 104
def to_hash
  @scheme.each_with_object({}) do |pair, hsh|
    key, value = pair
    hsh[key] = value.list
  end
end

Private Instance Methods

to_constant(v) click to toggle source

Return a normalized representation of a color setting.

# File lib/highline/color_scheme.rb, line 119
def to_constant(v)
  v = v.to_s if v.is_a?(Symbol)
  if v.is_a?(::String)
    HighLine.const_get(v.upcase)
  else
    v
  end
end
to_symbol(t) click to toggle source

Return a normalized representation of a color name.

# File lib/highline/color_scheme.rb, line 114
def to_symbol(t)
  t.to_s.downcase
end