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.
@@ -0,0 +1,36 @@
1
+ require 'spec_helper'
2
+ require 'rainbow'
3
+
4
+ RSpec.describe 'Rainbow refinement' do
5
+ before do
6
+ require 'rainbow/refinement'
7
+
8
+ class ScopeNotIncluded
9
+ def self.red_hello
10
+ 'hello'.red
11
+ end
12
+ end
13
+
14
+ class ScopeIncluded
15
+ using Rainbow
16
+ def self.red_hello
17
+ 'hello'.red
18
+ end
19
+ end
20
+ end
21
+
22
+ it 'is not active by default' do
23
+ expect do
24
+ ScopeNotIncluded.red_hello
25
+ end.to raise_error(NoMethodError)
26
+ end
27
+
28
+ it 'is available when used' do
29
+ expect(ScopeIncluded.red_hello).to eq(Rainbow('hello').red)
30
+ end
31
+
32
+ it 'respects disabled state' do
33
+ Rainbow.enabled = false
34
+ expect(ScopeIncluded.red_hello).to eq('hello')
35
+ end
36
+ end
@@ -1,8 +1,7 @@
1
1
  require 'spec_helper'
2
2
  require 'rainbow/ext/string'
3
3
 
4
- describe 'String mixin' do
5
-
4
+ RSpec.describe 'String mixin' do
6
5
  before do
7
6
  Rainbow.enabled = true
8
7
  end
@@ -60,25 +59,23 @@ describe 'String mixin' do
60
59
  end
61
60
 
62
61
  context "when Rainbow is disabled" do
63
-
64
62
  before do
65
63
  Rainbow.enabled = false
66
64
  end
67
65
 
68
66
  it "allows chaining but doesn't wrap with escape codes" do
69
- result = 'hello'.
70
- foreground(:red).
71
- bright.
72
- italic.
73
- background('#ff8040').
74
- underline.
75
- color(:blue).
76
- blink.
77
- inverse.
78
- hide
67
+ result = 'hello'
68
+ .foreground(:red)
69
+ .bright
70
+ .italic
71
+ .background('#ff8040')
72
+ .underline
73
+ .color(:blue)
74
+ .blink
75
+ .inverse
76
+ .hide
79
77
 
80
78
  expect(result).to eq('hello')
81
79
  end
82
80
  end
83
-
84
81
  end
@@ -0,0 +1,14 @@
1
+ require 'spec_helper'
2
+ require 'rainbow'
3
+
4
+ RSpec.describe 'uncolor method' do
5
+
6
+ it 'strips ansi color escape code' do
7
+ expect(Rainbow.uncolor("\e[35mhello\e[0mm")).to eq 'hellom'
8
+ end
9
+
10
+ it 'does not strip scroll down escape code' do
11
+ expect(Rainbow.uncolor("\e[1Thello")).to eq "\e[1Thello"
12
+ end
13
+
14
+ end
@@ -4,3 +4,7 @@ if ENV["CI"] && (!defined?(RUBY_ENGINE) || RUBY_ENGINE == "ruby")
4
4
  end
5
5
 
6
6
  Dir[File.expand_path('../support/**/*.rb', __FILE__)].each { |file| require file }
7
+
8
+ RSpec.configure do |config|
9
+ config.disable_monkey_patching!
10
+ end
@@ -1,5 +1,5 @@
1
- shared_examples_for "presenter with shortcut color methods" do
2
- [:black, :red, :green, :yellow, :blue, :magenta, :cyan, :white, :aqua].each do |name|
1
+ RSpec.shared_examples_for "presenter with shortcut color methods" do
2
+ %i[black red green yellow blue magenta cyan white aqua].each do |name|
3
3
  describe "##{name}" do
4
4
  subject { presenter.public_send(name) }
5
5
 
@@ -2,9 +2,8 @@ require 'spec_helper'
2
2
  require 'rainbow/color'
3
3
 
4
4
  module Rainbow
