Class: HighLine::ColorScheme
- Defined in:
- lib/skylight/vendor/cli/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
Instance Method Summary collapse
-
#[](color_tag) ⇒ Object
Allow the scheme to be accessed like a Hash.
-
#[]=(color_tag, constants) ⇒ Object
Allow the scheme to be set like a Hash.
-
#definition(color_tag) ⇒ Object
Retrieve the original form of the scheme.
-
#include?(color_tag) ⇒ Boolean
Does this color scheme include the given tag name?.
-
#initialize(h = nil) {|_self| ... } ⇒ ColorScheme
constructor
Create an instance of HighLine::ColorScheme.
-
#keys ⇒ Object
Retrieve the keys in the scheme.
-
#load_from_hash(h) ⇒ Object
Load multiple colors from key/value pairs.
-
#to_hash ⇒ Object
Retrieve the color scheme hash (in original definition format).
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.
49 50 51 52 53 |
# File 'lib/skylight/vendor/cli/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/skylight/vendor/cli/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/skylight/vendor/cli/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/skylight/vendor/cli/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/skylight/vendor/cli/highline/color_scheme.rb', line 63 def include?( color_tag ) @scheme.keys.include?(to_symbol(color_tag)) end |
#keys ⇒ Object
Retrieve the keys in the scheme
79 80 81 |
# File 'lib/skylight/vendor/cli/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/skylight/vendor/cli/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_hash ⇒ Object
Retrieve the color scheme hash (in original definition format)
90 91 92 |
# File 'lib/skylight/vendor/cli/highline/color_scheme.rb', line 90 def to_hash @scheme.inject({}) { |hsh, pair| key, value = pair; hsh[key] = value.list; hsh } end |