class HighLine::ColorScheme
ColorScheme objects encapsulate a named set
of colors to be used in the HighLine.colors() method call. For example, by
applying a ColorScheme that has a
:warning
color then the following could be used:
colors("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
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.
# File lib/highline/color_scheme.rb, line 49 def initialize( h = nil ) @scheme = Hash.new load_from_hash(h) unless h.nil? yield self if block_given? end
Public Instance Methods
Allow the scheme to be accessed like a Hash.
# File lib/highline/color_scheme.rb, line 68 def []( color_tag ) @scheme[to_symbol(color_tag)] end
Allow the scheme to be set like a Hash.
# File lib/highline/color_scheme.rb, line 84 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
Retrieve the original form of the scheme
# File lib/highline/color_scheme.rb, line 73 def definition( color_tag ) style = @scheme[to_symbol(color_tag)] style && style.list end
Does this color scheme include the given tag name?
# File lib/highline/color_scheme.rb, line 63 def include?( color_tag ) @scheme.keys.include?(to_symbol(color_tag)) end
Retrieve the keys in the scheme
# File lib/highline/color_scheme.rb, line 79 def keys @scheme.keys end
Load multiple colors from key/value pairs.
# File lib/highline/color_scheme.rb, line 56 def load_from_hash( h ) h.each_pair do |color_tag, constants| self[color_tag] = constants end end
Retrieve the color scheme hash (in original definition format)
# File lib/highline/color_scheme.rb, line 90 def to_hash @scheme.inject({}) { |hsh, pair| key, value = pair; hsh[key] = value.list; hsh } end
Private Instance Methods
Return a normalized representation of a color setting.
# File lib/highline/color_scheme.rb, line 103 def to_constant( v ) v = v.to_s if v.is_a?(Symbol) if v.is_a?(::String) then HighLine.const_get(v.upcase) else v end end
Return a normalized representation of a color name.
# File lib/highline/color_scheme.rb, line 98 def to_symbol( t ) t.to_s.downcase end