Class: HighLine::ColorScheme

Inherits:
Object
  • Object
show all
Defined in:
lib/highline/color_scheme.rb

Overview

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

Direct Known Subclasses

SampleColorScheme

Instance Method Summary collapse

Constructor Details

#initialize(h = nil) {|_self| ... } ⇒ ColorScheme

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.

Yields:

  • (_self)

Yield Parameters:


49
50
51
52
53
# 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

Instance Method Details

#[](color_tag) ⇒ Object

Allow the scheme to be accessed like a Hash.


68
69
70
# File 'lib/highline/color_scheme.rb', line 68

def []( color_tag )
  @scheme[to_symbol(color_tag)]
end

#[]=(color_tag, constants) ⇒ Object

Allow the scheme to be set like a Hash.


84
85
86
87
# 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

#definition(color_tag) ⇒ Object

Retrieve the original form of the scheme


73
74
75
76
# File 'lib/highline/color_scheme.rb', line 73

def definition( color_tag )
  style = @scheme[to_symbol(color_tag)]
  style && style.list
end

#include?(color_tag) ⇒ Boolean

Does this color scheme include the given tag name?


63
64
65
# File 'lib/highline/color_scheme.rb', line 63

def include?( color_tag )
  @scheme.keys.include?(to_symbol(color_tag))
end

#keysObject

Retrieve the keys in the scheme


79
80
81
# File 'lib/highline/color_scheme.rb', line 79

def keys
  @scheme.keys
end

#load_from_hash(h) ⇒ Object

Load multiple colors from key/value pairs.


56
57
58
59
60
# 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

#to_hashObject

Retrieve the color scheme hash (in original definition format)


90
91
92
# File 'lib/highline/color_scheme.rb', line 90

def to_hash
  @scheme.inject({}) { |hsh, pair| key, value = pair; hsh[key] = value.list; hsh }
end