color_echo 0.8.0 → 0.9.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/README.md +34 -4
- data/bin/color_echo +21 -13
- data/lib/color_echo.rb +5 -18
- data/lib/color_echo/const.rb +4 -4
- data/lib/color_echo/functions.rb +177 -0
- data/lib/color_echo/get.rb +14 -0
- data/lib/color_echo/internal.rb +186 -0
- data/lib/color_echo/override.rb +4 -0
- data/lib/color_echo/variables.rb +24 -11
- metadata +6 -4
- data/lib/color_echo/module_functions.rb +0 -374
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 71656796cab59b1ebe1d27d680e2ce4c30b7b604
|
|
4
|
+
data.tar.gz: 2406fffc8c2a85628cfc797da963bc8bf373e705
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 9c955163de5d79d247474036f1a53608376e9e9383322bbc5b672ec8dada2618c32ed444f514c186f18fe4caed9f503780dae04cef29b66c342a8b1a0d3fa46c
|
|
7
|
+
data.tar.gz: 4ae8cca7ff900843822a143ab41b9d8dc38321dd948d011514010144afa9bd138366516995ffe5ea129ba5ec0c2003fc601526e0349bc27bc8a8489a560cc687
|
data/README.md
CHANGED
|
@@ -3,8 +3,8 @@ Decorate the command line output with ANSI escape sequence.
|
|
|
3
3
|
String that is output by "print, puts, p" method is decorated.
|
|
4
4
|
It is also can to decorate only your specified words!
|
|
5
5
|
|
|
6
|
-
Version: 0.
|
|
7
|
-
Compliant Rubys Version:
|
|
6
|
+
Version: 0.9.0
|
|
7
|
+
Compliant Rubys Version: 2.0.0, 2.1.0 (for Linux)
|
|
8
8
|
License: MIT
|
|
9
9
|
Gems repository: http://rubygems.org/gems/color_echo
|
|
10
10
|
|
|
@@ -41,6 +41,26 @@ EOS
|
|
|
41
41
|

|
|
42
42
|
|
|
43
43
|
|
|
44
|
+
|
|
45
|
+
## Do you want to return words with the escape sequence?
|
|
46
|
+
|
|
47
|
+
Please write `require "color_echo/get"` rather than `require "color_echo"`.
|
|
48
|
+
```ruby
|
|
49
|
+
require "color_echo/get"
|
|
50
|
+
|
|
51
|
+
greet = CE.fg(:yellow).get("Hello")
|
|
52
|
+
name = CE.ch(:h_blue, :gray).get("Foo")
|
|
53
|
+
myname = CE.tx(:underscore).rainbow.get("Bar")
|
|
54
|
+
|
|
55
|
+
puts greet + ", " + name + "!"
|
|
56
|
+
puts "My name is " + myname
|
|
57
|
+
|
|
58
|
+
output = CE.fg(:blue).pickup(/color$/, :index199).pickup(/^color/, :h_green).get("color color color")
|
|
59
|
+
puts "output is -> " + output
|
|
60
|
+
```
|
|
61
|
+

|
|
62
|
+
|
|
63
|
+
|
|
44
64
|
## You can run on the command line
|
|
45
65
|
<pre>
|
|
46
66
|
* Usage
|
|
@@ -134,7 +154,7 @@ ex.) CE.ch_bg :white #=> background color will be changed white
|
|
|
134
154
|
#### CE.ch_tx(text_attribute)
|
|
135
155
|
Change the text attribute to the your specified decoration.
|
|
136
156
|
- Alias -> tx
|
|
137
|
-
- Parameter
|
|
157
|
+
- Parameter text_attribute -> symbol or array of them
|
|
138
158
|
- Return -> self
|
|
139
159
|
|
|
140
160
|
* symbol list of text attribute:
|
|
@@ -180,7 +200,7 @@ Reset automatically after once output.
|
|
|
180
200
|
|
|
181
201
|
#### CE.times(cnt)
|
|
182
202
|
Reset automatically after cnt times output.
|
|
183
|
-
- Parameter cnt ->
|
|
203
|
+
- Parameter cnt -> integer
|
|
184
204
|
- Return -> self
|
|
185
205
|
|
|
186
206
|
|
|
@@ -205,7 +225,14 @@ Force ignore the function of this library.
|
|
|
205
225
|
|
|
206
226
|
#### CE.rainbow
|
|
207
227
|
Text color will change to rainbow color.
|
|
228
|
+
- Return -> self
|
|
229
|
+
|
|
208
230
|
|
|
231
|
+
#### CE.get(text)
|
|
232
|
+
Decorate and return argument with ANSI escape sequence.
|
|
233
|
+
If you want to use this module function; You have to require "color_echo/get" only!
|
|
234
|
+
- Parameter text -> string
|
|
235
|
+
- Return -> string
|
|
209
236
|
|
|
210
237
|
|
|
211
238
|
### Example
|
|
@@ -294,6 +321,9 @@ puts "Disable rainbow mode."
|
|
|
294
321
|

