ansi 1.2.1 → 1.2.2
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.
- data/HISTORY +1 -1
- data/PROFILE +23 -0
- data/ROADMAP +11 -0
- data/Syckfile +1 -4
- data/VERSION +5 -0
- data/eg/string_vs_block.rb +9 -0
- data/lib/ansi/code.rb +90 -39
- data/lib/ansi/mixin.rb +10 -0
- data/test/test_mixin.rb +22 -0
- metadata +17 -26
- data/meta/authors +0 -2
- data/meta/collection +0 -1
- data/meta/copyright +0 -1
- data/meta/created +0 -1
- data/meta/description +0 -1
- data/meta/license +0 -1
- data/meta/name +0 -1
- data/meta/released +0 -1
- data/meta/ruby +0 -1
- data/meta/sites/development +0 -1
- data/meta/sites/documentation +0 -1
- data/meta/sites/homepage +0 -1
- data/meta/sites/mailinglist +0 -1
- data/meta/sites/repository +0 -1
- data/meta/summary +0 -1
- data/meta/title +0 -1
- data/meta/version +0 -1
data/HISTORY
CHANGED
@@ -9,7 +9,7 @@ is mildly unconvential, but it allows the arguments to be used
|
|
9
9
|
as options with common defaults more elegantly.
|
10
10
|
|
11
11
|
Another important change is that ANSI::Code no longer provides
|
12
|
-
String extension methods
|
12
|
+
String extension methods when included. For this use the new
|
13
13
|
ANSI::Mixin.
|
14
14
|
|
15
15
|
Other improvements include a String extension, #ansi, added to
|
data/PROFILE
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
---
|
2
|
+
title : ANSI
|
3
|
+
suite : rubyworks
|
4
|
+
summary : ANSI codes at your fingertips!
|
5
|
+
copyright : Copyright (c) 2009 Thomas Sawyer
|
6
|
+
license : MIT
|
7
|
+
contact : rubyworks-mailinglist@googlegroups.com
|
8
|
+
created : 2004-08-01
|
9
|
+
|
10
|
+
authors:
|
11
|
+
- Thomas Sawyer
|
12
|
+
- Florian Frank
|
13
|
+
|
14
|
+
description:
|
15
|
+
ANSI codes at your fingertips!
|
16
|
+
|
17
|
+
resources:
|
18
|
+
homepage : http://rubyworks.github.com/ansi
|
19
|
+
development : http://github.com/rubyworks/ansi
|
20
|
+
reference : http://rubyworks.github.com/ansi/rdoc
|
21
|
+
mailinglist : http://groups.google.com/group/rubyworks-mailinglist
|
22
|
+
repository : git://github.com/rubyworks/ansi.git
|
23
|
+
|
data/ROADMAP
ADDED
data/Syckfile
CHANGED
data/VERSION
ADDED
data/lib/ansi/code.rb
CHANGED
@@ -20,7 +20,7 @@ module ANSI
|
|
20
20
|
#
|
21
21
|
# == Supported ANSI Commands
|
22
22
|
#
|
23
|
-
# The following is a list of supported codes.
|
23
|
+
# The following is a list of supported display codes.
|
24
24
|
#
|
25
25
|
# save
|
26
26
|
# restore
|
@@ -33,7 +33,8 @@ module ANSI
|
|
33
33
|
# down
|
34
34
|
# left
|
35
35
|
# right
|
36
|
-
#
|
36
|
+
#
|
37
|
+
# The following is a list of supported "style" codes.
|
37
38
|
#
|
38
39
|
# clear
|
39
40
|
# reset # synonym for :clear
|
@@ -48,6 +49,8 @@ module ANSI
|
|
48
49
|
# concealed
|
49
50
|
# strikethrough # not widely implemented
|
50
51
|
#
|
52
|
+
# The following is a list of supported color codes.
|
53
|
+
#
|
51
54
|
# black
|
52
55
|
# red
|
53
56
|
# green
|
@@ -66,13 +69,19 @@ module ANSI
|
|
66
69
|
# on_cyan
|
67
70
|
# on_white
|
68
71
|
#
|
72
|
+
# In addition there are color combinations like +red_on_white+.
|
73
|
+
#
|
74
|
+
# == Acknowledgement
|
75
|
+
#
|
69
76
|
# This library is a partial adaptation of ANSIColor by Florian Frank.
|
70
77
|
#
|
71
78
|
# ANSIColor Copyright (c) 2002 Florian Frank
|
72
79
|
#
|
80
|
+
# == Developer's Notes
|
81
|
+
#
|
73
82
|
# TODO: Any ANSI codes left to add? Modes?
|
74
83
|
#
|
75
|
-
# TODO: up, down, right, left, etc could have yielding methods too
|
84
|
+
# TODO: up, down, right, left, etc could have yielding methods too?
|
76
85
|
|
77
86
|
module Code
|
78
87
|
extend self
|
@@ -135,7 +144,7 @@ module ANSI
|
|
135
144
|
module_eval <<-END, __FILE__, __LINE__
|
136
145
|
def #{style}(string=nil)
|
137
146
|
if string
|
138
|
-
warn "use ANSI block notation for future versions"
|
147
|
+
#warn "use ANSI block notation for future versions"
|
139
148
|
return "\#{#{style.upcase}}\#{string}\#{CLEAR}"
|
140
149
|
end
|
141
150
|
if block_given?
|
@@ -150,11 +159,13 @@ module ANSI
|
|
150
159
|
%w{black red green yellow blue magenta cyan white}
|
151
160
|
end
|
152
161
|
|
162
|
+
# Dynamically create color methods.
|
163
|
+
|
153
164
|
colors.each do |color|
|
154
165
|
module_eval <<-END, __FILE__, __LINE__
|
155
166
|
def #{color}(string=nil)
|
156
167
|
if string
|
157
|
-
warn "use ANSI block notation for future versions"
|
168
|
+
#warn "use ANSI block notation for future versions"
|
158
169
|
return "\#{#{color.upcase}}\#{string}\#{CLEAR}"
|
159
170
|
end
|
160
171
|
if block_given?
|
@@ -165,7 +176,7 @@ module ANSI
|
|
165
176
|
|
166
177
|
def on_#{color}(string=nil)
|
167
178
|
if string
|
168
|
-
warn "use ANSI block notation for future versions"
|
179
|
+
#warn "use ANSI block notation for future versions"
|
169
180
|
return "\#{ON_#{color.upcase}}\#{string}\#{CLEAR}"
|
170
181
|
end
|
171
182
|
if block_given?
|
@@ -181,7 +192,11 @@ module ANSI
|
|
181
192
|
colors.each do |color|
|
182
193
|
colors.each do |on_color|
|
183
194
|
module_eval <<-END, __FILE__, __LINE__
|
184
|
-
def #{color}_on_#{on_color}
|
195
|
+
def #{color}_on_#{on_color}(string=nil)
|
196
|
+
if string
|
197
|
+
#warn "use ANSI block notation for future versions"
|
198
|
+
return #{color.upcase} + ON_#{color.upcase} + string + CLEAR
|
199
|
+
end
|
185
200
|
if block_given?
|
186
201
|
#{color.upcase} + ON_#{on_color.upcase} + yield.to_s + CLEAR
|
187
202
|
else
|
@@ -192,10 +207,12 @@ module ANSI
|
|
192
207
|
end
|
193
208
|
end
|
194
209
|
|
210
|
+
# Clear code.
|
195
211
|
def clear
|
196
212
|
CLEAR
|
197
213
|
end
|
198
214
|
|
215
|
+
# Reset code.
|
199
216
|
def reset
|
200
217
|
RESET
|
201
218
|
end
|
@@ -230,13 +247,22 @@ module ANSI
|
|
230
247
|
CLS
|
231
248
|
end
|
232
249
|
|
233
|
-
|
234
|
-
#
|
235
|
-
|
236
|
-
|
237
|
-
|
250
|
+
# Like +move+ but returns to original positon after
|
251
|
+
# yielding the block.
|
252
|
+
def display(line, column=0) #:yield:
|
253
|
+
result = "\e[s"
|
254
|
+
result << "\e[#{line.to_i};#{column.to_i}H"
|
255
|
+
if block_given?
|
256
|
+
result << yield
|
257
|
+
result << "\e[u"
|
258
|
+
#elsif string
|
259
|
+
# result << string
|
260
|
+
# result << "\e[u"
|
261
|
+
end
|
262
|
+
result
|
263
|
+
end
|
238
264
|
|
239
|
-
# Move
|
265
|
+
# Move cursor to line and column.
|
240
266
|
def move(line, column=0)
|
241
267
|
"\e[#{line.to_i};#{column.to_i}H"
|
242
268
|
end
|
@@ -261,52 +287,42 @@ module ANSI
|
|
261
287
|
"\e[#{spaces.to_i}C"
|
262
288
|
end
|
263
289
|
|
264
|
-
|
265
|
-
#
|
266
|
-
|
267
|
-
|
268
|
-
result << "\e[#{line.to_i};#{column.to_i}H"
|
269
|
-
if block_given?
|
270
|
-
result << yield
|
271
|
-
result << "\e[u"
|
272
|
-
#elsif string
|
273
|
-
# result << string
|
274
|
-
# result << "\e[u"
|
275
|
-
#elsif respond_to?(:to_str)
|
276
|
-
# result << self
|
277
|
-
# result << "\e[u"
|
278
|
-
end
|
279
|
-
result
|
280
|
-
end
|
290
|
+
##
|
291
|
+
#def position
|
292
|
+
# "\e[#;#R"
|
293
|
+
#end
|
281
294
|
|
295
|
+
# Apply ansi codes to block yield.
|
282
296
|
#
|
283
|
-
|
297
|
+
# style(:red, :on_white){ "Valentine" }
|
298
|
+
#
|
299
|
+
def style(*codes) #:yield:
|
284
300
|
s = ""
|
285
301
|
codes.each do |code|
|
286
302
|
s << "\e[#{TABLE[code]}m"
|
287
303
|
end
|
288
|
-
s << yield
|
304
|
+
s << yield.to_s
|
289
305
|
s << CLEAR
|
290
306
|
end
|
291
307
|
|
308
|
+
# Alternate term for #style.
|
292
309
|
alias_method :color, :style
|
293
310
|
|
294
311
|
#
|
295
|
-
def unstyle
|
312
|
+
def unstyle #:yield:
|
296
313
|
if block_given?
|
297
314
|
yield.gsub(PATTERN, '')
|
298
|
-
#elsif string
|
299
|
-
# string.gsub(ColoredRegexp, '')
|
300
315
|
else
|
301
316
|
''
|
302
317
|
end
|
303
318
|
end
|
304
319
|
|
320
|
+
#
|
305
321
|
alias_method :uncolor, :unstyle
|
306
322
|
|
307
|
-
# This old term will be deprecated.
|
323
|
+
# DEPRECATE: This old term will be deprecated.
|
308
324
|
def uncolered(string=nil)
|
309
|
-
warn "use #uncolor
|
325
|
+
warn "ansi: use #uncolor or #unansi for future version"
|
310
326
|
if block_given?
|
311
327
|
yield.gsub(PATTERN, '')
|
312
328
|
elsif string
|
@@ -316,6 +332,27 @@ module ANSI
|
|
316
332
|
end
|
317
333
|
end
|
318
334
|
|
335
|
+
# This method is just like #style, except it takes a string
|
336
|
+
# rather than a block. The primary purpose of this method
|
337
|
+
# is to speed up the String#ansi call.
|
338
|
+
#
|
339
|
+
# ansi("Valentine", :red, :on_white)
|
340
|
+
#
|
341
|
+
def ansi(string, *codes)
|
342
|
+
s = ""
|
343
|
+
codes.each do |code|
|
344
|
+
s << "\e[#{TABLE[code]}m"
|
345
|
+
end
|
346
|
+
s << string
|
347
|
+
s << CLEAR
|
348
|
+
end
|
349
|
+
|
350
|
+
# Remove ansi codes from +string+. This method is like unstyle,
|
351
|
+
# but takes a string rather than a block.
|
352
|
+
def unansi(string)
|
353
|
+
string.gsub(PATTERN, '')
|
354
|
+
end
|
355
|
+
|
319
356
|
# Regexp for matching style and color codes.
|
320
357
|
PATTERN = /\e\[([34][0-7]|[0-9])m/
|
321
358
|
|
@@ -354,14 +391,28 @@ module ANSI
|
|
354
391
|
end
|
355
392
|
|
356
393
|
extend Code
|
357
|
-
|
358
394
|
end
|
359
395
|
|
360
396
|
#
|
361
397
|
class String
|
362
398
|
#
|
363
399
|
def ansi(*codes)
|
364
|
-
ANSI::Code.
|
400
|
+
ANSI::Code.ansi(self, *codes)
|
401
|
+
end
|
402
|
+
|
403
|
+
#
|
404
|
+
def ansi!(*codes)
|
405
|
+
replace(ansi(*codes))
|
406
|
+
end
|
407
|
+
|
408
|
+
#
|
409
|
+
def unansi
|
410
|
+
ANSI::Code.unansi(self)
|
411
|
+
end
|
412
|
+
|
413
|
+
#
|
414
|
+
def unansi!
|
415
|
+
replace(unansi)
|
365
416
|
end
|
366
417
|
end
|
367
418
|
|
data/lib/ansi/mixin.rb
CHANGED
@@ -107,6 +107,16 @@ module ANSI
|
|
107
107
|
def white_on_magenta ; ANSI::Code.white_on_magenta { to_s } ; end
|
108
108
|
def white_on_cyan ; ANSI::Code.white_on_cyan { to_s } ; end
|
109
109
|
|
110
|
+
# Move cursor to line and column, insert +self.to_s+ and return to
|
111
|
+
# original positon.
|
112
|
+
def display(line, column=0)
|
113
|
+
result = "\e[s"
|
114
|
+
result << "\e[#{line.to_i};#{column.to_i}H"
|
115
|
+
result << to_s
|
116
|
+
result << "\e[u"
|
117
|
+
result
|
118
|
+
end
|
119
|
+
|
110
120
|
end
|
111
121
|
|
112
122
|
end
|
data/test/test_mixin.rb
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'test/unit'
|
2
|
+
require 'ansi/mixin'
|
3
|
+
|
4
|
+
class TestANSIMixin < Test::Unit::TestCase
|
5
|
+
|
6
|
+
class ::String
|
7
|
+
include ANSI::Mixin
|
8
|
+
end
|
9
|
+
|
10
|
+
def test_methods
|
11
|
+
str = "Hello".red + "World".blue
|
12
|
+
out = "\e[31mHello\e[0m\e[34mWorld\e[0m"
|
13
|
+
assert_equal(out, str)
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_display
|
17
|
+
str = "Hello".display(4,10)
|
18
|
+
out = "\e[s\e[4;10HHello\e[u"
|
19
|
+
assert_equal(out, str)
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 1
|
7
7
|
- 2
|
8
|
-
-
|
9
|
-
version: 1.2.
|
8
|
+
- 2
|
9
|
+
version: 1.2.2
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Thomas Sawyer
|
@@ -15,19 +15,21 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2010-
|
18
|
+
date: 2010-06-12 00:00:00 -04:00
|
19
19
|
default_executable:
|
20
20
|
dependencies: []
|
21
21
|
|
22
22
|
description: ANSI codes at your fingertips!
|
23
|
-
email:
|
23
|
+
email: rubyworks-mailinglist@googlegroups.com
|
24
24
|
executables: []
|
25
25
|
|
26
26
|
extensions: []
|
27
27
|
|
28
|
-
extra_rdoc_files:
|
29
|
-
|
28
|
+
extra_rdoc_files:
|
29
|
+
- README.rdoc
|
30
30
|
files:
|
31
|
+
- Syckfile
|
32
|
+
- eg/string_vs_block.rb
|
31
33
|
- lib/ansi/bbcode.rb
|
32
34
|
- lib/ansi/code.rb
|
33
35
|
- lib/ansi/logger.rb
|
@@ -40,38 +42,26 @@ files:
|
|
40
42
|
- lib/ansi/terminal/win32.rb
|
41
43
|
- lib/ansi/terminal.rb
|
42
44
|
- lib/ansi.rb
|
43
|
-
- meta/authors
|
44
|
-
- meta/collection
|
45
|
-
- meta/copyright
|
46
|
-
- meta/created
|
47
|
-
- meta/description
|
48
|
-
- meta/license
|
49
|
-
- meta/name
|
50
|
-
- meta/released
|
51
|
-
- meta/ruby
|
52
|
-
- meta/sites/development
|
53
|
-
- meta/sites/documentation
|
54
|
-
- meta/sites/homepage
|
55
|
-
- meta/sites/mailinglist
|
56
|
-
- meta/sites/repository
|
57
|
-
- meta/summary
|
58
|
-
- meta/title
|
59
|
-
- meta/version
|
60
45
|
- test/test_ansicode.rb
|
61
46
|
- test/test_bbcode.rb
|
47
|
+
- test/test_mixin.rb
|
62
48
|
- test/test_progressbar.rb
|
49
|
+
- PROFILE
|
63
50
|
- LICENSE
|
64
51
|
- README.rdoc
|
65
52
|
- HISTORY
|
66
|
-
-
|
53
|
+
- ROADMAP
|
54
|
+
- VERSION
|
67
55
|
has_rdoc: true
|
68
|
-
homepage: http://
|
56
|
+
homepage: http://rubyworks.github.com/ansi
|
69
57
|
licenses: []
|
70
58
|
|
71
59
|
post_install_message:
|
72
60
|
rdoc_options:
|
73
61
|
- --title
|
74
62
|
- ANSI API
|
63
|
+
- --main
|
64
|
+
- README.rdoc
|
75
65
|
require_paths:
|
76
66
|
- lib
|
77
67
|
required_ruby_version: !ruby/object:Gem::Requirement
|
@@ -90,7 +80,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
90
80
|
version: "0"
|
91
81
|
requirements: []
|
92
82
|
|
93
|
-
rubyforge_project:
|
83
|
+
rubyforge_project: ansi
|
94
84
|
rubygems_version: 1.3.6
|
95
85
|
signing_key:
|
96
86
|
specification_version: 3
|
@@ -98,4 +88,5 @@ summary: ANSI codes at your fingertips!
|
|
98
88
|
test_files:
|
99
89
|
- test/test_ansicode.rb
|
100
90
|
- test/test_bbcode.rb
|
91
|
+
- test/test_mixin.rb
|
101
92
|
- test/test_progressbar.rb
|
data/meta/authors
DELETED
data/meta/collection
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
death
|
data/meta/copyright
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
Copyright (c) 2009 Thomas Sawyer
|
data/meta/created
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
2004-08-01
|
data/meta/description
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
ANSI codes at your fingertips!
|
data/meta/license
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
LGPLv3
|
data/meta/name
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
ansi
|
data/meta/released
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
2010-05-10
|
data/meta/ruby
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
1.8.7
|
data/meta/sites/development
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
http://github.com/rubyworks/ansi/
|
data/meta/sites/documentation
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
http://rubyworks.github.com/ansi/rdoc/
|
data/meta/sites/homepage
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
http://death.rubyforge.org/ansi
|
data/meta/sites/mailinglist
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
http://groups.google.com/group/rubyworks-mailinglist/
|
data/meta/sites/repository
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
git://github.com/rubyworks/ansi.git
|
data/meta/summary
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
ANSI codes at your fingertips!
|
data/meta/title
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
ANSI
|
data/meta/version
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
1.2.1
|