rainbow 2.2.2 → 3.0.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.
- checksums.yaml +4 -4
- data/.rubocop.yml +9 -3
- data/.rubocop_todo.yml +29 -0
- data/.travis.yml +13 -11
- data/Changelog.md +52 -46
- data/Gemfile +9 -4
- data/Guardfile +0 -1
- data/README.markdown +33 -26
- data/Rakefile +5 -2
- data/appveyor.yml +40 -0
- data/lib/rainbow.rb +0 -13
- data/lib/rainbow/color.rb +22 -23
- data/lib/rainbow/ext/string.rb +2 -4
- data/lib/rainbow/global.rb +3 -1
- data/lib/rainbow/null_presenter.rb +81 -29
- data/lib/rainbow/presenter.rb +13 -13
- data/lib/rainbow/refinement.rb +12 -0
- data/lib/rainbow/string_utils.rb +5 -4
- data/lib/rainbow/version.rb +1 -1
- data/lib/rainbow/wrapper.rb +0 -2
- data/lib/rainbow/x11_color_names.rb +3 -4
- data/rainbow.gemspec +4 -8
- data/spec/integration/instance_spec.rb +1 -3
- data/spec/integration/rainbow_spec.rb +27 -30
- data/spec/integration/refinement_spec.rb +36 -0
- data/spec/integration/string_spec.rb +11 -14
- data/spec/integration/uncolor_spec.rb +14 -0
- data/spec/spec_helper.rb +4 -0
- data/spec/support/presenter_shared_examples.rb +2 -2
- data/spec/unit/color_spec.rb +5 -10
- data/spec/unit/null_presenter_spec.rb +1 -2
- data/spec/unit/presenter_spec.rb +11 -13
- data/spec/unit/string_utils_spec.rb +34 -2
- data/spec/unit/wrapper_spec.rb +1 -3
- metadata +20 -31
- data/ext/mkrf_conf.rb +0 -22
- data/lib/rainbow/legacy.rb +0 -15
- data/spec/unit/namespace_spec.rb +0 -31
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 831ab2db7f80a9a72f2993f1e7b4f3ffa08a4495
|
4
|
+
data.tar.gz: 0f842d288049511c94a95ce9b8a9210cf5e2344b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ecde479bb8ea6f267200efaf03be79e7141bf6fccd7a7191960b2f9f52d809120a943a341f467f0a01c982ff11bf8bd23e66c8732d3af0b22643be5da13b55ec
|
7
|
+
data.tar.gz: b11241f918993558e8a4d248d9eb4b458793e926e10e7e387d5dabaf9e15a988adeda1441c93b3be9d051c939fbf566b2493ba9f8df8eff0bbf629bf36798cac
|
data/.rubocop.yml
CHANGED
@@ -1,7 +1,13 @@
|
|
1
|
-
|
2
|
-
Enabled: false
|
1
|
+
inherit_from: .rubocop_todo.yml
|
3
2
|
|
4
|
-
|
3
|
+
AllCops:
|
4
|
+
DisplayCopNames: true
|
5
|
+
DisplayStyleGuide: true
|
6
|
+
TargetRubyVersion: "2.1"
|
7
|
+
Exclude:
|
8
|
+
- "spec/**/*"
|
9
|
+
- "vendor/**/*"
|
10
|
+
Documentation:
|
5
11
|
Enabled: false
|
6
12
|
|
7
13
|
HashSyntax:
|
data/.rubocop_todo.yml
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
# This configuration was generated by
|
2
|
+
# `rubocop --auto-gen-config`
|
3
|
+
# on 2017-06-30 12:37:52 +0200 using RuboCop version 0.49.1.
|
4
|
+
# The point is for the user to remove these configuration records
|
5
|
+
# one by one as the offenses are removed from the code base.
|
6
|
+
# Note that changes in the inspected code, or installation of new
|
7
|
+
# versions of RuboCop, may require this file to be generated again.
|
8
|
+
|
9
|
+
# Offense count: 1
|
10
|
+
Metrics/AbcSize:
|
11
|
+
Max: 25
|
12
|
+
|
13
|
+
# Offense count: 1
|
14
|
+
Metrics/CyclomaticComplexity:
|
15
|
+
Max: 9
|
16
|
+
|
17
|
+
# Offense count: 1
|
18
|
+
# Configuration parameters: CountComments.
|
19
|
+
Metrics/MethodLength:
|
20
|
+
Max: 23
|
21
|
+
|
22
|
+
# Offense count: 1
|
23
|
+
# Configuration parameters: CountComments.
|
24
|
+
Metrics/ModuleLength:
|
25
|
+
Max: 147
|
26
|
+
|
27
|
+
# Offense count: 1
|
28
|
+
Metrics/PerceivedComplexity:
|
29
|
+
Max: 8
|
data/.travis.yml
CHANGED
@@ -1,22 +1,24 @@
|
|
1
1
|
language: ruby
|
2
2
|
cache:
|
3
|
-
|
3
|
+
bundler: true
|
4
|
+
|
4
5
|
before_install:
|
5
|
-
- gem update --system
|
6
6
|
- gem install bundler
|
7
|
+
|
7
8
|
bundler_args: --without guard development
|
8
9
|
|
9
10
|
matrix:
|
10
11
|
include:
|
11
|
-
- rvm: 2.
|
12
|
-
- rvm: 2.
|
13
|
-
- rvm: 2.
|
14
|
-
- rvm: 2.
|
15
|
-
- rvm:
|
16
|
-
- rvm: jruby-9.1.6.0
|
12
|
+
- rvm: 2.1.10
|
13
|
+
- rvm: 2.2.7
|
14
|
+
- rvm: 2.3.4
|
15
|
+
- rvm: 2.4.1
|
16
|
+
- rvm: jruby-9.1.14.0
|
17
17
|
jdk: oraclejdk8
|
18
|
-
|
19
|
-
- JRUBY_OPTS=--debug
|
20
|
-
- rvm: 2.2.6
|
18
|
+
- rvm: 2.2.7
|
21
19
|
install: true # This skips 'bundle install'
|
22
20
|
script: gem build rainbow && gem install *.gem
|
21
|
+
|
22
|
+
env:
|
23
|
+
global:
|
24
|
+
- JRUBY_OPTS=--debug
|
data/Changelog.md
CHANGED
@@ -1,47 +1,45 @@
|
|
1
1
|
# Rainbow changelog
|
2
2
|
|
3
|
-
##
|
4
|
-
|
5
|
-
* initial version
|
3
|
+
## 3.0.0 (2017-10-24)
|
6
4
|
|
7
|
-
|
8
|
-
|
9
|
-
*
|
5
|
+
* dropped MRI 1.9.3 compatibility
|
6
|
+
* dropped MRI 2.0 compatibility
|
7
|
+
* removed rake dependency
|
10
8
|
|
11
|
-
##
|
12
|
-
|
13
|
-
* improved support for ruby 1.8.6 and 1.9.1
|
14
|
-
|
15
|
-
## 1.0.3 (2009-7-26)
|
9
|
+
## 2.2.2 (2017-04-21)
|
16
10
|
|
17
|
-
*
|
11
|
+
* added explicit rake dependency to fix installation issue
|
18
12
|
|
19
|
-
##
|
13
|
+
## 2.2.1 (2016-12-28)
|
20
14
|
|
21
|
-
*
|
15
|
+
* fixed gem installation (2.2.0 was a broken release)
|
22
16
|
|
23
|
-
##
|
17
|
+
## 2.2.0 (2016-12-27)
|
24
18
|
|
25
|
-
*
|
26
|
-
*
|
19
|
+
* improved Windows support
|
20
|
+
* added Ruby 2.4 support
|
21
|
+
* added `bold` alias method for `bright`
|
27
22
|
|
28
|
-
##
|
23
|
+
## 2.1.0 (2016-01-24)
|
29
24
|
|
25
|
+
* added X11 color support
|
26
|
+
* fixed `require` issue when rainbow is used as a dependency in another gem
|
30
27
|
* improved Windows support
|
31
28
|
|
32
|
-
##
|
29
|
+
## 2.0.0 (2014-01-24)
|
33
30
|
|
34
|
-
*
|
31
|
+
* disable string mixin by default
|
35
32
|
|
36
|
-
## 1.
|
33
|
+
## 1.99.2 (2014-01-24)
|
37
34
|
|
38
|
-
*
|
39
|
-
* fix for regression with regards to original string mutation
|
35
|
+
* bring back ruby 1.8 support
|
40
36
|
|
41
|
-
## 1.1
|
37
|
+
## 1.99.1 (2013-12-28)
|
42
38
|
|
43
|
-
*
|
44
|
-
*
|
39
|
+
* drop support for ruby 1.8
|
40
|
+
* `require "rainbow/string"` -> `require "rainbow/ext/string"`
|
41
|
+
* custom rainbow wrapper instances (with separate enabled/disabled state)
|
42
|
+
* shortcut methods for changing text color (`Rainbow("foo").red`)
|
45
43
|
|
46
44
|
## 1.99.0 (2013-12-26)
|
47
45
|
|
@@ -51,37 +49,45 @@
|
|
51
49
|
* support for MRI 1.8.7, 1.9.2, 1.9.3, 2.0 and 2.1, JRuby and Rubinius
|
52
50
|
* deprecation of Sickill::Rainbow namespace (use Rainbow.enabled = true instead)
|
53
51
|
|
54
|
-
## 1.
|
52
|
+
## 1.1.4 (2012-4-28)
|
55
53
|
|
56
|
-
*
|
57
|
-
*
|
58
|
-
* custom rainbow wrapper instances (with separate enabled/disabled state)
|
59
|
-
* shortcut methods for changing text color (`Rainbow("foo").red`)
|
54
|
+
* option for forcing coloring even when STDOUT is not a TTY (CLICOLOR_FORCE env var)
|
55
|
+
* fix for frozen strings
|
60
56
|
|
61
|
-
## 1.
|
57
|
+
## 1.1.3 (2011-12-6)
|
62
58
|
|
63
|
-
*
|
59
|
+
* improved compatibility with MRI 1.8.7
|
60
|
+
* fix for regression with regards to original string mutation
|
64
61
|
|
65
|
-
##
|
62
|
+
## 1.1.2 (2011-11-13)
|
66
63
|
|
67
|
-
*
|
64
|
+
* improved compatibility with MRI 1.9.3
|
68
65
|
|
69
|
-
##
|
66
|
+
## 1.1.1 (2011-2-7)
|
70
67
|
|
71
|
-
* added X11 color support
|
72
|
-
* fixed `require` issue when rainbow is used as a dependency in another gem
|
73
68
|
* improved Windows support
|
74
69
|
|
75
|
-
|
70
|
+
## 1.1 (2010-6-7)
|
76
71
|
|
77
|
-
*
|
78
|
-
*
|
79
|
-
* added `bold` alias method for `bright`
|
72
|
+
* option for enabling/disabling of escape code wrapping
|
73
|
+
* auto-disabling when STDOUT is not a TTY
|
80
74
|
|
81
|
-
|
75
|
+
## 1.0.4 (2009-11-27)
|
82
76
|
|
83
|
-
*
|
77
|
+
* support for 256 colors
|
84
78
|
|
85
|
-
|
79
|
+
## 1.0.3 (2009-7-26)
|
86
80
|
|
87
|
-
*
|
81
|
+
* rainbow methods don't mutate the original string object anymore
|
82
|
+
|
83
|
+
## 1.0.2 (2009-5-15)
|
84
|
+
|
85
|
+
* improved support for ruby 1.8.6 and 1.9.1
|
86
|
+
|
87
|
+
## 1.0.1 (2009-3-19)
|
88
|
+
|
89
|
+
* Windows support
|
90
|
+
|
91
|
+
## 1.0.0 (2008-7-21)
|
92
|
+
|
93
|
+
* initial version
|
data/Gemfile
CHANGED
@@ -1,17 +1,22 @@
|
|
1
1
|
source 'https://rubygems.org'
|
2
2
|
|
3
|
-
# Specify your gem's dependencies in rainbow.gemspec
|
4
3
|
gemspec
|
5
4
|
|
6
5
|
gem 'rake'
|
7
|
-
|
8
|
-
|
9
|
-
gem '
|
6
|
+
|
7
|
+
group :test do
|
8
|
+
gem 'coveralls', require: false
|
9
|
+
gem 'rspec'
|
10
|
+
end
|
10
11
|
|
11
12
|
group :development do
|
12
13
|
gem 'mutant-rspec'
|
13
14
|
end
|
14
15
|
|
16
|
+
group :test, :development do
|
17
|
+
gem 'rubocop', '~> 0.51.0'
|
18
|
+
end
|
19
|
+
|
15
20
|
group :guard do
|
16
21
|
gem 'guard'
|
17
22
|
gem 'guard-rspec'
|
data/Guardfile
CHANGED
data/README.markdown
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
# Rainbow
|
2
2
|
|
3
|
+
[](https://rubygems.org/gems/rainbow)
|
3
4
|
[](https://travis-ci.org/sickill/rainbow)
|
5
|
+
[](https://ci.appveyor.com/project/sickill/rainbow)
|
4
6
|
[](https://codeclimate.com/github/sickill/rainbow)
|
5
7
|
[](https://coveralls.io/r/sickill/rainbow)
|
6
8
|
|
@@ -27,6 +29,8 @@ puts Rainbow("this is red").red + " and " + Rainbow("this on yellow bg").bg(:yel
|
|
27
29
|
# => "\e[31mthis is red\e[0m and \e[43mthis on yellow bg\e[0m and \e[4m\e[1meven bright underlined!\e[0m"
|
28
30
|
```
|
29
31
|
|
32
|
+
Or, [watch this video example](https://asciinema.org/a/J928KpHoUQ0sl54ulOSOLE71E?rows=20&speed=2.5)
|
33
|
+
|
30
34
|
### Rainbow presenter API
|
31
35
|
|
32
36
|
Rainbow presenter adds the following methods to presented string:
|
@@ -63,28 +67,27 @@ calls:
|
|
63
67
|
Rainbow("hola!").blue.bright.underline
|
64
68
|
```
|
65
69
|
|
66
|
-
###
|
70
|
+
### Refinement
|
67
71
|
|
68
|
-
If you
|
69
|
-
you can include all the rainbow presenter methods directly in a String class by
|
70
|
-
requiring `rainbow/ext/string`:
|
72
|
+
If you want to use the Refinements version, you can:
|
71
73
|
|
72
74
|
```ruby
|
73
|
-
require 'rainbow/
|
74
|
-
|
75
|
-
puts "
|
75
|
+
require 'rainbow/refinement'
|
76
|
+
using Rainbow
|
77
|
+
puts "Hi!".green
|
76
78
|
```
|
77
79
|
|
78
|
-
|
79
|
-
public interface with methods that are presentation specific.
|
80
|
-
|
81
|
-
NOTE: the mixin doesn't include shortcut methods for changing text color, you
|
82
|
-
should use "string".color(:blue) instead of "string".blue
|
80
|
+
Here's an IRB session example:
|
83
81
|
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
82
|
+
```
|
83
|
+
>> 'Hello, World!'.blue.bright.underline
|
84
|
+
NoMethodError: undefined method `blue' for "Hello, World!":String
|
85
|
+
(ripl):1:in `<main>'
|
86
|
+
>> using Rainbow
|
87
|
+
=> main
|
88
|
+
>> 'Hello, World!'.blue.bright.underline
|
89
|
+
=> "\e[34m\e[1m\e[4mHello, World!\e[0m"
|
90
|
+
```
|
88
91
|
|
89
92
|
### Color specification
|
90
93
|
|
@@ -112,6 +115,20 @@ When you specify a color with a RGB triplet rainbow finds the nearest match
|
|
112
115
|
from 256 colors palette. Note that it requires a 256-colors capable terminal to
|
113
116
|
display correctly.
|
114
117
|
|
118
|
+
#### Example: Choose a random color
|
119
|
+
|
120
|
+
You can pick a random color with Rainbow, it's a one-liner:
|
121
|
+
|
122
|
+
```ruby
|
123
|
+
colors = Range.new(0,7).to_a
|
124
|
+
"whoop dee doop".chars.map { |char| Rainbow(char).color(colors.sample) }.join
|
125
|
+
# => "\e[36mw\e[0m\e[37mh\e[0m\e[34mo\e[0m\e[34mo\e[0m\e[37mp\e[0m\e[34m \e[0m\e[36md\e[0m\e[33me\e[0m\e[34me\e[0m\e[37m \e[0m\e[32md\e[0m\e[35mo\e[0m\e[33mo\e[0m\e[36mp\e[0m"
|
126
|
+
|
127
|
+
colors = [:aliceblue, :antiquewhite, :aqua, :aquamarine, :azure, :beige, :bisque, :blanchedalmond, :blueviolet]
|
128
|
+
"whoop dee doop".chars.map { |char| Rainbow(char).color(colors.sample) }.join
|
129
|
+
# => "\e[38;5;135mw\e[0m\e[38;5;230mh\e[0m\e[38;5;231mo\e[0m\e[38;5;135mo\e[0m\e[38;5;231mp\e[0m\e[38;5;231m \e[0m\e[38;5;122md\e[0m\e[38;5;231me\e[0m\e[38;5;231me\e[0m\e[38;5;230m \e[0m\e[38;5;122md\e[0m\e[38;5;51mo\e[0m\e[38;5;51mo\e[0m\e[38;5;51mp\e[0m"
|
130
|
+
```
|
131
|
+
|
115
132
|
### Configuration
|
116
133
|
|
117
134
|
Rainbow can be enabled/disabled globally by setting:
|
@@ -154,16 +171,6 @@ colorize all the strings, even the ones that go through file writing
|
|
154
171
|
formatters. You can easily solve that by disabling coloring for the Rainbow
|
155
172
|
instances that are used by formatters with file output.
|
156
173
|
|
157
|
-
## Windows support
|
158
|
-
|
159
|
-
For Windows support on Ruby < 2.0, you should install the following gems:
|
160
|
-
|
161
|
-
```ruby
|
162
|
-
gem install windows-pr win32console
|
163
|
-
```
|
164
|
-
|
165
|
-
If the above gems aren't installed then all strings are returned unmodified.
|
166
|
-
|
167
174
|
## Installation
|
168
175
|
|
169
176
|
Add it to your Gemfile:
|
data/Rakefile
CHANGED
data/appveyor.yml
ADDED
@@ -0,0 +1,40 @@
|
|
1
|
+
---
|
2
|
+
|
3
|
+
version: "{build}"
|
4
|
+
|
5
|
+
install:
|
6
|
+
- set PATH=C:\Ruby%RUBY_VERSION%\bin;%PATH%
|
7
|
+
- bundle config --local path vendor/bundle
|
8
|
+
- bundle install --jobs 3 --retry 3 --without guard development
|
9
|
+
|
10
|
+
build: off
|
11
|
+
|
12
|
+
cache:
|
13
|
+
- vendor/bundle
|
14
|
+
|
15
|
+
init:
|
16
|
+
- git config --global core.autocrlf true
|
17
|
+
|
18
|
+
before_test:
|
19
|
+
- ruby -v
|
20
|
+
- gem -v
|
21
|
+
- bundle -v
|
22
|
+
|
23
|
+
test_script:
|
24
|
+
- bundle exec rake
|
25
|
+
|
26
|
+
environment:
|
27
|
+
matrix:
|
28
|
+
- RUBY_VERSION: 21
|
29
|
+
- RUBY_VERSION: 21-x64
|
30
|
+
- RUBY_VERSION: 22
|
31
|
+
- RUBY_VERSION: 22-x64
|
32
|
+
- RUBY_VERSION: 23
|
33
|
+
- RUBY_VERSION: 23-x64
|
34
|
+
|
35
|
+
matrix:
|
36
|
+
fast_finish: true
|
37
|
+
|
38
|
+
branches:
|
39
|
+
only:
|
40
|
+
- master
|
data/lib/rainbow.rb
CHANGED
@@ -1,8 +1,6 @@
|
|
1
1
|
require_relative 'rainbow/global'
|
2
|
-
require_relative 'rainbow/legacy'
|
3
2
|
|
4
3
|
module Rainbow
|
5
|
-
|
6
4
|
def self.new
|
7
5
|
Wrapper.new(global.enabled)
|
8
6
|
end
|
@@ -10,15 +8,4 @@ module Rainbow
|
|
10
8
|
self.enabled = false unless STDOUT.tty? && STDERR.tty?
|
11
9
|
self.enabled = false if ENV['TERM'] == 'dumb'
|
12
10
|
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
|
-
if RUBY_PLATFORM =~ /mswin|cygwin|mingw/ && RUBY_VERSION.to_i < 2
|
17
|
-
begin
|
18
|
-
require 'Win32/Console/ANSI'
|
19
|
-
rescue LoadError
|
20
|
-
self.enabled = false
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
11
|
end
|
data/lib/rainbow/color.rb
CHANGED
@@ -1,12 +1,11 @@
|
|
1
1
|
module Rainbow
|
2
2
|
class Color
|
3
|
-
|
4
3
|
attr_reader :ground
|
5
4
|
|
6
5
|
def self.build(ground, values)
|
7
6
|
unless [1, 3].include?(values.size)
|
8
|
-
|
9
|
-
|
7
|
+
raise ArgumentError,
|
8
|
+
"Wrong number of arguments for color definition, should be 1 or 3"
|
10
9
|
end
|
11
10
|
|
12
11
|
color = values.size == 1 ? values.first : values
|
@@ -25,9 +24,9 @@ module Rainbow
|
|
25
24
|
elsif X11Named.color_names.include?(color)
|
26
25
|
X11Named.new(ground, color)
|
27
26
|
else
|
28
|
-
|
29
|
-
|
30
|
-
|
27
|
+
raise ArgumentError,
|
28
|
+
"Unknown color name, valid names: " +
|
29
|
+
(Named.color_names + X11Named.color_names).join(', ')
|
31
30
|
end
|
32
31
|
when Array
|
33
32
|
RGB.new(ground, *color)
|
@@ -46,7 +45,6 @@ module Rainbow
|
|
46
45
|
end
|
47
46
|
|
48
47
|
class Indexed < Color
|
49
|
-
|
50
48
|
attr_reader :num
|
51
49
|
|
52
50
|
def initialize(ground, num)
|
@@ -59,11 +57,9 @@ module Rainbow
|
|
59
57
|
|
60
58
|
[code]
|
61
59
|
end
|
62
|
-
|
63
60
|
end
|
64
61
|
|
65
62
|
class Named < Indexed
|
66
|
-
|
67
63
|
NAMES = {
|
68
64
|
black: 0,
|
69
65
|
red: 1,
|
@@ -73,26 +69,28 @@ module Rainbow
|
|
73
69
|
magenta: 5,
|
74
70
|
cyan: 6,
|
75
71
|
white: 7,
|
76
|
-
default: 9
|
77
|
-
}
|
72
|
+
default: 9
|
73
|
+
}.freeze
|
78
74
|
|
79
75
|
def self.color_names
|
80
76
|
NAMES.keys
|
81
77
|
end
|
82
78
|
|
79
|
+
def self.valid_names
|
80
|
+
color_names.join(', ')
|
81
|
+
end
|
82
|
+
|
83
83
|
def initialize(ground, name)
|
84
84
|
unless Named.color_names.include?(name)
|
85
|
-
|
86
|
-
|
85
|
+
raise ArgumentError,
|
86
|
+
"Unknown color name, valid names: #{self.class.valid_names}"
|
87
87
|
end
|
88
88
|
|
89
89
|
super(ground, NAMES[name])
|
90
90
|
end
|
91
|
-
|
92
91
|
end
|
93
92
|
|
94
93
|
class RGB < Indexed
|
95
|
-
|
96
94
|
attr_reader :r, :g, :b
|
97
95
|
|
98
96
|
def self.to_ansi_domain(value)
|
@@ -101,7 +99,7 @@ module Rainbow
|
|
101
99
|
|
102
100
|
def initialize(ground, *values)
|
103
101
|
if values.min < 0 || values.max > 255
|
104
|
-
|
102
|
+
raise ArgumentError, "RGB value outside 0-255 range"
|
105
103
|
end
|
106
104
|
|
107
105
|
super(ground, 8)
|
@@ -116,10 +114,9 @@ module Rainbow
|
|
116
114
|
|
117
115
|
def code_from_rgb
|
118
116
|
16 + self.class.to_ansi_domain(r) * 36 +
|
119
|
-
|
120
|
-
|
117
|
+
self.class.to_ansi_domain(g) * 6 +
|
118
|
+
self.class.to_ansi_domain(b)
|
121
119
|
end
|
122
|
-
|
123
120
|
end
|
124
121
|
|
125
122
|
class X11Named < RGB
|
@@ -129,16 +126,18 @@ module Rainbow
|
|
129
126
|
NAMES.keys
|
130
127
|
end
|
131
128
|
|
129
|
+
def self.valid_names
|
130
|
+
color_names.join(', ')
|
131
|
+
end
|
132
|
+
|
132
133
|
def initialize(ground, name)
|
133
134
|
unless X11Named.color_names.include?(name)
|
134
|
-
|
135
|
-
|
135
|
+
raise ArgumentError,
|
136
|
+
"Unknown color name, valid names: #{self.class.valid_names}"
|
136
137
|
end
|
137
138
|
|
138
139
|
super(ground, *NAMES[name])
|
139
140
|
end
|
140
|
-
|
141
141
|
end
|
142
|
-
|
143
142
|
end
|
144
143
|
end
|