|
|
295
322
|
|
|
296
323
|
## Release Note
|
|
324
|
+
* v0.9.0, 2014-01-19
|
|
325
|
+
* Added a mode to receive as the words with ANSI escape sequence; without output to display.
|
|
326
|
+
|
|
297
327
|
* v0.8.0, 2014-01-14
|
|
298
328
|
* Changed for the specified arguments of reset method.
|
|
299
329
|
* Fixed small bugs.
|
data/bin/color_echo
CHANGED
|
@@ -33,7 +33,7 @@ def usage
|
|
|
33
33
|
puts padding + "--index_list, -l"
|
|
34
34
|
puts padding * 2 + "Display color index list that can to specify." + $/ + $/
|
|
35
35
|
|
|
36
|
-
exit
|
|
36
|
+
exit 0
|
|
37
37
|
end
|
|
38
38
|
|
|
39
39
|
def display_color_index
|
|
@@ -61,6 +61,8 @@ def display_color_index
|
|
|
61
61
|
end
|
|
62
62
|
end
|
|
63
63
|
CE.off
|
|
64
|
+
|
|
65
|
+
exit 0
|
|
64
66
|
end
|
|
65
67
|
|
|
66
68
|
def display_symbol_list
|
|
@@ -120,24 +122,30 @@ def display_symbol_list
|
|
|
120
122
|
end
|
|
121
123
|
|
|
122
124
|
print $/
|
|
123
|
-
end
|
|
124
125
|
|
|
126
|
+
exit 0
|
|
127
|
+
end
|
|
125
128
|
|
|
126
129
|
usage if ARGV.size != 1
|
|
127
130
|
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
+
require "optparse"
|
|
132
|
+
opt = OptionParser.new
|
|
133
|
+
|
|
134
|
+
opt.on("-h") { usage }
|
|
135
|
+
opt.on("-v") { puts CE::VERSION; exit 0 }
|
|
136
|
+
opt.on("-s", "--symbol_list") { display_symbol_list }
|
|
137
|
+
opt.on("-l", "--index_list") { display_color_index }
|
|
131
138
|
|
|
132
|
-
|
|
133
|
-
|
|
139
|
+
begin
|
|
140
|
+
opt.parse!(ARGV)
|
|
134
141
|
|
|
135
|
-
|
|
136
|
-
|
|
142
|
+
rescue OptionParser::InvalidOption => err
|
|
143
|
+
mess = "[OPTION ERROR] Invalid option ->"
|
|
144
|
+
err.args.each do |op|
|
|
145
|
+
mess += %( '#{op}')
|
|
146
|
+
end
|
|
147
|
+
mess += " (OptionParser::InvalidOption)"
|
|
148
|
+
warn mess + $/ + $/
|
|
137
149
|
|
|
138
|
-
else
|
|
139
150
|
usage
|
|
140
151
|
end
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
data/lib/color_echo.rb
CHANGED
|
@@ -1,20 +1,7 @@
|
|
|
1
1
|
# color_echo
|
|
2
|
-
#
|
|
3
|
-
#
|
|
4
|
-
#
|
|
5
|
-
# Required StringIO.
|
|
6
|
-
#
|
|
7
|
-
begin
|
|
8
|
-
require "stringio"
|
|
9
|
-
rescue LoadError
|
|
10
|
-
warn "color_echo required 'stringio'."
|
|
11
|
-
end
|
|
2
|
+
# Decorate the command line output with ANSI escape sequence.
|
|
3
|
+
# String that is output by "print, puts, p" method is decorated.
|
|
4
|
+
# It is also can to decorate only your specified words!
|
|
12
5
|
|
|
13
|
-
require_relative "color_echo/
|
|
14
|
-
require_relative "color_echo/
|
|
15
|
-
require_relative "color_echo/module/background.rb"
|
|
16
|
-
require_relative "color_echo/module/textattr.rb"
|
|
17
|
-
require_relative "color_echo/module/off.rb"
|
|
18
|
-
require_relative "color_echo/variables.rb"
|
|
19
|
-
require_relative "color_echo/module_functions.rb"
|
|
20
|
-
require_relative "color_echo/override.rb"
|
|
6
|
+
require_relative "color_echo/get"
|
|
7
|
+
require_relative "color_echo/override"
|
data/lib/color_echo/const.rb
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
module CE
|
|
2
|
-
LIBS_NAME
|
|
3
|
-
VERSION
|
|
4
|
-
SUMMARY
|
|
5
|
-
DOCS_PAGE
|
|
2
|
+
LIBS_NAME = "color_echo"
|
|
3
|
+
VERSION = "0.9.0"
|
|
4
|
+
SUMMARY = "Decorate the command line output with ANSI escape sequence."
|
|
5
|
+
DOCS_PAGE = "https://github.com/khotta/color_echo"
|
|
6
6
|
DESCRIPTION = <<EOS
|
|
7
7
|
#{SUMMARY}
|
|
8
8
|
String that is output by "print, puts, p" method is decorated.
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
module CE
|
|
2
|
+
# do not allow to use
|
|
3
|
+
# @return void
|
|
4
|
+
def unuse
|
|
5
|
+
@@enable = false
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
# reset code
|
|
9
|
+
# @param scope symbol|array
|
|
10
|
+
# @return self
|
|
11
|
+
def reset(scope=:all)
|
|
12
|
+
if scope.is_a?(Array)
|
|
13
|
+
scopes = scope
|
|
14
|
+
else
|
|
15
|
+
scopes = [scope]
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
scopes.each do |scope|
|
|
19
|
+
case scope
|
|
20
|
+
when :all
|
|
21
|
+
reset_fg
|
|
22
|
+
reset_bg
|
|
23
|
+
reset_tx
|
|
24
|
+
reset_pickup
|
|
25
|
+
reset_rainbow
|
|
26
|
+
when :fg
|
|
27
|
+
reset_fg
|
|
28
|
+
when :bg
|
|
29
|
+
reset_bg
|
|
30
|
+
when :tx
|
|
31
|
+
reset_tx
|
|
32
|
+
when :pickup
|
|
33
|
+
reset_pickup
|
|
34
|
+
when :rainbow
|
|
35
|
+
reset_rainbow
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
return self
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
# auto off until output set count
|
|
43
|
+
# @params int cnt
|
|
44
|
+
# @return self
|
|
45
|
+
def times(cnt)
|
|
46
|
+
@@cnt_limit = cnt
|
|
47
|
+
return self
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def once
|
|
51
|
+
times(1)
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
# @param symbol name
|
|
55
|
+
# @return self
|
|
56
|
+
def ch_fg(name)
|
|
57
|
+
return nil if !name.is_a?(Symbol)
|
|
58
|
+
|
|
59
|
+
@@rainbow = false if @@rainbow
|
|
60
|
+
@@code_fg_color = convert_to_code("ForeGround", name)
|
|
61
|
+
|
|
62
|
+
return self
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
# @param symbol name
|
|
66
|
+
# @return self
|
|
67
|
+
def ch_bg(name)
|
|
68
|
+
return nil if !name.is_a?(Symbol)
|
|
69
|
+
|
|
70
|
+
@@rainbow = false if @@rainbow
|
|
71
|
+
@@code_bg_color = convert_to_code("BackGround", name)
|
|
72
|
+
|
|
73
|
+
return self
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
# @param array name : Array of Symbols
|
|
77
|
+
# @return self
|
|
78
|
+
def ch_tx(*names)
|
|
79
|
+
@@rainbow = false if @@rainbow
|
|
80
|
+
names = names[0] if names[0].instance_of?(Array)
|
|
81
|
+
|
|
82
|
+
names.each do |name|
|
|
83
|
+
next if !name.is_a?(Symbol)
|
|
84
|
+
@@code_text_attr += convert_to_code("TextAttr", name)
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
return self
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
# @param symbol fg
|
|
91
|
+
# @param symbol bg
|
|
92
|
+
# @param symbol|array txs
|
|
93
|
+
# @return self
|
|
94
|
+
def ch(fg, bg=nil, txs=nil)
|
|
95
|
+
ch_fg(fg)
|
|
96
|
+
ch_bg(bg)
|
|
97
|
+
ch_tx(*txs) # passing expand
|
|
98
|
+
|
|
99
|
+
return self
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
# to decorate only the specified target
|
|
103
|
+
# @param string|regexp|array target
|
|
104
|
+
# @param symbol fg
|
|
105
|
+
# @param symbol bg
|
|
106
|
+
# @param symbol tx
|
|
107
|
+
# @return self
|
|
108
|
+
def pickup(target, fg=:red, bg=nil, *txs)
|
|
109
|
+
key = target.object_id.to_s
|
|
110
|
+
@@pickup_list[key] = {}
|
|
111
|
+
|
|
112
|
+
if target.is_a?(Array)
|
|
113
|
+
@@pickup_list[key][:patterns] = target
|
|
114
|
+
else
|
|
115
|
+
@@pickup_list[key][:patterns] = [target]
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
if fg.instance_of?(Symbol)
|
|
119
|
+
code_fg = convert_to_code("ForeGround", fg)
|
|
120
|
+
else
|
|
121
|
+
code_fg = ""
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
if bg.instance_of?(Symbol)
|
|
125
|
+
code_bg = convert_to_code("BackGround", bg)
|
|
126
|
+
else
|
|
127
|
+
code_bg = ""
|
|
128
|
+
end
|
|
129
|
+
|
|
130
|
+
code_tx = ""
|
|
131
|
+
if txs.size > 0
|
|
132
|
+
txs = txs[0] if txs[0].instance_of?(Array)
|
|
133
|
+
txs.each do |name|
|
|
134
|
+
next if !name.is_a?(Symbol)
|
|
135
|
+
code_tx += convert_to_code("TextAttr", name)
|
|
136
|
+
end
|
|
137
|
+
end
|
|
138
|
+
|
|
139
|
+
@@pickup_list[key][:code] = code_fg + code_bg + code_tx
|
|
140
|
+
|
|
141
|
+
return self
|
|
142
|
+
end
|
|
143
|
+
|
|
144
|
+
# change mode to rainbow
|
|
145
|
+
# @return void
|
|
146
|
+
def rainbow
|
|
147
|
+
@@rainbow = true
|
|
148
|
+
@@code_rainbow = @@code_bg_color + @@code_text_attr
|
|
149
|
+
|
|
150
|
+
return self
|
|
151
|
+
end
|
|
152
|
+
|
|
153
|
+
# get decorated text
|
|
154
|
+
# require "color_echo/get"
|
|
155
|
+
# @param string text
|
|
156
|
+
def get(text)
|
|
157
|
+
if @@allow_output
|
|
158
|
+
warn (%([WARNING] CE.get; If you want to use this module function; You have to require "color_echo/get" only!))
|
|
159
|
+
return text
|
|
160
|
+
end
|
|
161
|
+
|
|
162
|
+
if !text.is_a?(String)
|
|
163
|
+
text = text.to_s
|
|
164
|
+
end
|
|
165
|
+
|
|
166
|
+
@@task.call(text)
|
|
167
|
+
end
|
|
168
|
+
|
|
169
|
+
# method alias
|
|
170
|
+
alias_method :off, :reset
|
|
171
|
+
alias_method :disable, :reset
|
|
172
|
+
alias_method :fg, :ch_fg
|
|
173
|
+
alias_method :bg, :ch_bg
|
|
174
|
+
alias_method :tx, :ch_tx
|
|
175
|
+
|
|
176
|
+
extend self
|
|
177
|
+
end
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
begin
|
|
2
|
+
require "stringio"
|
|
3
|
+
rescue LoadError
|
|
4
|
+
warn "color_echo required 'stringio'."
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
require_relative "const"
|
|
8
|
+
require_relative "variables"
|
|
9
|
+
require_relative "module/foreground"
|
|
10
|
+
require_relative "module/background"
|
|
11
|
+
require_relative "module/textattr"
|
|
12
|
+
require_relative "module/off"
|
|
13
|
+
require_relative "functions"
|
|
14
|
+
require_relative "internal"
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
module CE
|
|
2
|
+
# is allow to use?
|
|
3
|
+
# @return bool
|
|
4
|
+
def enable?
|
|
5
|
+
return @@enable
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
# is allow to use? and is set code?
|
|
9
|
+
# @return bool
|
|
10
|
+
def available?
|
|
11
|
+
return @@enable && isset?
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
# is set code?
|
|
15
|
+
# @return bool
|
|
16
|
+
def isset?
|
|
17
|
+
return get_start_code != "" || @@pickup_list.size > 0 || @@rainbow
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
# reset foreground code
|
|
21
|
+
# @return self
|
|
22
|
+
def reset_fg
|
|
23
|
+
@@code_fg_color = ""
|
|
24
|
+
return self
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
# reset background code
|
|
28
|
+
# @return self
|
|
29
|
+
def reset_bg
|
|
30
|
+
@@code_bg_color = ""
|
|
31
|
+
return self
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
# reset text attr code
|
|
35
|
+
# @return self
|
|
36
|
+
def reset_tx
|
|
37
|
+
@@code_text_attr = ""
|
|
38
|
+
return self
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
# reset pickup code
|
|
42
|
+
# @return self
|
|
43
|
+
def reset_pickup
|
|
44
|
+
@@pickup_list = {}
|
|
45
|
+
return self
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
# reset and off raubow mode
|
|
49
|
+
# @return self
|
|
50
|
+
def reset_rainbow
|
|
51
|
+
@@code_rainbow = ""
|
|
52
|
+
@@rainbow = false
|
|
53
|
+
return self
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
# reset all state of code
|
|
57
|
+
# @return self
|
|
58
|
+
def reset_all
|
|
59
|
+
reset_fg
|
|
60
|
+
reset_bg
|
|
61
|
+
reset_tx
|
|
62
|
+
reset_pickup
|
|
63
|
+
reset_rainbow
|
|
64
|
+
return self
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
# return start escape sequence code
|
|
68
|
+
# @return string
|
|
69
|
+
def get_start_code
|
|
70
|
+
if @@rainbow
|
|
71
|
+
return @@code_rainbow
|
|
72
|
+
else
|
|
73
|
+
return @@code_fg_color + @@code_bg_color + @@code_text_attr
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
# @return String
|
|
78
|
+
def get_reset_code
|
|
79
|
+
return self::Off::ALL
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
# add reset & start code to line feed code
|
|
83
|
+
# @param string input
|
|
84
|
+
def add_reset_line_feed(input)
|
|
85
|
+
input.gsub!(/#{$/}/, get_reset_code + $/ + get_start_code)
|
|
86
|
+
input += get_reset_code
|
|
87
|
+
return input
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
# add code to be a rainbow color
|
|
91
|
+
# @param string text
|
|
92
|
+
# @return string
|
|
93
|
+
def add_rainbow(text)
|
|
94
|
+
cnt = 0
|
|
95
|
+
output = get_start_code
|
|
96
|
+
|
|
97
|
+
text.each_char do |char|
|
|
98
|
+
if char == $/
|
|
99
|
+
output += get_reset_code + $/ + get_start_code
|
|
100
|
+
next
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
case cnt
|
|
104
|
+
when 0
|
|
105
|
+
output += ForeGround::RED + char + Off::ALL + get_start_code
|
|
106
|
+
when 1
|
|
107
|
+
output += ForeGround::GREEN + char + Off::ALL + get_start_code
|
|
108
|
+
when 2
|
|
109
|
+
output += ForeGround::YELLOW + char + Off::ALL + get_start_code
|
|
110
|
+
when 3
|
|
111
|
+
output += ForeGround::BLUE + char + Off::ALL + get_start_code
|
|
112
|
+
when 4
|
|
113
|
+
output += ForeGround::MAGENTA + char + Off::ALL + get_start_code
|
|
114
|
+
when 5
|
|
115
|
+
output += ForeGround::CYAN + char + Off::ALL + get_start_code
|
|
116
|
+
when 6
|
|
117
|
+
output += ForeGround::WHITE + char + Off::ALL + get_start_code
|
|
118
|
+
end
|
|
119
|
+
cnt += 1
|
|
120
|
+
cnt = 0 if cnt >= 7
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
output += get_reset_code
|
|
124
|
+
|
|
125
|
+
return output
|
|
126
|
+
end
|
|
127
|
+
|
|
128
|
+
# add pickup code
|
|
129
|
+
# @param string text
|
|
130
|
+
# @return string
|
|
131
|
+
def add_pickup_code(text)
|
|
132
|
+
@@pickup_list.each_pair do |key, hash|
|
|
133
|
+
patterns = hash[:patterns]
|
|
134
|
+
code = hash[:code]
|
|
135
|
+
|
|
136
|
+
# repeat to each specified pickup pattern
|
|
137
|
+
patterns.each do |pattern|
|
|
138
|
+
# pattern is Regexp
|
|
139
|
+
if pattern.is_a?(Regexp)
|
|
140
|
+
after_text = ""
|
|
141
|
+
# global match
|
|
142
|
+
(text.scan(pattern)).size.times do
|
|
143
|
+
pattern =~ text
|
|
144
|
+
after_text += $` + code + $& + get_reset_code + get_start_code
|
|
145
|
+
text = $'
|
|
146
|
+
end
|
|
147
|
+
text = after_text + text
|
|
148
|
+
|
|
149
|
+
# pattern is String
|
|
150
|
+
else
|
|
151
|
+
text.gsub!(pattern, code + pattern + get_reset_code + get_start_code)
|
|
152
|
+
end
|
|
153
|
+
end
|
|
154
|
+
end
|
|
155
|
+
|
|
156
|
+
return text
|
|
157
|
+
end
|
|
158
|
+
|
|
159
|
+
# get sequence code by symbol
|
|
160
|
+
# @param string module_name
|
|
161
|
+
# @param symbol name
|
|
162
|
+
# @return string
|
|
163
|
+
def convert_to_code(module_name, name)
|
|
164
|
+
return "" if (name == nil || name == "")
|
|
165
|
+
|
|
166
|
+
begin
|
|
167
|
+
cname = name.to_s.swapcase
|
|
168
|
+
|
|
169
|
+
# specified color index
|
|
170
|
+
if cname.index("INDEX")
|
|
171
|
+
num = cname.sub("INDEX", "").to_i - 1
|
|
172
|
+
return eval(%{#{module_name}::INDEX}) + num.to_s + "m"
|
|
173
|
+
end
|
|
174
|
+
|
|
175
|
+
code = eval(%{#{module_name}::#{cname}})
|
|
176
|
+
rescue NameError
|
|
177
|
+
raise(NameError ,%{:#{name} is not defined! Please check reference.})
|
|
178
|
+
end
|
|
179
|
+
return code
|
|
180
|
+
end
|
|
181
|
+
|
|
182
|
+
# @return proc
|
|
183
|
+
def task
|
|
184
|
+
return @@task
|
|
185
|
+
end
|
|
186
|
+
end
|
data/lib/color_echo/override.rb
CHANGED
data/lib/color_echo/variables.rb
CHANGED
|
@@ -8,10 +8,14 @@ module CE
|
|
|
8
8
|
@@rainbow = false
|
|
9
9
|
@@pickup_list = {}
|
|
10
10
|
@@cnt_limit = 0
|
|
11
|
+
@@allow_output = false
|
|
11
12
|
|
|
12
13
|
@@print = method :print
|
|
13
14
|
@@p = method :p
|
|
14
15
|
@@puts = method :puts
|
|
16
|
+
@@get = lambda do |text|
|
|
17
|
+
print text
|
|
18
|
+
end
|
|
15
19
|
|
|
16
20
|
@@task = lambda do |*arg|
|
|
17
21
|
if available?
|
|
@@ -27,7 +31,7 @@ module CE
|
|
|
27
31
|
|
|
28
32
|
#is_hit_pickup = false
|
|
29
33
|
|
|
30
|
-
# output
|
|
34
|
+
# get output text
|
|
31
35
|
if @@rainbow
|
|
32
36
|
output = add_rainbow(strio.string)
|
|
33
37
|
else
|
|
@@ -47,21 +51,30 @@ module CE
|
|
|
47
51
|
output = add_reset_line_feed(output)
|
|
48
52
|
end
|
|
49
53
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
@@cnt_limit
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
54
|
+
# output to STDOUT
|
|
55
|
+
if @@allow_output
|
|
56
|
+
$stdout.print output
|
|
57
|
+
# auto off
|
|
58
|
+
if @@cnt_limit > 0
|
|
59
|
+
@@cnt_limit -= 1
|
|
60
|
+
# to reset
|
|
61
|
+
if @@cnt_limit == 0
|
|
62
|
+
reset [:fg, :bg, :tx, :rainbow]
|
|
63
|
+
end
|
|
58
64
|
end
|
|
65
|
+
else
|
|
66
|
+
reset
|
|
67
|
+
return output
|
|
59
68
|
end
|
|
60
69
|
|
|
61
70
|
# no available "color echo"
|
|
62
71
|
else
|
|
63
|
-
|
|
64
|
-
|
|
72
|
+
if @@allow_output
|
|
73
|
+
# call original method
|
|
74
|
+
eval("@@#{caller_locations(2).first.label}").call(*arg)
|
|
75
|
+
else
|
|
76
|
+
return arg
|
|
77
|
+
end
|
|
65
78
|
end
|
|
66
79
|
end
|
|
67
80
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: color_echo
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.9.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- khotta
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2015-01-
|
|
11
|
+
date: 2015-01-19 00:00:00.000000000 Z
|
|
12
12
|
dependencies: []
|
|
13
13
|
description: |
|
|
14
14
|
Decorate the command line output with ANSI escape sequence.
|
|
@@ -25,11 +25,13 @@ files:
|
|
|
25
25
|
- bin/color_echo
|
|
26
26
|
- lib/color_echo.rb
|
|
27
27
|
- lib/color_echo/const.rb
|
|
28
|
+
- lib/color_echo/functions.rb
|
|
29
|
+
- lib/color_echo/get.rb
|
|
30
|
+
- lib/color_echo/internal.rb
|
|
28
31
|
- lib/color_echo/module/background.rb
|
|
29
32
|
- lib/color_echo/module/foreground.rb
|
|
30
33
|
- lib/color_echo/module/off.rb
|
|
31
34
|
- lib/color_echo/module/textattr.rb
|
|
32
|
-
- lib/color_echo/module_functions.rb
|
|
33
35
|
- lib/color_echo/override.rb
|
|
34
36
|
- lib/color_echo/variables.rb
|
|
35
37
|
homepage: https://github.com/khotta/color_echo
|
|
@@ -48,7 +50,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
48
50
|
requirements:
|
|
49
51
|
- - ">="
|
|
50
52
|
- !ruby/object:Gem::Version
|
|
51
|
-
version:
|
|
53
|
+
version: 2.0.0
|
|
52
54
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
53
55
|
requirements:
|
|
54
56
|
- - ">="
|
|
@@ -1,374 +0,0 @@
|
|
|
1
|
-
module CE
|
|
2
|
-
# is allow to use?
|
|
3
|
-
# @return bool
|
|
4
|
-
def enable?
|
|
5
|
-
return @@enable
|
|
6
|
-
end
|
|
7
|
-
|
|
8
|
-
# is allow to use? and is set code?
|
|
9
|
-
# @return bool
|
|
10
|
-
def available?
|
|
11
|
-
return @@enable && isset?
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
# is set code?
|
|
15
|
-
# @return bool
|
|
16
|
-
def isset?
|
|
17
|
-
return get_start_code != "" || @@pickup_list.size > 0 || @@rainbow
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
# do not allow to use
|
|
21
|
-
# @return void
|
|
22
|
-
def unuse
|
|
23
|
-
@@enable = false
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
# reset code
|
|
27
|
-
# @param scope symbol|array
|
|
28
|
-
# @return self
|
|
29
|
-
def reset(scope=:all)
|
|
30
|
-
if scope.is_a?(Array)
|
|
31
|
-
scopes = scope
|
|
32
|
-
else
|
|
33
|
-
scopes = [scope]
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
scopes.each do |scope|
|
|
37
|
-
case scope
|
|
38
|
-
when :all
|
|
39
|
-
reset_fg
|
|
40
|
-
reset_bg
|
|
41
|
-
reset_tx
|
|
42
|
-
reset_pickup
|
|
43
|
-
reset_rainbow
|
|
44
|
-
when :fg
|
|
45
|
-
reset_fg
|
|
46
|
-
when :bg
|
|
47
|
-
reset_bg
|
|
48
|
-
when :tx
|
|
49
|
-
reset_tx
|
|
50
|
-
when :pickup
|
|
51
|
-
reset_pickup
|
|
52
|
-
when :rainbow
|
|
53
|
-
reset_rainbow
|
|
54
|
-
end
|
|
55
|
-
end
|
|
56
|
-
|
|
57
|
-
return self
|
|
58
|
-
end
|
|
59
|
-
|
|
60
|
-
# reset foreground code
|
|
61
|
-
# @return self
|
|
62
|
-
def reset_fg
|
|
63
|
-
@@code_fg_color = ""
|
|
64
|
-
return self
|
|
65
|
-
end
|
|
66
|
-
|
|
67
|
-
# reset background code
|
|
68
|
-
# @return self
|
|
69
|
-
def reset_bg
|
|
70
|
-
@@code_bg_color = ""
|
|
71
|
-
return self
|
|
72
|
-
end
|
|
73
|
-
|
|
74
|
-
# reset text attr code
|
|
75
|
-
# @return self
|
|
76
|
-
def reset_tx
|
|
77
|
-
@@code_text_attr = ""
|
|
78
|
-
return self
|
|
79
|
-
end
|
|
80
|
-
|
|
81
|
-
# reset pickup code
|
|
82
|
-
# @return self
|
|
83
|
-
def reset_pickup
|
|
84
|
-
@@pickup_list = {}
|
|
85
|
-
return self
|
|
86
|
-
end
|
|
87
|
-
|
|
88
|
-
# reset and off raubow mode
|
|
89
|
-
# @return self
|
|
90
|
-
def reset_rainbow
|
|
91
|
-
@@code_rainbow = ""
|
|
92
|
-
@@rainbow = false
|
|
93
|
-
return self
|
|
94
|
-
end
|
|
95
|
-
|
|
96
|
-
# reset all state of code
|
|
97
|
-
# @return self
|
|
98
|
-
def reset_all
|
|
99
|
-
reset_fg
|
|
100
|
-
reset_bg
|
|
101
|
-
reset_tx
|
|
102
|
-
reset_pickup
|
|
103
|
-
reset_rainbow
|
|
104
|
-
return self
|
|
105
|
-
end
|
|
106
|
-
|
|
107
|
-
# auto off until output set count
|
|
108
|
-
# @params int cnt
|
|
109
|
-
# @return self
|
|
110
|
-
def times(cnt)
|
|
111
|
-
@@cnt_limit = cnt
|
|
112
|
-
return self
|
|
113
|
-
end
|
|
114
|
-
|
|
115
|
-
def once
|
|
116
|
-
times(1)
|
|
117
|
-
end
|
|
118
|
-
|
|
119
|
-
# @param symbol name
|
|
120
|
-
# @return self
|
|
121
|
-
def ch_fg(name)
|
|
122
|
-
return nil if !name.instance_of?(Symbol)
|
|
123
|
-
|
|
124
|
-
@@rainbow = false if @@rainbow
|
|
125
|
-
@@code_fg_color = convert_to_code("ForeGround", name)
|
|
126
|
-
|
|
127
|
-
return self
|
|
128
|
-
end
|
|
129
|
-
|
|
130
|
-
# @param symbol name
|
|
131
|
-
# @return self
|
|
132
|
-
def ch_bg(name)
|
|
133
|
-
return nil if !name.instance_of?(Symbol)
|
|
134
|
-
|
|
135
|
-
@@rainbow = false if @@rainbow
|
|
136
|
-
@@code_bg_color = convert_to_code("BackGround", name)
|
|
137
|
-
|
|
138
|
-
return self
|
|
139
|
-
end
|
|
140
|
-
|
|
141
|
-
# @param array name : Array of Symbols
|
|
142
|
-
# @return self
|
|
143
|
-
def ch_tx(*names)
|
|
144
|
-
@@rainbow = false if @@rainbow
|
|
145
|
-
names = names[0] if names[0].instance_of?(Array)
|
|
146
|
-
|
|
147
|
-
names.each do |name|
|
|
148
|
-
next if !name.instance_of?(Symbol)
|
|
149
|
-
@@code_text_attr += convert_to_code("TextAttr", name)
|
|
150
|
-
end
|
|
151
|
-
|
|
152
|
-
return self
|
|
153
|
-
end
|
|
154
|
-
|
|
155
|
-
# @param symbol fg
|
|
156
|
-
# @param symbol bg
|
|
157
|
-
# @param symbol|array txs
|
|
158
|
-
# @return self
|
|
159
|
-
def ch(fg, bg=nil, txs=nil)
|
|
160
|
-
ch_fg(fg)
|
|
161
|
-
ch_bg(bg)
|
|
162
|
-
ch_tx(*txs) # passing expand
|
|
163
|
-
|
|
164
|
-
return self
|
|
165
|
-
end
|
|
166
|
-
|
|
167
|
-
# to decorate only the specified target
|
|
168
|
-
# @param string|regexp|array target
|
|
169
|
-
# @param symbol fg
|
|
170
|
-
# @param symbol bg
|
|
171
|
-
# @param symbol tx
|
|
172
|
-
# @return self
|
|
173
|
-
def pickup(target, fg=:red, bg=nil, *txs)
|
|
174
|
-
key = target.object_id.to_s
|
|
175
|
-
@@pickup_list[key] = {}
|
|
176
|
-
|
|
177
|
-
if target.is_a?(Array)
|
|
178
|
-
@@pickup_list[key][:patterns] = target
|
|
179
|
-
else
|
|
180
|
-
@@pickup_list[key][:patterns] = [target]
|
|
181
|
-
end
|
|
182
|
-
|
|
183
|
-
if fg.instance_of?(Symbol)
|
|
184
|
-
code_fg = convert_to_code("ForeGround", fg)
|
|
185
|
-
else
|
|
186
|
-
code_fg = ""
|
|
187
|
-
end
|
|
188
|
-
|
|
189
|
-
if bg.instance_of?(Symbol)
|
|
190
|
-
code_bg = convert_to_code("BackGround", bg)
|
|
191
|
-
else
|
|
192
|
-
code_bg = ""
|
|
193
|
-
end
|
|
194
|
-
|
|
195
|
-
code_tx = ""
|
|
196
|
-
if txs.size > 0
|
|
197
|
-
txs = txs[0] if txs[0].instance_of?(Array)
|
|
198
|
-
txs.each do |name|
|
|
199
|
-
next if !name.instance_of?(Symbol)
|
|
200
|
-
code_tx += convert_to_code("TextAttr", name)
|
|
201
|
-
end
|
|
202
|
-
end
|
|
203
|
-
|
|
204
|
-
@@pickup_list[key][:code] = code_fg + code_bg + code_tx
|
|
205
|
-
|
|
206
|
-
return self
|
|
207
|
-
end
|
|
208
|
-
|
|
209
|
-
# change mode to rainbow
|
|
210
|
-
# @return void
|
|
211
|
-
def rainbow
|
|
212
|
-
@@rainbow = true
|
|
213
|
-
@@code_rainbow = @@code_bg_color + @@code_text_attr
|
|
214
|
-
end
|
|
215
|
-
|
|
216
|
-
# return start escape sequence code
|
|
217
|
-
# @return string
|
|
218
|
-
def get_start_code
|
|
219
|
-
if @@rainbow
|
|
220
|
-
return @@code_rainbow
|
|
221
|
-
else
|
|
222
|
-
return @@code_fg_color + @@code_bg_color + @@code_text_attr
|
|
223
|
-
end
|
|
224
|
-
end
|
|
225
|
-
|
|
226
|
-
# @return String
|
|
227
|
-
def get_reset_code
|
|
228
|
-
return self::Off::ALL
|
|
229
|
-
end
|
|
230
|
-
|
|
231
|
-
# add reset & start code to line feed code
|
|
232
|
-
# @param string input
|
|
233
|
-
def add_reset_line_feed(input)
|
|
234
|
-
input.gsub!(/#{$/}/, CE::get_reset_code + $/ + CE::get_start_code)
|
|
235
|
-
input += CE::get_reset_code
|
|
236
|
-
return input
|
|
237
|
-
end
|
|
238
|
-
|
|
239
|
-
# add code to be a rainbow color
|
|
240
|
-
# @param string text
|
|
241
|
-
# @return string
|
|
242
|
-
def add_rainbow(text)
|
|
243
|
-
cnt = 0
|
|
244
|
-
output = get_start_code
|
|
245
|
-
|
|
246
|
-
text.each_char do |char|
|
|
247
|
-
if char == $/
|
|
248
|
-
output += get_reset_code + $/ + get_start_code
|
|
249
|
-
next
|
|
250
|
-
end
|
|
251
|
-
|
|
252
|
-
case cnt
|
|
253
|
-
when 0
|
|
254
|
-
output += ForeGround::RED + char + Off::ALL + get_start_code
|
|
255
|
-
when 1
|
|
256
|
-
output += ForeGround::GREEN + char + Off::ALL + get_start_code
|
|
257
|
-
when 2
|
|
258
|
-
output += ForeGround::YELLOW + char + Off::ALL + get_start_code
|
|
259
|
-
when 3
|
|
260
|
-
output += ForeGround::BLUE + char + Off::ALL + get_start_code
|
|
261
|
-
when 4
|
|
262
|
-
output += ForeGround::MAGENTA + char + Off::ALL + get_start_code
|
|
263
|
-
when 5
|
|
264
|
-
output += ForeGround::CYAN + char + Off::ALL + get_start_code
|
|
265
|
-
when 6
|
|
266
|
-
output += ForeGround::WHITE + char + Off::ALL + get_start_code
|
|
267
|
-
end
|
|
268
|
-
cnt += 1
|
|
269
|
-
cnt = 0 if cnt >= 7
|
|
270
|
-
end
|
|
271
|
-
|
|
272
|
-
output += get_reset_code
|
|
273
|
-
|
|
274
|
-
return output
|
|
275
|
-
end
|
|
276
|
-
|
|
277
|
-
# add pickup code
|
|
278
|
-
# @param string text
|
|
279
|
-
# @return string
|
|
280
|
-
def add_pickup_code(text)
|
|
281
|
-
@@pickup_list.each_pair do |key, hash|
|
|
282
|
-
patterns = hash[:patterns]
|
|
283
|
-
code = hash[:code]
|
|
284
|
-
|
|
285
|
-
# repeat to each specified pickup pattern
|
|
286
|
-
patterns.each do |pattern|
|
|
287
|
-
# pattern is Regexp
|
|
288
|
-
if pattern.is_a?(Regexp)
|
|
289
|
-
after_text = ""
|
|
290
|
-
# global match
|
|
291
|
-
(text.scan(pattern)).size.times do
|
|
292
|
-
pattern =~ text
|
|
293
|
-
after_text += $` + code + $& + get_reset_code + get_start_code
|
|
294
|
-
text = $'
|
|
295
|
-
end
|
|
296
|
-
text = after_text + text
|
|
297
|
-
|
|
298
|
-
# pattern is String
|
|
299
|
-
else
|
|
300
|
-
text.gsub!(pattern, code + pattern + get_reset_code + get_start_code)
|
|
301
|
-
end
|
|
302
|
-
end
|
|
303
|
-
end
|
|
304
|
-
|
|
305
|
-
return text
|
|
306
|
-
end
|
|
307
|
-
|
|
308
|
-
# get sequence code by symbol
|
|
309
|
-
# @param string module_name
|
|
310
|
-
# @param symbol name
|
|
311
|
-
# @return string
|
|
312
|
-
def convert_to_code(module_name, name)
|
|
313
|
-
return "" if (name == nil || name == "")
|
|
314
|
-
|
|
315
|
-
begin
|
|
316
|
-
cname = name.to_s.swapcase
|
|
317
|
-
|
|
318
|
-
# specified color index
|
|
319
|
-
if cname.index("INDEX")
|
|
320
|
-
num = cname.sub("INDEX", "").to_i - 1
|
|
321
|
-
return eval(%{#{module_name}::INDEX}) + num.to_s + "m"
|
|
322
|
-
end
|
|
323
|
-
|
|
324
|
-
code = eval(%{#{module_name}::#{cname}})
|
|
325
|
-
rescue NameError
|
|
326
|
-
raise(NameError ,%{:#{name} is not defined! Please check reference.})
|
|
327
|
-
end
|
|
328
|
-
return code
|
|
329
|
-
end
|
|
330
|
-
|
|
331
|
-
# @return proc
|
|
332
|
-
def task
|
|
333
|
-
return @@task
|
|
334
|
-
end
|
|
335
|
-
|
|
336
|
-
# method alias
|
|
337
|
-
alias_method :off, :reset
|
|
338
|
-
alias_method :disable, :reset
|
|
339
|
-
alias_method :fg, :ch_fg
|
|
340
|
-
alias_method :bg, :ch_bg
|
|
341
|
-
alias_method :tx, :ch_tx
|
|
342
|
-
|
|
343
|
-
module_function :available?,
|
|
344
|
-
:isset?,
|
|
345
|
-
:enable?,
|
|
346
|
-
:unuse,
|
|
347
|
-
:reset,
|
|
348
|
-
:reset_fg,
|
|
349
|
-
:reset_bg,
|
|
350
|
-
:reset_tx,
|
|
351
|
-
:reset_pickup,
|
|
352
|
-
:reset_rainbow,
|
|
353
|
-
:reset_all,
|
|
354
|
-
:off,
|
|
355
|
-
:disable,
|
|
356
|
-
:times,
|
|
357
|
-
:once,
|
|
358
|
-
:ch_fg,
|
|
359
|
-
:fg,
|
|
360
|
-
:ch_bg,
|
|
361
|
-
:bg,
|
|
362
|
-
:ch_tx,
|
|
363
|
-
:tx,
|
|
364
|
-
:ch,
|
|
365
|
-
:pickup,
|
|
366
|
-
:rainbow,
|
|
367
|
-
:get_start_code,
|
|
368
|
-
:get_reset_code,
|
|
369
|
-
:add_reset_line_feed,
|
|
370
|
-
:add_rainbow,
|
|
371
|
-
:add_pickup_code,
|
|
372
|
-
:convert_to_code,
|
|
373
|
-
:task
|
|
374
|
-
end
|