Module: GHI::Formatting::Colors

Included in:
GHI::Formatting
Defined in:
lib/ghi/formatting/colors.rb

Defined Under Namespace

Classes: FakePygmentizer, Pygmentizer

Constant Summary collapse

ANSI =
{
  :bright    => 1,
  :underline => 4,
  :blink     => 5,
  :inverse   => 7,

  :black     => 0,
  :red       => 1,
  :green     => 2,
  :yellow    => 3,
  :blue      => 4,
  :magenta   => 5,
  :cyan      => 6,
  :white     => 7
}
WEB =
{
  'aliceblue'            => 'f0f8ff',
  'antiquewhite'         => 'faebd7',
  'aqua'                 => '00ffff',
  'aquamarine'           => '7fffd4',
  'azure'                => 'f0ffff',
  'beige'                => 'f5f5dc',
  'bisque'               => 'ffe4c4',
  'black'                => '000000',
  'blanchedalmond'       => 'ffebcd',
  'blue'                 => '0000ff',
  'blueviolet'           => '8a2be2',
  'brown'                => 'a52a2a',
  'burlywood'            => 'deb887',
  'cadetblue'            => '5f9ea0',
  'chartreuse'           => '7fff00',
  'chocolate'            => 'd2691e',
  'coral'                => 'ff7f50',
  'cornflowerblue'       => '6495ed',
  'cornsilk'             => 'fff8dc',
  'crimson'              => 'dc143c',
  'cyan'                 => '00ffff',
  'darkblue'             => '00008b',
  'darkcyan'             => '008b8b',
  'darkgoldenrod'        => 'b8860b',
  'darkgray'             => 'a9a9a9',
  'darkgrey'             => 'a9a9a9',
  'darkgreen'            => '006400',
  'darkkhaki'            => 'bdb76b',
  'darkmagenta'          => '8b008b',
  'darkolivegreen'       => '556b2f',
  'darkorange'           => 'ff8c00',
  'darkorchid'           => '9932cc',
  'darkred'              => '8b0000',
  'darksalmon'           => 'e9967a',
  'darkseagreen'         => '8fbc8f',
  'darkslateblue'        => '483d8b',
  'darkslategray'        => '2f4f4f',
  'darkslategrey'        => '2f4f4f',
  'darkturquoise'        => '00ced1',
  'darkviolet'           => '9400d3',
  'deeppink'             => 'ff1493',
  'deepskyblue'          => '00bfff',
  'dimgray'              => '696969',
  'dimgrey'              => '696969',
  'dodgerblue'           => '1e90ff',
  'firebrick'            => 'b22222',
  'floralwhite'          => 'fffaf0',
  'forestgreen'          => '228b22',
  'fuchsia'              => 'ff00ff',
  'gainsboro'            => 'dcdcdc',
  'ghostwhite'           => 'f8f8ff',
  'gold'                 => 'ffd700',
  'goldenrod'            => 'daa520',
  'gray'                 => '808080',
  'green'                => '008000',
  'greenyellow'          => 'adff2f',
  'honeydew'             => 'f0fff0',
  'hotpink'              => 'ff69b4',
  'indianred'            => 'cd5c5c',
  'indigo'               => '4b0082',
  'ivory'                => 'fffff0',
  'khaki'                => 'f0e68c',
  'lavender'             => 'e6e6fa',
  'lavenderblush'        => 'fff0f5',
  'lawngreen'            => '7cfc00',
  'lemonchiffon'         => 'fffacd',
  'lightblue'            => 'add8e6',
  'lightcoral'           => 'f08080',
  'lightcyan'            => 'e0ffff',
  'lightgoldenrodyellow' => 'fafad2',
  'lightgreen'           => '90ee90',
  'lightgray'            => 'd3d3d3',
  'lightgrey'            => 'd3d3d3',
  'lightpink'            => 'ffb6c1',
  'lightsalmon'          => 'ffa07a',
  'lightseagreen'        => '20b2aa',
  'lightskyblue'         => '87cefa',
  'lightslategray'       => '778899',
  'lightslategrey'       => '778899',
  'lightsteelblue'       => 'b0c4de',
  'lightyellow'          => 'ffffe0',
  'lime'                 => '00ff00',
  'limegreen'            => '32cd32',
  'linen'                => 'faf0e6',
  'magenta'              => 'ff00ff',
  'maroon'               => '800000',
  'mediumaquamarine'     => '66cdaa',
  'mediumblue'           => '0000cd',
  'mediumorchid'         => 'ba55d3',
  'mediumpurple'         => '9370db',
  'mediumseagreen'       => '3cb371',
  'mediumslateblue'      => '7b68ee',
  'mediumspringgreen'    => '00fa9a',
  'mediumturquoise'      => '48d1cc',
  'mediumvioletred'      => 'c71585',
  'midnightblue'         => '191970',
  'mintcream'            => 'f5fffa',
  'mistyrose'            => 'ffe4e1',
  'moccasin'             => 'ffe4b5',
  'navajowhite'          => 'ffdead',
  'navy'                 => '000080',
  'oldlace'              => 'fdf5e6',
  'olive'                => '808000',
  'olivedrab'            => '6b8e23',
  'orange'               => 'ffa500',
  'orangered'            => 'ff4500',
  'orchid'               => 'da70d6',
  'palegoldenrod'        => 'eee8aa',
  'palegreen'            => '98fb98',
  'paleturquoise'        => 'afeeee',
  'palevioletred'        => 'db7093',
  'papayawhip'           => 'ffefd5',
  'peachpuff'            => 'ffdab9',
  'peru'                 => 'cd853f',
  'pink'                 => 'ffc0cb',
  'plum'                 => 'dda0dd',
  'powderblue'           => 'b0e0e6',
  'purple'               => '800080',
  'red'                  => 'ff0000',
  'rosybrown'            => 'bc8f8f',
  'royalblue'            => '4169e1',
  'saddlebrown'          => '8b4513',
  'salmon'               => 'fa8072',
  'sandybrown'           => 'f4a460',
  'seagreen'             => '2e8b57',
  'seashell'             => 'fff5ee',
  'sienna'               => 'a0522d',
  'silver'               => 'c0c0c0',
  'skyblue'              => '87ceeb',
  'slateblue'            => '6a5acd',
  'slategray'            => '708090',
  'slategrey'            => '708090',
  'snow'                 => 'fffafa',
  'springgreen'          => '00ff7f',
  'steelblue'            => '4682b4',
  'tan'                  => 'd2b48c',
  'teal'                 => '008080',
  'thistle'              => 'd8bfd8',
  'tomato'               => 'ff6347',
  'turquoise'            => '40e0d0',
  'violet'               => 'ee82ee',
  'wheat'                => 'f5deb3',
  'white'                => 'ffffff',
  'whitesmoke'           => 'f5f5f5',
  'yellow'               => 'ffff00',
  'yellowgreen'          => '9acd32'
}

