rainbow 2.1.0 → 3.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/lib/rainbow/color.rb DELETED
@@ -1,135 +0,0 @@
1
- module Rainbow
2
- class Color
3
-
4
- attr_reader :ground
5
-
6
- def self.build(ground, values)
7
- unless [1, 3].include?(values.size)
8
- fail ArgumentError,
9
- "Wrong number of arguments for color definition, should be 1 or 3"
10
- end
11
-
12
- color = values.size == 1 ? values.first : values
13
-
14
- case color
15
- when Fixnum
16
- Indexed.new(ground, color)
17
- when Symbol
18
- if Named.color_names.include?(color)
19
- Named.new(ground, color)
20
- else X11Named.color_names.include?(color)
21
- X11Named.new(ground, color)
22
- end
23
- when Array
24
- RGB.new(ground, *color)
25
- when String
26
- RGB.new(ground, *parse_hex_color(color))
27
- end
28
- end
29
-
30
- def self.parse_hex_color(hex)
31
- hex = hex.sub(/^#/, '')
32
- r = hex[0..1].to_i(16)
33
- g = hex[2..3].to_i(16)
34
- b = hex[4..5].to_i(16)
35
-
36
- [r, g, b]
37
- end
38
-
39
- class Indexed < Color
40
-
41
- attr_reader :num
42
-
43
- def initialize(ground, num)
44
- @ground = ground
45
- @num = num
46
- end
47
-
48
- def codes
49
- code = num + (ground == :foreground ? 30 : 40)
50
-
51
- [code]
52
- end
53
-
54
- end
55
-
56
- class Named < Indexed
57
-
58
- NAMES = {
59
- black: 0,
60
- red: 1,
61
- green: 2,
62
- yellow: 3,
63
- blue: 4,
64
- magenta: 5,
65
- cyan: 6,
66
- white: 7,
67
- default: 9,
68
- }
69
-
70
- def self.color_names
71
- NAMES.keys
72
- end
73
-
74
- def initialize(ground, name)
75
- unless Named.color_names.include?(name)
76
- fail ArgumentError,
77
- "Unknown color name, valid names: #{Named.color_names.join(', ')}"
78
- end
79
-
80
- super(ground, NAMES[name])
81
- end
82
-
83
- end
84
-
85
- class RGB < Indexed
86
-
87
- attr_reader :r, :g, :b
88
-
89
- def self.to_ansi_domain(value)
90
- (6 * (value / 256.0)).to_i
91
- end
92
-
93
- def initialize(ground, *values)
94
- if values.min < 0 || values.max > 255
95
- fail ArgumentError, "RGB value outside 0-255 range"
96
- end
97
-
98
- super(ground, 8)
99
- @r, @g, @b = values
100
- end
101
-
102
- def codes
103
- super + [5, code_from_rgb]
104
- end
105
-
106
- private
107
-
108
- def code_from_rgb
109
- 16 + self.class.to_ansi_domain(r) * 36 +
110
- self.class.to_ansi_domain(g) * 6 +
111
- self.class.to_ansi_domain(b)
112
- end
113
-
114
- end
115
-
116
- class X11Named < RGB
117
- include X11ColorNames
118
-
119
- def self.color_names
120
- NAMES.keys
121
- end
122
-
123
- def initialize(ground, name)
124
- unless X11Named.color_names.include?(name)
125
- fail ArgumentError,
126
- "Unknown color name, valid names: #{X11Named.color_names.join(', ')}"
127
- end
128
-
129
- super(ground, *NAMES[name])
130
- end
131
-
132
- end
133
-
134
- end
135
- end
@@ -1,52 +0,0 @@
1
- require 'rainbow'
2
-
3
- module Rainbow
4
- module Ext
5
- module String
6
- module InstanceMethods
7
-
8
- def foreground(*color)
9
- Rainbow(self).foreground(*color)
10
- end
11
-
12
- alias_method :color, :foreground
13
- alias_method :colour, :foreground
14
-
15
- def background(*color)
16
- Rainbow(self).background(*color)
17
- end
18
-
19
- def reset
20
- Rainbow(self).reset
21
- end
22
-
23
- def bright
24
- Rainbow(self).bright
25
- end
26
-
27
- def italic
28
- Rainbow(self).italic
29
- end
30
-
31
- def underline
32
- Rainbow(self).underline
33
- end
34
-
35
- def blink
36
- Rainbow(self).blink
37
- end
38
-
39
- def inverse
40
- Rainbow(self).inverse
41
- end
42
-
43
- def hide
44
- Rainbow(self).hide
45
- end
46
-
47
- end
48
- end
49
- end
50
- end
51
-
52
- ::String.send(:include, Rainbow::Ext::String::InstanceMethods)
@@ -1,21 +0,0 @@
1
- require_relative 'wrapper'
2
-
3
- module Rainbow
4
-
5
- def self.global
6
- @global ||= Wrapper.new
7
- end
8
-
9
- def self.enabled
10
- global.enabled
11
- end
12
-
13
- def self.enabled=(value)
14
- global.enabled = value
15
- end
16
-
17
- end
18
-
19
- def Rainbow(string)
20
- Rainbow.global.wrap(string.to_s)
21
- end
@@ -1,15 +0,0 @@
1
- module Sickill
2
- module Rainbow
3
-
4
- def self.enabled=(value)
5
- STDERR.puts("Rainbow gem notice: Sickill::Rainbow.enabled= is " \
6
- "deprecated, use Rainbow.enabled= instead.")
7
- ::Rainbow.enabled = value
8
- end
9
-
10
- def self.enabled
11
- ::Rainbow.enabled
12
- end
13
-
14
- end
15
- end
@@ -1,30 +0,0 @@
1
- module Rainbow
2
-
3
- class NullPresenter < ::String
4
-
5
- def color(*values); self; end
6
- def background(*values); self; end
7
- def reset; self; end
8
- def bright; self; end
9
- def italic; self; end
10
- def underline; self; end
11
- def blink; self; end
12
- def inverse; self; end
13
- def hide; self; end
14
-
15
- def black; self; end
16
- def red; self; end
17
- def green; self; end
18
- def yellow; self; end
19
- def blue; self; end
20
- def magenta; self; end
21
- def cyan; self; end
22
- def white; self; end
23
-
24
- alias_method :foreground, :color
25
- alias_method :fg, :color
26
- alias_method :bg, :background
27
-
28
- end
29
-
30
- end
@@ -1,124 +0,0 @@
1
- require_relative 'string_utils'
2
- require_relative 'x11_color_names'
3
- require_relative 'color'
4
-
5
- module Rainbow
6
-
7
- class Presenter < ::String
8
-
9
- TERM_EFFECTS = {
10
- reset: 0,
11
- bright: 1,
12
- italic: 3,
13
- underline: 4,
14
- blink: 5,
15
- inverse: 7,
16
- hide: 8,
17
- }
18
-
19
- # Sets color of this text.
20
- def color(*values)
21
- wrap_with_sgr(Color.build(:foreground, values).codes)
22
- end
23
-
24
- alias_method :foreground, :color
25
- alias_method :fg, :color
26
-
27
- # Sets background color of this text.
28
- def background(*values)
29
- wrap_with_sgr(Color.build(:background, values).codes)
30
- end
31
-
32
- alias_method :bg, :background
33
-
34
- # Resets terminal to default colors/backgrounds.
35
- #
36
- # It shouldn't be needed to use this method because all methods
37
- # append terminal reset code to end of string.
38
- def reset
39
- wrap_with_sgr(TERM_EFFECTS[:reset])
40
- end
41
-
42
- # Turns on bright/bold for this text.
43
- def bright
44
- wrap_with_sgr(TERM_EFFECTS[:bright])
45
- end
46
-
47
- # Turns on italic style for this text (not well supported by terminal
48
- # emulators).
49
- def italic
50
- wrap_with_sgr(TERM_EFFECTS[:italic])
51
- end
52
-
53
- # Turns on underline decoration for this text.
54
- def underline
55
- wrap_with_sgr(TERM_EFFECTS[:underline])
56
- end
57
-
58
- # Turns on blinking attribute for this text (not well supported by terminal
59
- # emulators).
60
- def blink
61
- wrap_with_sgr(TERM_EFFECTS[:blink])
62
- end
63
-
64
- # Inverses current foreground/background colors.
65
- def inverse
66
- wrap_with_sgr(TERM_EFFECTS[:inverse])
67
- end
68
-
69
- # Hides this text (set its color to the same as background).
70
- def hide
71
- wrap_with_sgr(TERM_EFFECTS[:hide])
72
- end
73
-
74
- def black
75
- color(:black)
76
- end
77
-
78
- def red
79
- color(:red)
80
- end
81
-
82
- def green
83
- color(:green)
84
- end
85
-
86
- def yellow
87
- color(:yellow)
88
- end
89
-
90
- def blue
91
- color(:blue)
92
- end
93
-
94
- def magenta
95
- color(:magenta)
96
- end
97
-
98
- def cyan
99
- color(:cyan)
100
- end
101
-
102
- def white
103
- color(:white)
104
- end
105
-
106
- # We take care of X11 color method call here.
107
- # Such as #aqua, #ghostwhite.
108
- def method_missing(method_name,*args)
109
- if Color::X11Named.color_names.include? method_name and args.empty? then
110
- color(method_name)
111
- else
112
- super
113
- end
114
- end
115
-
116
- private
117
-
118
- def wrap_with_sgr(codes) #:nodoc:
119
- self.class.new(StringUtils.wrap_with_sgr(self, [*codes]))
120
- end
121
-
122
- end
123
-
124
- end
@@ -1,20 +0,0 @@
1
- module Rainbow
2
- class StringUtils
3
-
4
- def self.wrap_with_sgr(string, codes)
5
- return string if codes.empty?
6
-
7
- seq = "\e[" + codes.join(";") + "m"
8
- match = string.match(/^(\e\[([\d;]+)m)*/)
9
- seq_pos = match.end(0)
10
- string = string[0...seq_pos] + seq + string[seq_pos..-1]
11
-
12
- unless string =~ /\e\[0m$/
13
- string = string + "\e[0m"
14
- end
15
-
16
- string
17
- end
18
-
19
- end
20
- end
@@ -1,3 +0,0 @@
1
- module Rainbow
2
- VERSION = "2.1.0".freeze
3
- end
@@ -1,22 +0,0 @@
1
- require_relative 'presenter'
2
- require_relative 'null_presenter'
3
-
4
- module Rainbow
5
-
6
- class Wrapper
7
- attr_accessor :enabled
8
-
9
- def initialize(enabled = true)
10
- @enabled = enabled
11
- end
12
-
13
- def wrap(string)
14
- if enabled
15
- Presenter.new(string.to_s)
16
- else
17
- NullPresenter.new(string.to_s)
18
- end
19
- end
20
- end
21
-
22
- end
@@ -1,152 +0,0 @@
1
- module Rainbow
2
-
3
- module X11ColorNames
4
- NAMES= {
5
- aqua: [0, 255, 255],
6
- aquamarine: [127, 255, 212],
7
- mediumaquamarine: [102, 205, 170],
8
- azure: [240, 255, 255],
9
- beige: [245, 245, 220],
10
- bisque: [255, 228, 196],
11
- black: [0, 0, 0],
12
- blanchedalmond: [255, 235, 205],
13
- blue: [0, 0, 255],
14
- darkblue: [0, 0, 139],
15
- lightblue: [173, 216, 230],
16
- mediumblue: [0, 0, 205],
17
- aliceblue: [240, 248, 255],
18
- cadetblue: [95, 158, 160],
19
- dodgerblue: [30, 144, 255],
20
- midnightblue: [25, 25, 112],
21
- navyblue: [0, 0, 128],
22
- powderblue: [176, 224, 230],
23
- royalblue: [65, 105, 225],
24
- skyblue: [135, 206, 235],
25
- deepskyblue: [0, 191, 255],
26
- lightskyblue: [135, 206, 250],
27
- slateblue: [106, 90, 205],
28
- darkslateblue: [72, 61, 139],
29
- mediumslateblue: [123, 104, 238],
30
- steelblue: [70, 130, 180],
31
- lightsteelblue: [176, 196, 222],
32
- brown: [165, 42, 42],
33
- rosybrown: [188, 143, 143],
34
- saddlebrown: [139, 69, 19],
35
- sandybrown: [244, 164, 96],
36
- burlywood: [222, 184, 135],
37
- chartreuse: [127, 255, 0],
38
- chocolate: [210, 105, 30],
39
- coral: [255, 127, 80],
40
- lightcoral: [240, 128, 128],
41
- cornflower: [100, 149, 237],
42
- cornsilk: [255, 248, 220],
43
- crimson: [220, 20, 60],
44
- cyan: [0, 255, 255],
45
- darkcyan: [0, 139, 139],
46
- lightcyan: [224, 255, 255],
47
- firebrick: [178, 34, 34],
48
- fuchsia: [255, 0, 255],
49
- gainsboro: [220, 220, 220],
50
- gold: [255, 215, 0],
51
- goldenrod: [218, 165, 32],
52
- darkgoldenrod: [184, 134, 11],
53
- lightgoldenrod: [250, 250, 210],
54
- palegoldenrod: [238, 232, 170],
55
- gray: [190, 190, 190],
56
- darkgray: [169, 169, 169],
57
- dimgray: [105, 105, 105],
58
- lightgray: [211, 211, 211],
59
- slategray: [112, 128, 144],
60
- lightslategray: [119, 136, 153],
61
- webgray: [128, 128, 128],
62
- green: [0, 255, 0],
63
- darkgreen: [0, 100, 0],
64
- lightgreen: [144, 238, 144],
65
- palegreen: [152, 251, 152],
66
- darkolivegreen: [85, 107, 47],
67
- yellowgreen: [154, 205, 50],
68
- forestgreen: [34, 139, 34],
69
- lawngreen: [124, 252, 0],
70
- limegreen: [50, 205, 50],
71
- seagreen: [46, 139, 87],
72
- darkseagreen: [143, 188, 143],
73
- lightseagreen: [32, 178, 170],
74
- mediumseagreen: [60, 179, 113],
75
- springgreen: [0, 255, 127],
76
- mediumspringgreen: [0, 250, 154],
77
- webgreen: [0, 128, 0],
78
- honeydew: [240, 255, 240],
79
- indianred: [205, 92, 92],
80
- indigo: [75, 0, 130],
81
- ivory: [255, 255, 240],
82
- khaki: [240, 230, 140],
83
- darkkhaki: [189, 183, 107],
84
- lavender: [230, 230, 250],
85
- lavenderblush: [255, 240, 245],
86
- lemonchiffon: [255, 250, 205],
87
- lime: [0, 255, 0],
88
- linen: [250, 240, 230],
89
- magenta: [255, 0, 255],
90
- darkmagenta: [139, 0, 139],
91
- maroon: [176, 48, 96],
92
- webmaroon: [127, 0, 0],
93
- mintcream: [245, 255, 250],
94
- mistyrose: [255, 228, 225],
95
- moccasin: [255, 228, 181],
96
- oldlace: [253, 245, 230],
97
- olive: [128, 128, 0],
98
- olivedrab: [107, 142, 35],
99
- orange: [255, 165, 0],
100
- darkorange: [255, 140, 0],
101
- orchid: [218, 112, 214],
102
- darkorchid: [153, 50, 204],
103
- mediumorchid: [186, 85, 211],
104
- papayawhip: [255, 239, 213],
105
- peachpuff: [255, 218, 185],
106
- peru: [205, 133, 63],
107
- pink: [255, 192, 203],
108
- deeppink: [255, 20, 147],
109
- lightpink: [255, 182, 193],
110
- hotpink: [255, 105, 180],
111
- plum: [221, 160, 221],
112
- purple: [160, 32, 240],
113
- mediumpurple: [147, 112, 219],
114
- rebeccapurple: [102, 51, 153],
115
- webpurple: [127, 0, 127],
116
- red: [255, 0, 0],
117
- darkred: [139, 0, 0],
118
- orangered: [255, 69, 0],
119
- mediumvioletred: [199, 21, 133],
120
- palevioletred: [219, 112, 147],
121
- salmon: [250, 128, 114],
122
- darksalmon: [233, 150, 122],
123
- lightsalmon: [255, 160, 122],
124
- seashell: [255, 245, 238],
125
- sienna: [160, 82, 45],
126
- silver: [192, 192, 192],
127
- darkslategray: [47, 79, 79],
128
- snow: [255, 250, 250],
129
- tan: [210, 180, 140],
130
- teal: [0, 128, 128],
131
- thistle: [216, 191, 216],
132
- tomato: [255, 99, 71],
133
- turquoise: [64, 224, 208],
134
- darkturquoise: [0, 206, 209],
135
- mediumturquoise: [72, 209, 204],
136
- paleturquoise: [175, 238, 238],
137
- violet: [238, 130, 238],
138
- darkviolet: [148, 0, 211],
139
- blueviolet: [138, 43, 226],
140
- wheat: [245, 222, 179],
141
- white: [255, 255, 255],
142
- antiquewhite: [250, 235, 215],
143
- floralwhite: [255, 250, 240],
144
- ghostwhite: [248, 248, 255],
145
- navajowhite: [255, 222, 173],
146
- whitesmoke: [245, 245, 245],
147
- yellow: [255, 255, 0],
148
- lightyellow: [255, 255, 224],
149
- greenyellow: [173, 255, 47]
150
- }
151
- end
152
- end
data/lib/rainbow.rb DELETED
@@ -1,25 +0,0 @@
1
- require_relative 'rainbow/global'
2
- require_relative 'rainbow/legacy'
3
-
4
- module Rainbow
5
-
6
- def self.new
7
- Wrapper.new(global.enabled)
8
- end
9
-
10
- self.enabled = false unless STDOUT.tty? && STDERR.tty?
11
- self.enabled = false if ENV['TERM'] == 'dumb'
12
- self.enabled = true if ENV['CLICOLOR_FORCE'] == '1'
13
-
14
- # On Windows systems, try to load the local ANSI support library if Ruby version < 2
15
- # Ruby 2.x on Windows includes ANSI support.
16
- require 'rbconfig'
17
- if RbConfig::CONFIG['host_os'] =~ /mswin|mingw/ && RUBY_VERSION.to_i < 2
18
- begin
19
- require 'Win32/Console/ANSI'
20
- rescue LoadError
21
- self.enabled = false
22
- end
23
- end
24
-
25
- end
data/rainbow.gemspec DELETED
@@ -1,23 +0,0 @@
1
- # coding: utf-8
2
- lib = File.expand_path('../lib', __FILE__)
3
- $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
- require 'rainbow/version'
5
-
6
- Gem::Specification.new do |spec|
7
- spec.name = "rainbow"
8
- spec.version = Rainbow::VERSION
9
- spec.authors = ["Marcin Kulik"]
10
- spec.email = ["m@ku1ik.com"]
11
- spec.description = %q(Colorize printed text on ANSI terminals)
12
- spec.summary = %q(Colorize printed text on ANSI terminals)
13
- spec.homepage = "https://github.com/sickill/rainbow"
14
- spec.license = "MIT"
15
- spec.required_ruby_version = '>= 1.9.2'
16
-
17
- spec.files = `git ls-files`.split($INPUT_RECORD_SEPARATOR)
18
- spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
19
- spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
20
- spec.require_paths = ["lib"]
21
-
22
- spec.add_development_dependency "bundler", "~> 1.3"
23
- end
@@ -1,35 +0,0 @@
1
- require 'spec_helper'
2
- require 'rainbow'
3
-
4
- describe 'Custom Rainbow instance' do
5
-
6
- it 'inherits enabled state from the global instance' do
7
- Rainbow.enabled = :yep
8
- expect(Rainbow.new.enabled).to eq(:yep)
9
- end
10
-
11
- it 'tracks its own state separately from the global instance' do
12
- Rainbow.enabled = :yep
13
- rainbow = Rainbow.new
14
- expect(Rainbow.new.enabled).to eq(:yep)
15
-
16
- rainbow.enabled = :nope
17
- expect(Rainbow.enabled).to eq(:yep)
18
- expect(rainbow.enabled).to eq(:nope)
19
- end
20
-
21
- it 'wraps string with escape codes when enabled' do
22
- rainbow = Rainbow.new
23
- rainbow.enabled = true
24
-
25
- expect(rainbow.wrap('hello').green).to eq("\e[32mhello\e[0m")
26
- end
27
-
28
- it "doesn't wrap string with any escape code when disabled" do
29
- rainbow = Rainbow.new
30
- rainbow.enabled = false
31
-
32
- expect(rainbow.wrap('hello').green).to eq('hello')
33
- end
34
-
35
- end