5
- describe Color do
5
+ RSpec.describe Color do
6
6
  describe '.build' do
7
-
8
7
  subject { described_class.build(ground, values) }
9
8
 
10
9
  let(:ground) { :foreground }
@@ -75,11 +74,10 @@ module Rainbow
75
74
  expect { subject }.to raise_error(ArgumentError)
76
75
  end
77
76
  end
78
-
79
77
  end
80
78
  end
81
79
 
82
- describe Color::Indexed do
80
+ RSpec.describe Color::Indexed do
83
81
  let(:color) { described_class.new(ground, 5) }
84
82
 
85
83
  describe '#codes' do
@@ -99,7 +97,7 @@ module Rainbow
99
97
  end
100
98
  end
101
99
 
102
- describe Color::Named do
100
+ RSpec.describe Color::Named do
103
101
  let(:color) { described_class.new(ground, name) }
104
102
 
105
103
  describe '#codes' do
@@ -227,7 +225,7 @@ module Rainbow
227
225
  end
228
226
  end
229
227
 
230
- describe Color::RGB do
228
+ RSpec.describe Color::RGB do
231
229
  let(:color) { described_class.new(ground, r, g, b) }
232
230
 
233
231
  describe '#codes' do
@@ -265,11 +263,10 @@ module Rainbow
265
263
  expect { subject }.to raise_error(ArgumentError)
266
264
  end
267
265
  end
268
-
269
266
  end
270
267
  end
271
268
 
272
- describe Color::X11Named do
269
+ RSpec.describe Color::X11Named do
273
270
  let(:color) { described_class.new(ground, name) }
274
271
 
275
272
  describe '#codes' do
@@ -294,8 +291,6 @@ module Rainbow
294
291
  expect { subject }.to raise_error(ArgumentError)
295
292
  end
296
293
  end
297
-
298
294
  end
299
295
  end
300
-
301
296
  end
@@ -2,8 +2,7 @@ require 'spec_helper'
2
2
  require 'rainbow/null_presenter'
3
3
 
4
4
  module Rainbow
5
- describe NullPresenter do
6
-
5
+ RSpec.describe NullPresenter do
7
6
  let(:presenter) { described_class.new('hello') }
8
7
 
9
8
  shared_examples_for "rainbow null string method" do
@@ -2,8 +2,7 @@ require 'spec_helper'
2
2
  require 'rainbow/presenter'
3
3
 
4
4
  module Rainbow
5
- describe Presenter do
6
-
5
+ RSpec.describe Presenter do
7
6
  let(:presenter) { described_class.new('hello') }
8
7
 
9
8
  shared_examples_for "rainbow string method" do
@@ -20,16 +19,16 @@ module Rainbow
20
19
  let(:color) { double('color', codes: [1, 2]) }
21
20
 
22
21
  before do
23
- allow(Color).to receive(:build).
24
- with(:foreground, [:arg1, 'arg2']) { color }
22
+ allow(Color).to receive(:build)
23
+ .with(:foreground, [:arg1, 'arg2']) { color }
25
24
  end
26
25
 
27
26
  it_behaves_like "rainbow string method"
28
27
 
29
28
  it 'wraps with color codes' do
30
29
  subject
31
- expect(StringUtils).to have_received(:wrap_with_sgr).
32
- with('hello', [1, 2])
30
+ expect(StringUtils).to have_received(:wrap_with_sgr)
31
+ .with('hello', [1, 2])
33
32
  end
34
33
  end
35
34
 
@@ -37,16 +36,16 @@ module Rainbow
37
36
  let(:color) { double('color', codes: [1, 2]) }
38
37
 
39
38
  before do
40
- allow(Color).to receive(:build).
41
- with(:background, [:arg1, 'arg2']) { color }
39
+ allow(Color).to receive(:build)
40
+ .with(:background, [:arg1, 'arg2']) { color }
42
41
  end
43
42
 
44
43
  it_behaves_like "rainbow string method"
45
44
 