Class Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Class Attribute Details

.colorizeObject

Returns the value of attribute colorize.



5
6
7
# File 'lib/ghi/formatting/colors.rb', line 5

def colorize
  @colorize
end

Class Method Details

.colorize?Boolean

Returns:

  • (Boolean)


6
7
8
9
# File 'lib/ghi/formatting/colors.rb', line 6

def colorize?
  return @colorize if defined? @colorize
  @colorize = STDOUT.tty?
end

Instance Method Details

#bg(color, &block) ⇒ Object



20
21
22
# File 'lib/ghi/formatting/colors.rb', line 20

def bg color, &block
  fg(offset(color)) { escape color, 4, &block }
end


32
33
34
# File 'lib/ghi/formatting/colors.rb', line 32

def blink &block
  escape :blink, &block
end

#bright(&block) ⇒ Object



24
25
26
# File 'lib/ghi/formatting/colors.rb', line 24

def bright &block
  escape :bright, &block
end

#colorize?Boolean

Returns:

  • (Boolean)


12
13
14
# File 'lib/ghi/formatting/colors.rb', line 12

def colorize?
  Colors.colorize?
end

#fg(color, &block) ⇒ Object



16
17
18
# File 'lib/ghi/formatting/colors.rb', line 16

def fg color, &block
  escape color, 3, &block
end

#highlight(code_block) ⇒ Object



40
41
42
43
# File 'lib/ghi/formatting/colors.rb', line 40

def highlight(code_block)
  return code_block unless colorize?
  highlighter.highlight(code_block)
end

#inverse(&block) ⇒ Object



36
37
38
# File 'lib/ghi/formatting/colors.rb', line 36

def inverse &block
  escape :inverse, &block
end

#no_colorObject



45
46
47
48
49
50
# File 'lib/ghi/formatting/colors.rb', line 45

def no_color
  old_colorize, Colors.colorize = colorize?, false
  yield
ensure
  Colors.colorize = old_colorize
end

#to_hex(string) ⇒ Object



52
53
54
55
# File 'lib/ghi/formatting/colors.rb', line 52

def to_hex string
  WEB[string] || string.downcase.sub(/^(#|0x)/, '').
    sub(/^([0-f])([0-f])([0-f])$/, '\1\1\2\2\3\3')
end

#underline(&block) ⇒ Object



28
29
30
# File 'lib/ghi/formatting/colors.rb', line 28

def underline &block
  escape :underline, &block
end