paint 0.8.7 → 0.9.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.rdoc +4 -0
- data/{LICENSE.txt → MIT-LICENSE.txt} +0 -0
- data/README.rdoc +12 -7
- data/Rakefile +8 -17
- data/lib/paint.rb +23 -23
- data/lib/paint/rgb_colors_ansi.rb +2 -2
- data/lib/paint/shortcuts.rb +28 -4
- data/lib/paint/version.rb +1 -1
- data/paint.gemspec +3 -12
- data/spec/paint_shortcuts_spec.rb +19 -14
- data/spec/spec_helper.rb +6 -0
- metadata +8 -24
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bfb6c0865f627879375ff54af807216e5e0f736d
|
4
|
+
data.tar.gz: fa3d2cf817aa88e67cca7a8bceab448321da4c59
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5880654739c1fb793f43bff78d85c2ef07c9c8e83dba9011e94b59bde884596735107774fa20e0614aba53543c53356af41daef99a443311825b819c449ca18e
|
7
|
+
data.tar.gz: 71097ce6065c42c999a33ce7bfe190397c8f26e287cc720bad6a41fc94fbd6750b138f805238fc565a828551c6b6132def89e78f7f1718258a35ddbea703f8bf
|
data/CHANGELOG.rdoc
CHANGED
File without changes
|
data/README.rdoc
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
{<img src="https://travis-ci.org/janlelis/paint.png" />}[https://travis-ci.org/janlelis/paint]
|
1
|
+
= Ruby Paint {<img src="https://travis-ci.org/janlelis/paint.png" />}[https://travis-ci.org/janlelis/paint]
|
2
2
|
|
3
3
|
Paint manages terminal colors and effects for you. It combines the strengths of *term-ansicolor*, *rainbow* and other similar projects into a simple to use, however still flexible terminal colorization gem with no core extensions by default.
|
4
4
|
|
@@ -21,6 +21,12 @@ Install with:
|
|
21
21
|
|
22
22
|
gem install paint
|
23
23
|
|
24
|
+
Or add to Gemfile:
|
25
|
+
|
26
|
+
gem 'paint'
|
27
|
+
|
28
|
+
and run `bundle install`
|
29
|
+
|
24
30
|
In Ruby do:
|
25
31
|
|
26
32
|
require 'paint'
|
@@ -165,11 +171,10 @@ Another helper method is <tt>Paint.unpaint</tt>, which removes any ansi colors:
|
|
165
171
|
|
166
172
|
== J-_-L
|
167
173
|
|
168
|
-
Copyright (c) 2011-
|
174
|
+
Copyright (c) 2011-2014 Jan Lelis <http://janlelis.com>, released under the MIT license.
|
169
175
|
|
170
|
-
Mainly influenced by rainbow[https://github.com/sickill/rainbow] and {term-ansicolor}[https://github.com/flori/term-ansicolor].
|
171
|
-
|
172
|
-
Contributions[https://github.com/janlelis/paint/contributors] by and thanks to:
|
173
|
-
* {murphy}[https://github.com/rubychan]
|
176
|
+
Mainly influenced by rainbow[https://github.com/sickill/rainbow] and {term-ansicolor}[https://github.com/flori/term-ansicolor]. Contributors[https://github.com/janlelis/paint/contributors]:
|
174
177
|
* {CyberShadow}[https://github.com/CyberShadow]
|
175
|
-
|
178
|
+
* {korun}[https://github.com/korun]
|
179
|
+
* {mhaylock}[https://github.com/mhaylock]
|
180
|
+
* {korny}[https://github.com/rubychan]
|
data/Rakefile
CHANGED
@@ -42,15 +42,6 @@ task :gemspec do
|
|
42
42
|
gemspec.validate
|
43
43
|
end
|
44
44
|
|
45
|
-
#Rake::RDocTask.new do |rdoc|
|
46
|
-
# require File.expand_path( File.join( 'lib', 'paint') )
|
47
|
-
#
|
48
|
-
# rdoc.rdoc_dir = 'doc'
|
49
|
-
# rdoc.title = "paint #{Paint::VERSION}"
|
50
|
-
# rdoc.rdoc_files.include('README*')
|
51
|
-
# rdoc.rdoc_files.include('lib/**/*.rb')
|
52
|
-
#end
|
53
|
-
|
54
45
|
desc "Run a Benchmark"
|
55
46
|
task :benchmark do
|
56
47
|
require 'benchmark'
|
@@ -58,11 +49,11 @@ task :benchmark do
|
|
58
49
|
class String
|
59
50
|
include Term::ANSIColor
|
60
51
|
end
|
61
|
-
|
52
|
+
|
62
53
|
require 'rainbow'
|
63
54
|
$:.unshift '../lib'
|
64
55
|
require 'paint'
|
65
|
-
|
56
|
+
|
66
57
|
n = 100_000
|
67
58
|
colors = [:black, :red, :green, :yellow, :blue, :magenta, :cyan]
|
68
59
|
def colors.next
|
@@ -71,7 +62,7 @@ task :benchmark do
|
|
71
62
|
end
|
72
63
|
Benchmark.bmbm 30 do |results|
|
73
64
|
string = 'Ruby is awesome!'
|
74
|
-
|
65
|
+
|
75
66
|
results.report 'cycle' do
|
76
67
|
n.times do
|
77
68
|
colors.next
|
@@ -83,16 +74,16 @@ task :benchmark do
|
|
83
74
|
Paint[string, colors.next]
|
84
75
|
end
|
85
76
|
end
|
86
|
-
|
77
|
+
|
87
78
|
results.report 'term-ansicolor' do
|
88
79
|
n.times do
|
89
80
|
string.send(colors.next)
|
90
81
|
end
|
91
82
|
end
|
92
|
-
|
83
|
+
|
93
84
|
results.report 'rainbow' do
|
94
85
|
n.times do
|
95
|
-
string.color(colors.next)
|
86
|
+
Rainbow(string).color(colors.next)
|
96
87
|
end
|
97
88
|
end
|
98
89
|
|
@@ -107,10 +98,10 @@ task :benchmark do
|
|
107
98
|
string.send(colors.next).send("on_#{colors.next}")
|
108
99
|
end
|
109
100
|
end
|
110
|
-
|
101
|
+
|
111
102
|
results.report 'rainbow with background' do
|
112
103
|
n.times do
|
113
|
-
string.color(colors.next).background(colors.next)
|
104
|
+
Rainbow(string).color(colors.next).background(colors.next)
|
114
105
|
end
|
115
106
|
end
|
116
107
|
end
|
data/lib/paint.rb
CHANGED
@@ -7,7 +7,7 @@ module Paint
|
|
7
7
|
autoload :RGB_COLORS_ANSI, 'paint/rgb_colors_ansi'
|
8
8
|
|
9
9
|
# Important purpose
|
10
|
-
NOTHING = "\033[0m"
|
10
|
+
NOTHING = "\033[0m".freeze
|
11
11
|
|
12
12
|
# Basic colors (often, the color differs when using the bright effect)
|
13
13
|
# Final color will be 30 + value for foreground and 40 + value for background
|
@@ -21,7 +21,7 @@ module Paint
|
|
21
21
|
:cyan => 6,
|
22
22
|
:white => 7,
|
23
23
|
:default => 9,
|
24
|
-
}
|
24
|
+
}.freeze
|
25
25
|
|
26
26
|
# Terminal effects - most of them are not supported ;)
|
27
27
|
# See http://en.wikipedia.org/wiki/ANSI_escape_code
|
@@ -52,33 +52,33 @@ module Paint
|
|
52
52
|
:overline => 53,
|
53
53
|
:frame_off => 54, :encircle_off => 54,
|
54
54
|
:overline_off => 55,
|
55
|
-
}
|
55
|
+
}.freeze
|
56
56
|
|
57
57
|
# cache
|
58
58
|
ANSI_COLORS_FOREGROUND = {
|
59
|
-
:black =>
|
60
|
-
:red =>
|
61
|
-
:green =>
|
62
|
-
:yellow =>
|
63
|
-
:blue =>
|
64
|
-
:magenta =>
|
65
|
-
:cyan =>
|
66
|
-
:white =>
|
67
|
-
:default =>
|
68
|
-
}
|
59
|
+
:black => 30,
|
60
|
+
:red => 31,
|
61
|
+
:green => 32,
|
62
|
+
:yellow => 33,
|
63
|
+
:blue => 34,
|
64
|
+
:magenta => 35,
|
65
|
+
:cyan => 36,
|
66
|
+
:white => 37,
|
67
|
+
:default => 39,
|
68
|
+
}.freeze
|
69
69
|
|
70
70
|
# cache
|
71
71
|
ANSI_COLORS_BACKGROUND = {
|
72
|
-
:black =>
|
73
|
-
:red =>
|
74
|
-
:green =>
|
75
|
-
:yellow =>
|
76
|
-
:blue =>
|
77
|
-
:magenta =>
|
78
|
-
:cyan =>
|
79
|
-
:white =>
|
80
|
-
:default =>
|
81
|
-
}
|
72
|
+
:black => 40,
|
73
|
+
:red => 41,
|
74
|
+
:green => 42,
|
75
|
+
:yellow => 43,
|
76
|
+
:blue => 44,
|
77
|
+
:magenta => 45,
|
78
|
+
:cyan => 46,
|
79
|
+
:white => 47,
|
80
|
+
:default => 49,
|
81
|
+
}.freeze
|
82
82
|
|
83
83
|
class << self
|
84
84
|
# Takes a string and color options and colorizes the string
|
@@ -10,7 +10,7 @@ module Paint
|
|
10
10
|
:magenta => [205,0,205],
|
11
11
|
:cyan => [0,205,205],
|
12
12
|
:white => [229,229,229],
|
13
|
-
}
|
13
|
+
}.each { |k, v| v.freeze }.freeze
|
14
14
|
|
15
15
|
# A list of color names for standard bright ansi colors, needed for 16 color fallback mode
|
16
16
|
# See http://en.wikipedia.org/wiki/ANSI_escape_code#Colors
|
@@ -23,5 +23,5 @@ module Paint
|
|
23
23
|
:magenta => [255,0,255],
|
24
24
|
:cyan => [0,255,255],
|
25
25
|
:white => [255,255,255],
|
26
|
-
}
|
26
|
+
}.each { |k, v| v.freeze }.freeze
|
27
27
|
end
|
data/lib/paint/shortcuts.rb
CHANGED
@@ -23,7 +23,14 @@ module Paint
|
|
23
23
|
# mod.define_singleton_method :method_missing do |color_name, *args|
|
24
24
|
eigen_mod.send:define_method, :method_missing do |color_name, *args|
|
25
25
|
if color_code = shortcuts[color_name]
|
26
|
-
|
26
|
+
string = Array(args).join
|
27
|
+
return string if Paint.mode.zero?
|
28
|
+
|
29
|
+
if args.empty?
|
30
|
+
color_code
|
31
|
+
else
|
32
|
+
color_code + string + NOTHING
|
33
|
+
end
|
27
34
|
else
|
28
35
|
nil
|
29
36
|
end
|
@@ -37,7 +44,14 @@ module Paint
|
|
37
44
|
eigen_mod.send:define_method, :included do |_|
|
38
45
|
shortcuts.each{ |color_name, color_code|
|
39
46
|
define_method color_name do |*args|
|
40
|
-
|
47
|
+
string = Array(args).join
|
48
|
+
return string if Paint.mode.zero?
|
49
|
+
|
50
|
+
if args.empty?
|
51
|
+
color_code
|
52
|
+
else
|
53
|
+
color_code + string + NOTHING
|
54
|
+
end
|
41
55
|
end
|
42
56
|
}
|
43
57
|
private(*shortcuts.keys) unless shortcuts.empty?
|
@@ -50,7 +64,11 @@ module Paint
|
|
50
64
|
eigen_string.send:define_method, :included do |_|
|
51
65
|
shortcuts.each{ |color_name, color_code|
|
52
66
|
define_method color_name do
|
53
|
-
|
67
|
+
if Paint.mode.zero?
|
68
|
+
to_s
|
69
|
+
else
|
70
|
+
color_code + to_s + NOTHING
|
71
|
+
end
|
54
72
|
end
|
55
73
|
}
|
56
74
|
end
|
@@ -66,7 +84,13 @@ module Paint
|
|
66
84
|
|
67
85
|
eigen_prefix.send:define_method, :included do |_|
|
68
86
|
define_method prefix_name.to_s.gsub(/[A-Z]/,'_\0').downcase[1..-1].to_sym do |color_name|
|
69
|
-
|
87
|
+
if color_code = shortcuts[color_name]
|
88
|
+
return to_s if Paint.mode.zero?
|
89
|
+
|
90
|
+
color_code + to_s + NOTHING
|
91
|
+
else
|
92
|
+
nil
|
93
|
+
end
|
70
94
|
end
|
71
95
|
end
|
72
96
|
|
data/lib/paint/version.rb
CHANGED
data/paint.gemspec
CHANGED
@@ -12,20 +12,11 @@ Gem::Specification.new do |s|
|
|
12
12
|
s.description = "Terminal painter / no string extensions / 256 color support / effect support / define custom shortcuts / basic usage: Paint['string', :red, :bright]"
|
13
13
|
s.required_ruby_version = '>= 1.8.7'
|
14
14
|
s.files = Dir.glob(%w[{lib,test,spec}/**/*.rb bin/* [A-Z]*.{txt,rdoc} ext/**/*.{rb,c}]) + %w{Rakefile paint.gemspec}
|
15
|
-
s.extra_rdoc_files = ["README.rdoc", "LICENSE.txt"]
|
15
|
+
s.extra_rdoc_files = ["README.rdoc", "MIT-LICENSE.txt"]
|
16
16
|
s.license = 'MIT'
|
17
|
-
|
18
|
-
s.add_development_dependency 'rspec
|
17
|
+
|
18
|
+
s.add_development_dependency 'rspec', '>= 3'
|
19
19
|
s.add_development_dependency 'rake'
|
20
20
|
s.add_development_dependency 'rainbow', '1.1.4'
|
21
21
|
s.add_development_dependency 'term-ansicolor'
|
22
|
-
|
23
|
-
len = s.homepage.size
|
24
|
-
s.post_install_message = \
|
25
|
-
(" ┌── " + "info ".ljust(len-2,'%') + "─┐\n" +
|
26
|
-
" J-_-L │ " + s.homepage + " │\n" +
|
27
|
-
" ├── " + "usage ".ljust(len-2,'%') + "─┤\n" +
|
28
|
-
" │ " + "require 'paint'".ljust(len,' ') + " │\n" +
|
29
|
-
" │ " + "puts Paint['J-_-L', :red] # \e[31mJ-_-L\e[0m".ljust(len,' ') + " │\n" +
|
30
|
-
" └─" + '─'*len + "─┘").gsub('%', '─') # 1.8 workaround
|
31
22
|
end
|
@@ -1,7 +1,5 @@
|
|
1
1
|
require File.dirname(__FILE__) + '/spec_helper'
|
2
2
|
|
3
|
-
# TODO fix include specs, probably failing because of some rspec voodoo
|
4
|
-
|
5
3
|
describe 'Paint::SHORTCUTS' do
|
6
4
|
before do
|
7
5
|
Paint::SHORTCUTS[:example] = {
|
@@ -9,32 +7,37 @@ describe 'Paint::SHORTCUTS' do
|
|
9
7
|
:red => Paint.color(:red, :bright),
|
10
8
|
:title => Paint.color(:underline),
|
11
9
|
}
|
10
|
+
|
11
|
+
Paint.mode = 256
|
12
12
|
end
|
13
13
|
|
14
14
|
context 'Paint::Example.method_missing' do
|
15
15
|
it 'returns a color defined in the SHORTCUTS hash under the :example key' do
|
16
|
-
Paint::Example.red == "\e[
|
16
|
+
Paint::Example.red.should == "\e[31;1m"
|
17
17
|
end
|
18
18
|
|
19
19
|
it 'returns a color defined in the SHORTCUTS hash under the :some_module key; method takes string to colorize' do
|
20
|
-
Paint::Example.red
|
20
|
+
Paint::Example.red('J-_-L').should == "\e[31;1mJ-_-L\e[0m"
|
21
21
|
end
|
22
|
-
end
|
23
22
|
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
end
|
23
|
+
context 'Paint.mode is 0' do
|
24
|
+
before do
|
25
|
+
Paint.mode = 0
|
26
|
+
end
|
29
27
|
|
28
|
+
it "doesn't colorize a string passed into a color defined in the SHORTCUTS hash under the :some_module key" do
|
29
|
+
Paint::Example.red('J-_-L').should == 'J-_-L'
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
30
33
|
|
31
34
|
context 'include Paint::Example::String' do
|
32
35
|
it 'adds shortcuts methods that colorize self' do
|
33
|
-
class MyString < String
|
36
|
+
class MyString < String
|
34
37
|
include Paint::Example::String
|
35
38
|
end
|
36
39
|
|
37
|
-
|
40
|
+
MyString.new("J-_-L").red.should == "\e[31;1mJ-_-L\e[0m"
|
38
41
|
end
|
39
42
|
|
40
43
|
it 'adds shortcuts methods that colorize self (also works for non-String classes by calling to_s)' do
|
@@ -42,7 +45,8 @@ describe 'Paint::SHORTCUTS' do
|
|
42
45
|
class Integer
|
43
46
|
include Paint::Example::String
|
44
47
|
end
|
45
|
-
|
48
|
+
|
49
|
+
123.red.should == "\e[31;1m123\e[0m"
|
46
50
|
end
|
47
51
|
end
|
48
52
|
|
@@ -51,7 +55,8 @@ describe 'Paint::SHORTCUTS' do
|
|
51
55
|
class Object
|
52
56
|
include Paint::Example::Prefix::ExampleName
|
53
57
|
end
|
54
|
-
|
58
|
+
|
59
|
+
"Ruby".example_name(:red).should == "\e[31;1mRuby\e[0m"
|
55
60
|
end
|
56
61
|
end
|
57
62
|
end
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: paint
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.9.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jan Lelis
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-11-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|
@@ -16,28 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '3'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: rspec-core
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - ">="
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: '0'
|
34
|
-
type: :development
|
35
|
-
prerelease: false
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - ">="
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version: '0'
|
26
|
+
version: '3'
|
41
27
|
- !ruby/object:Gem::Dependency
|
42
28
|
name: rake
|
43
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -87,10 +73,10 @@ executables: []
|
|
87
73
|
extensions: []
|
88
74
|
extra_rdoc_files:
|
89
75
|
- README.rdoc
|
90
|
-
- LICENSE.txt
|
76
|
+
- MIT-LICENSE.txt
|
91
77
|
files:
|
92
78
|
- CHANGELOG.rdoc
|
93
|
-
- LICENSE.txt
|
79
|
+
- MIT-LICENSE.txt
|
94
80
|
- README.rdoc
|
95
81
|
- Rakefile
|
96
82
|
- lib/paint.rb
|
@@ -110,9 +96,7 @@ homepage: https://github.com/janlelis/paint
|
|
110
96
|
licenses:
|
111
97
|
- MIT
|
112
98
|
metadata: {}
|
113
|
-
post_install_message:
|
114
|
-
│\n ├── usage ──────────────────────────┤\n │ require 'paint' │\n
|
115
|
-
\ │ puts Paint['J-_-L', :red] # \e[31mJ-_-L\e[0m │\n └───────────────────────────────────┘"
|
99
|
+
post_install_message:
|
116
100
|
rdoc_options: []
|
117
101
|
require_paths:
|
118
102
|
- lib
|
@@ -128,7 +112,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
128
112
|
version: '0'
|
129
113
|
requirements: []
|
130
114
|
rubyforge_project:
|
131
|
-
rubygems_version: 2.2.
|
115
|
+
rubygems_version: 2.2.2
|
132
116
|
signing_key:
|
133
117
|
specification_version: 4
|
134
118
|
summary: Terminal painter!
|