46
45
  it 'wraps with color codes' do
47
46
  subject
48
- expect(StringUtils).to have_received(:wrap_with_sgr).
49
- with('hello', [1, 2])
47
+ expect(StringUtils).to have_received(:wrap_with_sgr)
48
+ .with('hello', [1, 2])
50
49
  end
51
50
  end
52
51
 
@@ -146,8 +145,8 @@ module Rainbow
146
145
 
147
146
  it 'wraps with 3 code' do
148
147
  subject
149
- expect(StringUtils).to have_received(:wrap_with_sgr).
150
- with('hello', [3])
148
+ expect(StringUtils).to have_received(:wrap_with_sgr)
149
+ .with('hello', [3])
151
150
  end
152
151
  end
153
152
 
@@ -196,6 +195,5 @@ module Rainbow
196
195
  end
197
196
 
198
197
  it_behaves_like "presenter with shortcut color methods"
199
-
200
198
  end
201
199
  end
@@ -2,9 +2,8 @@ require 'spec_helper'
2
2
  require 'rainbow/string_utils'
3
3
 
4
4
  module Rainbow
5
- describe StringUtils do
5
+ RSpec.describe StringUtils do
6
6
  describe '.wrap_with_sgr' do
7
-
8
7
  subject { described_class.wrap_with_sgr(string, codes) }
9
8
 
10
9
  let(:string) { 'hello' }
@@ -56,7 +55,40 @@ module Rainbow
56
55
  expect(subject).to eq("\e[1;2m\e[3;4mhello\e[0m")
57
56
  end
58
57
  end
58
+ end
59
+
60
+ describe '.uncolor' do
61
+ subject { described_class.uncolor(string) }
62
+
63
+ context "when string with ansi color escape is passed" do
64
+ let(:string) do
65
+ rainbow = Rainbow.new
66
+ rainbow.enabled = true
67
+ rainbow.wrap('hello').
68
+ foreground(:red).
69
+ bright.
70
+ bold.
71
+ italic.
72
+ background('#ff8040').
73
+ underline.
74
+ color(:blue).
75
+ blink.
76
+ inverse.
77
+ hide
78
+ end
79
+
80
+ it "removes ansi color codes" do
81
+ expect(subject).to eq 'hello'
82
+ end
83
+ end
84
+
85
+ context "when string with scroll down ansi escape is passed" do
86
+ let(:string) { "\e[1Thello" }
59
87
 
88
+ it "does not remove ansi scroll down escape" do
89
+ expect(subject).to eq "\e[1Thello"
90
+ end
91
+ end
60
92
  end
61
93
  end
62
94
  end
@@ -2,8 +2,7 @@ require 'spec_helper'
2
2
  require 'rainbow/wrapper'
3
3
 
4
4
  module Rainbow
5
- describe Wrapper do
6
-
5
+ RSpec.describe Wrapper do
7
6
  let(:wrapper) { described_class.new(enabled) }
8
7
 
9
8
  it "is enabled by default" do
@@ -29,6 +28,5 @@ module Rainbow
29
28
  it { should be_kind_of(Rainbow::NullPresenter) }
30
29
  end
31
30
  end
32
-
33
31
  end
34
32
  end
metadata CHANGED
@@ -1,68 +1,55 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rainbow
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.2
4
+ version: 3.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Marcin Kulik
8
+ - Olle Jonsson
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
- date: 2017-04-21 00:00:00.000000000 Z
12
+ date: 2017-11-29 00:00:00.000000000 Z
12
13
  dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: rake
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - '>='
18
- - !ruby/object:Gem::Version
19
- version: '0'
20
- type: :runtime
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - '>='
25
- - !ruby/object:Gem::Version
26
- version: '0'
27
14
  - !ruby/object:Gem::Dependency
28
15
  name: bundler
29
16
  requirement: !ruby/object:Gem::Requirement
30
17
  requirements:
31
- - - ~>
18
+ - - "~>"
32
19
  - !ruby/object:Gem::Version
