pastel 0.7.0 → 0.8.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/CHANGELOG.md +57 -13
- data/README.md +36 -29
- data/lib/pastel.rb +17 -19
- data/lib/pastel/alias_importer.rb +9 -7
- data/lib/pastel/ansi.rb +2 -2
- data/lib/pastel/color.rb +63 -23
- data/lib/pastel/color_parser.rb +24 -18
- data/lib/pastel/color_resolver.rb +3 -1
- data/lib/pastel/decorator_chain.rb +47 -7
- data/lib/pastel/delegator.rb +57 -26
- data/lib/pastel/detached.rb +41 -5
- data/lib/pastel/version.rb +2 -2
- metadata +27 -97
- data/.gitignore +0 -22
- data/.rspec +0 -3
- data/.travis.yml +0 -26
- data/Gemfile +0 -16
- data/Rakefile +0 -8
- data/appveyor.yml +0 -23
- data/assets/pastel_logo.png +0 -0
- data/assets/screenshot.png +0 -0
- data/benchmarks/nesting_speed.rb +0 -41
- data/benchmarks/speed.rb +0 -45
- data/examples/palette.rb +0 -14
- data/pastel.gemspec +0 -26
- data/spec/spec_helper.rb +0 -45
- data/spec/unit/alias_color_spec.rb +0 -24
- data/spec/unit/alias_importer_spec.rb +0 -29
- data/spec/unit/color/alias_color_spec.rb +0 -40
- data/spec/unit/color/code_spec.rb +0 -24
- data/spec/unit/color/colored_spec.rb +0 -15
- data/spec/unit/color/decorate_spec.rb +0 -79
- data/spec/unit/color/equal_spec.rb +0 -22
- data/spec/unit/color/lookup_spec.rb +0 -17
- data/spec/unit/color/new_spec.rb +0 -10
- data/spec/unit/color/strip_spec.rb +0 -56
- data/spec/unit/color/styles_spec.rb +0 -10
- data/spec/unit/color/valid_spec.rb +0 -19
- data/spec/unit/color_parser_spec.rb +0 -67
- data/spec/unit/decorate_dsl_spec.rb +0 -98
- data/spec/unit/decorator_chain_spec.rb +0 -47
- data/spec/unit/delegator_spec.rb +0 -38
- data/spec/unit/detach_spec.rb +0 -48
- data/spec/unit/new_spec.rb +0 -63
- data/spec/unit/respond_to_spec.rb +0 -17
- data/spec/unit/undecorate_spec.rb +0 -12
- data/tasks/console.rake +0 -11
- data/tasks/coverage.rake +0 -11
- data/tasks/spec.rake +0 -29
data/.gitignore
DELETED
@@ -1,22 +0,0 @@
|
|
1
|
-
*.gem
|
2
|
-
*.rbc
|
3
|
-
.bundle
|
4
|
-
.config
|
5
|
-
.yardoc
|
6
|
-
Gemfile.lock
|
7
|
-
InstalledFiles
|
8
|
-
_yardoc
|
9
|
-
coverage
|
10
|
-
doc/
|
11
|
-
lib/bundler/man
|
12
|
-
pkg
|
13
|
-
rdoc
|
14
|
-
spec/reports
|
15
|
-
test/tmp
|
16
|
-
test/version_tmp
|
17
|
-
tmp
|
18
|
-
*.bundle
|
19
|
-
*.so
|
20
|
-
*.o
|
21
|
-
*.a
|
22
|
-
mkmf.log
|
data/.rspec
DELETED
data/.travis.yml
DELETED
@@ -1,26 +0,0 @@
|
|
1
|
-
---
|
2
|
-
language: ruby
|
3
|
-
sudo: false
|
4
|
-
cache: bundler
|
5
|
-
bundler_args: --without yard benchmarks
|
6
|
-
script: "bundle exec rake ci"
|
7
|
-
rvm:
|
8
|
-
- 1.9.3
|
9
|
-
- 2.0.0
|
10
|
-
- 2.1.10
|
11
|
-
- 2.2.5
|
12
|
-
- 2.3.1
|
13
|
-
- jruby-9000
|
14
|
-
- jruby-head
|
15
|
-
- ruby-head
|
16
|
-
- rbx-2
|
17
|
-
matrix:
|
18
|
-
allow_failures:
|
19
|
-
- rvm: ruby-head
|
20
|
-
- rvm: jruby-head
|
21
|
-
- rvm: rbx-2
|
22
|
-
fast_finish: true
|
23
|
-
branches:
|
24
|
-
only: master
|
25
|
-
notifications:
|
26
|
-
email: false
|
data/Gemfile
DELETED
@@ -1,16 +0,0 @@
|
|
1
|
-
source 'https://rubygems.org'
|
2
|
-
|
3
|
-
gemspec
|
4
|
-
|
5
|
-
group :development do
|
6
|
-
gem 'rspec', '~> 3.5.0'
|
7
|
-
gem 'yard', '~> 0.8.7'
|
8
|
-
gem 'benchmark-ips', '~> 2.0.0'
|
9
|
-
end
|
10
|
-
|
11
|
-
group :metrics do
|
12
|
-
gem 'coveralls', '~> 0.8.9'
|
13
|
-
gem 'simplecov', '~> 0.10.0'
|
14
|
-
gem 'yardstick', '~> 0.9.9'
|
15
|
-
gem 'term-ansicolor', '=1.3.2'
|
16
|
-
end
|
data/Rakefile
DELETED
data/appveyor.yml
DELETED
@@ -1,23 +0,0 @@
|
|
1
|
-
---
|
2
|
-
install:
|
3
|
-
- SET PATH=C:\Ruby%ruby_version%\bin;%PATH%
|
4
|
-
- ruby --version
|
5
|
-
- gem --version
|
6
|
-
- bundle install
|
7
|
-
build: off
|
8
|
-
test_script:
|
9
|
-
- bundle exec rake ci
|
10
|
-
environment:
|
11
|
-
matrix:
|
12
|
-
- ruby_version: "193"
|
13
|
-
- ruby_version: "200"
|
14
|
-
- ruby_version: "200-x64"
|
15
|
-
- ruby_version: "21"
|
16
|
-
- ruby_version: "21-x64"
|
17
|
-
- ruby_version: "22"
|
18
|
-
- ruby_version: "22-x64"
|
19
|
-
- ruby_version: "23"
|
20
|
-
- ruby_version: "23-x64"
|
21
|
-
matrix:
|
22
|
-
allow_failures:
|
23
|
-
- ruby_version: "193"
|
data/assets/pastel_logo.png
DELETED
Binary file
|
data/assets/screenshot.png
DELETED
Binary file
|
data/benchmarks/nesting_speed.rb
DELETED
@@ -1,41 +0,0 @@
|
|
1
|
-
require 'pastel'
|
2
|
-
require 'benchmark/ips'
|
3
|
-
|
4
|
-
pastel = Pastel.new
|
5
|
-
|
6
|
-
Benchmark.ips do |bench|
|
7
|
-
bench.config(time: 5, warmup: 2)
|
8
|
-
|
9
|
-
bench.report('regular nesting') do
|
10
|
-
pastel.red.on_green('Unicorns' +
|
11
|
-
pastel.green.on_red('will ', 'dominate' + pastel.yellow('the world!')))
|
12
|
-
end
|
13
|
-
|
14
|
-
bench.report('block nesting') do
|
15
|
-
pastel.red.on_green('Unicorns') do
|
16
|
-
green.on_red('will ', 'dominate') do
|
17
|
-
yellow('the world!')
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
bench.compare!
|
23
|
-
end
|
24
|
-
|
25
|
-
# version 0.6.0
|
26
|
-
|
27
|
-
# Calculating -------------------------------------
|
28
|
-
# regular nesting 1282 i/100ms
|
29
|
-
# block nesting 1013 i/100ms
|
30
|
-
# -------------------------------------------------
|
31
|
-
# regular nesting 13881.5 (±16.3%) i/s - 67946 in 5.043220s
|
32
|
-
# block nesting 11411.6 (±25.4%) i/s - 53689 in 5.088911s
|
33
|
-
#
|
34
|
-
# Comparison:
|
35
|
-
# regular nesting: 13881.5 i/s
|
36
|
-
# block nesting: 11411.6 i/s - 1.22x slower
|
37
|
-
|
38
|
-
# version 0.5.3
|
39
|
-
|
40
|
-
# regular nesting: 2800/s
|
41
|
-
# block nesting: 2600/s
|
data/benchmarks/speed.rb
DELETED
@@ -1,45 +0,0 @@
|
|
1
|
-
require 'pastel'
|
2
|
-
require 'benchmark/ips'
|
3
|
-
|
4
|
-
pastel = Pastel.new
|
5
|
-
|
6
|
-
Benchmark.ips do |bench|
|
7
|
-
bench.config(time: 5, warmup: 2)
|
8
|
-
|
9
|
-
bench.report('color decorate') do
|
10
|
-
pastel.decorate('string', :red, :on_green, :bold)
|
11
|
-
end
|
12
|
-
|
13
|
-
bench.report('dsl styling') do
|
14
|
-
pastel.red.on_green.bold('string')
|
15
|
-
end
|
16
|
-
|
17
|
-
bench.compare!
|
18
|
-
end
|
19
|
-
|
20
|
-
# version 0.6.0
|
21
|
-
|
22
|
-
# Calculating -------------------------------------
|
23
|
-
# color decorate 7346 i/100ms
|
24
|
-
# dsl styling 3436 i/100ms
|
25
|
-
# -------------------------------------------------
|
26
|
-
# color decorate 96062.1 (±7.9%) i/s - 484836 in 5.081126s
|
27
|
-
# dsl styling 38761.1 (±13.9%) i/s - 192416 in 5.065053s
|
28
|
-
#
|
29
|
-
# Comparison:
|
30
|
-
# color decorate: 96062.1 i/s
|
31
|
-
# dsl styling: 38761.1 i/s - 2.48x slower
|
32
|
-
|
33
|
-
# version 0.5.3
|
34
|
-
|
35
|
-
# Calculating -------------------------------------
|
36
|
-
# color decorate 1428 i/100ms
|
37
|
-
# dsl styling 1174 i/100ms
|
38
|
-
# -------------------------------------------------
|
39
|
-
# color decorate 16113.1 (±21.5%) i/s - 77112 in 5.054487s
|
40
|
-
# dsl styling 12622.9 (±20.8%) i/s - 61048 in 5.076738s
|
41
|
-
#
|
42
|
-
# Comparison:
|
43
|
-
# color decorate: 16113.1 i/s
|
44
|
-
# dsl styling: 12622.9 i/s - 1.28x slower
|
45
|
-
#
|
data/examples/palette.rb
DELETED
@@ -1,14 +0,0 @@
|
|
1
|
-
require_relative 'lib/pastel'
|
2
|
-
|
3
|
-
pastel = Pastel.new
|
4
|
-
|
5
|
-
puts pastel.bold('bold ') + ' ' + pastel.dim('dim ') + ' ' + pastel.italic('italic ') + ' ' + pastel.underline('underline') + ' ' + pastel.inverse('inverse ') + ' ' + pastel.strikethrough('strikethrough')
|
6
|
-
|
7
|
-
puts pastel.red('red ') + ' ' + pastel.green('green ') + ' ' + pastel.yellow('yellow ') + ' ' + pastel.blue('blue ') + ' ' + pastel.magenta('magenta ') + ' ' + pastel.cyan('cyan ') + ' ' + pastel.white('white')
|
8
|
-
|
9
|
-
puts pastel.bright_red('red ') + ' ' + pastel.bright_green('green ') + ' ' + pastel.bright_yellow('yellow ') + ' ' + pastel.bright_blue('blue ') + ' ' + pastel.bright_magenta('magenta ') + ' ' + pastel.bright_cyan('cyan ') + ' ' + pastel.bright_white('white')
|
10
|
-
|
11
|
-
|
12
|
-
puts pastel.on_red('on_red') + ' ' + pastel.on_green('on_green') + ' ' + pastel.on_yellow('on_yellow') + ' ' + pastel.on_blue('on_blue') + ' ' + pastel.on_magenta('on_magenta') + ' ' + pastel.on_cyan('on_cyan') + ' ' + pastel.on_white('on_white')
|
13
|
-
|
14
|
-
puts pastel.on_bright_red('on_red') + ' ' + pastel.on_bright_green('on_green') + ' ' + pastel.on_bright_yellow('on_yellow') + ' ' + pastel.on_bright_blue('on_blue') + ' ' + pastel.on_bright_magenta('on_magenta') + ' ' + pastel.on_bright_cyan('on_cyan') + ' ' + pastel.on_bright_white('on_white')
|
data/pastel.gemspec
DELETED
@@ -1,26 +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 'pastel/version'
|
5
|
-
|
6
|
-
Gem::Specification.new do |spec|
|
7
|
-
spec.name = "pastel"
|
8
|
-
spec.version = Pastel::VERSION
|
9
|
-
spec.authors = ["Piotr Murach"]
|
10
|
-
spec.email = [""]
|
11
|
-
spec.summary = %q{Terminal strings styling with intuitive and clean API.}
|
12
|
-
spec.description = %q{Terminal strings styling with intuitive and clean API.}
|
13
|
-
spec.homepage = "https://github.com/piotrmurach/pastel"
|
14
|
-
spec.license = "MIT"
|
15
|
-
|
16
|
-
spec.files = `git ls-files -z`.split("\x0")
|
17
|
-
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
|
-
spec.test_files = spec.files.grep(%r{^spec/})
|
19
|
-
spec.require_paths = ["lib"]
|
20
|
-
|
21
|
-
spec.add_dependency 'equatable', '~> 0.5.0'
|
22
|
-
spec.add_dependency 'tty-color', '~> 0.4.0'
|
23
|
-
|
24
|
-
spec.add_development_dependency 'bundler', '>= 1.5.0', '< 2.0'
|
25
|
-
spec.add_development_dependency 'rake'
|
26
|
-
end
|
data/spec/spec_helper.rb
DELETED
@@ -1,45 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
|
-
if RUBY_VERSION > '1.9' and (ENV['COVERAGE'] || ENV['TRAVIS'])
|
4
|
-
require 'simplecov'
|
5
|
-
require 'coveralls'
|
6
|
-
|
7
|
-
SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
|
8
|
-
SimpleCov::Formatter::HTMLFormatter,
|
9
|
-
Coveralls::SimpleCov::Formatter
|
10
|
-
]
|
11
|
-
|
12
|
-
SimpleCov.start do
|
13
|
-
command_name 'spec'
|
14
|
-
add_filter 'spec'
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
require 'pastel'
|
19
|
-
|
20
|
-
RSpec.configure do |config|
|
21
|
-
config.expect_with :rspec do |expectations|
|
22
|
-
expectations.include_chain_clauses_in_custom_matcher_descriptions = true
|
23
|
-
end
|
24
|
-
|
25
|
-
config.mock_with :rspec do |mocks|
|
26
|
-
mocks.verify_partial_doubles = true
|
27
|
-
end
|
28
|
-
|
29
|
-
# Limits the available syntax to the non-monkey patched syntax that is recommended.
|
30
|
-
config.disable_monkey_patching!
|
31
|
-
|
32
|
-
# This setting enables warnings. It's recommended, but in some cases may
|
33
|
-
# be too noisy due to issues in dependencies.
|
34
|
-
config.warnings = true
|
35
|
-
|
36
|
-
if config.files_to_run.one?
|
37
|
-
config.default_formatter = 'doc'
|
38
|
-
end
|
39
|
-
|
40
|
-
config.profile_examples = 2
|
41
|
-
|
42
|
-
config.order = :random
|
43
|
-
|
44
|
-
Kernel.srand config.seed
|
45
|
-
end
|
@@ -1,24 +0,0 @@
|
|
1
|
-
# coding: utf-8
|
2
|
-
|
3
|
-
RSpec.describe Pastel, '#alias_color' do
|
4
|
-
|
5
|
-
subject(:pastel) { described_class.new(enabled: true) }
|
6
|
-
|
7
|
-
it "aliases color" do
|
8
|
-
pastel.alias_color(:funky, :red)
|
9
|
-
expect(pastel.funky('unicorn')).to eq("\e[31municorn\e[0m")
|
10
|
-
end
|
11
|
-
|
12
|
-
it "aliases color and combines with regular ones" do
|
13
|
-
pastel.alias_color(:funky, :red)
|
14
|
-
expect(pastel.funky.on_green('unicorn')).to eq("\e[31;42municorn\e[0m")
|
15
|
-
end
|
16
|
-
|
17
|
-
it "reads aliases from the environment" do
|
18
|
-
color_aliases = "funky=red"
|
19
|
-
allow(ENV).to receive(:[]).with('PASTEL_COLORS_ALIASES').
|
20
|
-
and_return(color_aliases)
|
21
|
-
described_class.new(enabled: true)
|
22
|
-
expect(pastel.valid?(:funky)).to eq(true)
|
23
|
-
end
|
24
|
-
end
|
@@ -1,29 +0,0 @@
|
|
1
|
-
# coding: utf-8
|
2
|
-
|
3
|
-
RSpec.describe Pastel::AliasImporter, '#import' do
|
4
|
-
let(:color) { spy(:color, alias_color: true) }
|
5
|
-
let(:output) { StringIO.new }
|
6
|
-
|
7
|
-
it "imports aliases from environment" do
|
8
|
-
color_aliases = "funky=red,base=bright_yellow"
|
9
|
-
env = {'PASTEL_COLORS_ALIASES' => color_aliases}
|
10
|
-
importer = described_class.new(color, env)
|
11
|
-
|
12
|
-
importer.import
|
13
|
-
|
14
|
-
expect(color).to have_received(:alias_color).with(:funky, :red)
|
15
|
-
expect(color).to have_received(:alias_color).with(:base, :bright_yellow)
|
16
|
-
end
|
17
|
-
|
18
|
-
it "fails to import incorrectly formatted colors" do
|
19
|
-
color_aliases = "funky red,base=bright_yellow"
|
20
|
-
env = {'PASTEL_COLORS_ALIASES' => color_aliases}
|
21
|
-
importer = described_class.new(color, env, output)
|
22
|
-
output.rewind
|
23
|
-
|
24
|
-
importer.import
|
25
|
-
|
26
|
-
expect(output.string).to eq("Bad color mapping `funky red`\n")
|
27
|
-
expect(color).to have_received(:alias_color).with(:base, :bright_yellow)
|
28
|
-
end
|
29
|
-
end
|
@@ -1,40 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
|
-
RSpec.describe Pastel::Color, '.alias_color' do
|
4
|
-
|
5
|
-
subject(:color) { described_class.new(enabled: true) }
|
6
|
-
|
7
|
-
it 'aliases non existent color' do
|
8
|
-
expect {
|
9
|
-
color.alias_color(:funky, :unknown)
|
10
|
-
}.to raise_error(Pastel::InvalidAttributeNameError)
|
11
|
-
end
|
12
|
-
|
13
|
-
it 'aliases color with invalid name' do
|
14
|
-
expect {
|
15
|
-
color.alias_color('some name', :red)
|
16
|
-
}.to raise_error(Pastel::InvalidAliasNameError, /Invalid alias name/)
|
17
|
-
end
|
18
|
-
|
19
|
-
it 'aliases standard color' do
|
20
|
-
expect {
|
21
|
-
color.alias_color(:red, :red)
|
22
|
-
}.to raise_error(Pastel::InvalidAliasNameError, /alias standard color/)
|
23
|
-
end
|
24
|
-
|
25
|
-
it 'aliases color :red to :funky' do
|
26
|
-
color.alias_color(:funky, :red)
|
27
|
-
expect(color.valid?(:funky)).to eq(true)
|
28
|
-
expect(color.code(:funky)).to eq([31])
|
29
|
-
expect(color.lookup(:funky)).to eq("\e[31m")
|
30
|
-
end
|
31
|
-
|
32
|
-
it "has global aliases" do
|
33
|
-
color_foo = described_class.new(enabled: true)
|
34
|
-
color_bar = described_class.new(enabled: true)
|
35
|
-
color_foo.alias_color(:foo, :red)
|
36
|
-
color_bar.alias_color(:bar, :red)
|
37
|
-
expect(color_foo.valid?(:foo)).to eq(true)
|
38
|
-
expect(color_foo.valid?(:bar)).to eq(true)
|
39
|
-
end
|
40
|
-
end
|
@@ -1,24 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
|
-
RSpec.describe Pastel::Color, '#code' do
|
4
|
-
let(:string) { "This is a \e[1m\e[34mbold blue text\e[0m" }
|
5
|
-
|
6
|
-
subject(:color) { described_class.new(enabled: true) }
|
7
|
-
|
8
|
-
it 'finds single code' do
|
9
|
-
expect(color.code(:black)).to eq([30])
|
10
|
-
end
|
11
|
-
|
12
|
-
it 'finds more than one code' do
|
13
|
-
expect(color.code(:black, :green)).to eq([30, 32])
|
14
|
-
end
|
15
|
-
|
16
|
-
it "doesn't find code" do
|
17
|
-
expect { color.code(:unkown) }.to raise_error(ArgumentError)
|
18
|
-
end
|
19
|
-
|
20
|
-
it "finds alias code" do
|
21
|
-
color.alias_color(:funky, :red)
|
22
|
-
expect(color.code(:funky)).to eq(color.code(:red))
|
23
|
-
end
|
24
|
-
end
|
@@ -1,15 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
|
-
RSpec.describe Pastel::Color, '#colored?' do
|
4
|
-
subject(:color) { described_class.new(enabled: true) }
|
5
|
-
|
6
|
-
it "checks if string has color codes" do
|
7
|
-
string = "foo\e[31mbar\e[0m"
|
8
|
-
expect(color.colored?(string)).to eq(true)
|
9
|
-
end
|
10
|
-
|
11
|
-
it "checks that string doesn't contain color codes" do
|
12
|
-
string = "foo\nbar"
|
13
|
-
expect(color.colored?(string)).to eq(false)
|
14
|
-
end
|
15
|
-
end
|
@@ -1,79 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
|
-
RSpec.describe Pastel::Color, '.decorate' do
|
4
|
-
let(:string) { 'string' }
|
5
|
-
|
6
|
-
subject(:color) { described_class.new(enabled: true) }
|
7
|
-
|
8
|
-
it "doesn't output styling when disabled" do
|
9
|
-
color = described_class.new(enabled: false)
|
10
|
-
expect(color.decorate('foo', :red)).to eq('foo')
|
11
|
-
end
|
12
|
-
|
13
|
-
it "doesn't apply styling to empty string" do
|
14
|
-
expect(color.decorate('')).to eq('')
|
15
|
-
end
|
16
|
-
|
17
|
-
it "doesn't decorate without color" do
|
18
|
-
expect(color.decorate(string)).to eq(string)
|
19
|
-
end
|
20
|
-
|
21
|
-
it 'applies green text to string' do
|
22
|
-
expect(color.decorate(string, :green)).to eq("\e[32m#{string}\e[0m")
|
23
|
-
end
|
24
|
-
|
25
|
-
it 'applies red text background to string' do
|
26
|
-
expect(color.decorate(string, :on_red)).to eq("\e[41m#{string}\e[0m")
|
27
|
-
end
|
28
|
-
|
29
|
-
it 'applies style and color to string' do
|
30
|
-
expect(color.decorate(string, :bold, :green)).to eq("\e[1;32m#{string}\e[0m")
|
31
|
-
end
|
32
|
-
|
33
|
-
it 'applies style, color and background to string' do
|
34
|
-
text = color.decorate(string, :bold, :green, :on_blue)
|
35
|
-
expect(text).to eq("\e[1;32;44m#{string}\e[0m")
|
36
|
-
end
|
37
|
-
|
38
|
-
it "applies styles to nested text" do
|
39
|
-
decorated = color.decorate(string + color.decorate(string, :red) + string, :green)
|
40
|
-
expect(decorated).to eq("\e[32m#{string}\e[31m#{string}\e[0m\e[32m#{string}\e[0m")
|
41
|
-
end
|
42
|
-
|
43
|
-
it "decorates multiline string as regular by default" do
|
44
|
-
string = "foo\nbar\nbaz"
|
45
|
-
expect(color.decorate(string, :red)).to eq("\e[31mfoo\nbar\nbaz\e[0m")
|
46
|
-
end
|
47
|
-
|
48
|
-
it "allows to decorate each line separately" do
|
49
|
-
string = "foo\nbar\nbaz"
|
50
|
-
color = described_class.new(enabled: true, eachline: "\n")
|
51
|
-
expect(color.decorate(string, :red)).to eq([
|
52
|
-
"\e[31mfoo\e[0m",
|
53
|
-
"\e[31mbar\e[0m",
|
54
|
-
"\e[31mbaz\e[0m"
|
55
|
-
].join("\n"))
|
56
|
-
end
|
57
|
-
|
58
|
-
it 'errors for unknown color' do
|
59
|
-
expect {
|
60
|
-
color.decorate(string, :crimson)
|
61
|
-
}.to raise_error(Pastel::InvalidAttributeNameError)
|
62
|
-
end
|
63
|
-
|
64
|
-
it "doesn't decorate non-string instance" do
|
65
|
-
expect(color.decorate({}, :red)).to eq({})
|
66
|
-
end
|
67
|
-
|
68
|
-
it "doesn't decorate nil" do
|
69
|
-
expect(color.decorate(nil, :red)).to eq(nil)
|
70
|
-
end
|
71
|
-
|
72
|
-
it "doesn't decorate zero length string" do
|
73
|
-
expect(color.decorate('', :red)).to eq('')
|
74
|
-
end
|
75
|
-
|
76
|
-
it "doesn't decorate non-zero length string" do
|
77
|
-
expect(color.decorate(' ', :red)).to eq("\e[31m \e[0m")
|
78
|
-
end
|
79
|
-
end
|