33
20
  version: '1.3'
34
21
  type: :development
35
22
  prerelease: false
36
23
  version_requirements: !ruby/object:Gem::Requirement
37
24
  requirements:
38
- - - ~>
25
+ - - "~>"
39
26
  - !ruby/object:Gem::Version
40
27
  version: '1.3'
41
28
  description: Colorize printed text on ANSI terminals
42
29
  email:
43
30
  - m@ku1ik.com
44
31
  executables: []
45
- extensions:
46
- - ext/mkrf_conf.rb
32
+ extensions: []
47
33
  extra_rdoc_files: []
48
34
  files:
49
- - .gitignore
50
- - .rubocop.yml
51
- - .travis.yml
35
+ - ".gitignore"
36
+ - ".rubocop.yml"
37
+ - ".rubocop_todo.yml"
38
+ - ".travis.yml"
52
39
  - Changelog.md
53
40
  - Gemfile
54
41
  - Guardfile
55
42
  - LICENSE
56
43
  - README.markdown
57
44
  - Rakefile
58
- - ext/mkrf_conf.rb
45
+ - appveyor.yml
59
46
  - lib/rainbow.rb
60
47
  - lib/rainbow/color.rb
61
48
  - lib/rainbow/ext/string.rb
62
49
  - lib/rainbow/global.rb
63
- - lib/rainbow/legacy.rb
64
50
  - lib/rainbow/null_presenter.rb
65
51
  - lib/rainbow/presenter.rb
52
+ - lib/rainbow/refinement.rb
66
53
  - lib/rainbow/string_utils.rb
67
54
  - lib/rainbow/version.rb
68
55
  - lib/rainbow/wrapper.rb
@@ -70,11 +57,12 @@ files:
70
57
  - rainbow.gemspec
71
58
  - spec/integration/instance_spec.rb
72
59
  - spec/integration/rainbow_spec.rb
60
+ - spec/integration/refinement_spec.rb
73
61
  - spec/integration/string_spec.rb
62
+ - spec/integration/uncolor_spec.rb
74
63
  - spec/spec_helper.rb
75
64
  - spec/support/presenter_shared_examples.rb
76
65
  - spec/unit/color_spec.rb
77
- - spec/unit/namespace_spec.rb
78
66
  - spec/unit/null_presenter_spec.rb
79
67
  - spec/unit/presenter_spec.rb
80
68
  - spec/unit/string_utils_spec.rb
@@ -89,28 +77,29 @@ require_paths:
89
77
  - lib
90
78
  required_ruby_version: !ruby/object:Gem::Requirement
91
79
  requirements:
92
- - - '>='
80
+ - - ">="
93
81
  - !ruby/object:Gem::Version
94
- version: 1.9.2
82
+ version: 2.1.0
95
83
  required_rubygems_version: !ruby/object:Gem::Requirement
96
84
  requirements:
97
- - - '>='
85
+ - - ">="
98
86
  - !ruby/object:Gem::Version
99
87
  version: '0'
100
88
  requirements: []
101
89
  rubyforge_project:
102
- rubygems_version: 2.0.14.1
90
+ rubygems_version: 2.6.11
103
91
  signing_key:
104
92
  specification_version: 4
105
93
  summary: Colorize printed text on ANSI terminals
106
94
  test_files:
107
95
  - spec/integration/instance_spec.rb
108
96
  - spec/integration/rainbow_spec.rb
97
+ - spec/integration/refinement_spec.rb
109
98
  - spec/integration/string_spec.rb
99
+ - spec/integration/uncolor_spec.rb
110
100
  - spec/spec_helper.rb
111
101
  - spec/support/presenter_shared_examples.rb
112
102
  - spec/unit/color_spec.rb
113
- - spec/unit/namespace_spec.rb
114
103
  - spec/unit/null_presenter_spec.rb
115
104
  - spec/unit/presenter_spec.rb
116
105
  - spec/unit/string_utils_spec.rb