clio 0.0.1
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/COPYING +170 -0
- data/HISTORY +11 -0
- data/MANIFEST +181 -0
- data/METADATA +18 -0
- data/NEWS +10 -0
- data/README +52 -0
- data/admin/config/reap.yaml +30 -0
- data/admin/depot/commandline.rb +219 -0
- data/admin/depot/multicommand.rb +403 -0
- data/admin/depot/test_multicommand.rb +40 -0
- data/admin/log/notes.xml +28 -0
- data/admin/log/stats.html +25 -0
- data/admin/log/syntax.log +0 -0
- data/admin/log/testunit.log +16 -0
- data/admin/pack/clio-0.0.1.gem +0 -0
- data/admin/share/reap/example.rb +7 -0
- data/admin/temps/lib/clio/about.rb.erb +4 -0
- data/lib/clio/ansicode.rb +319 -0
- data/lib/clio/command.rb +296 -0
- data/lib/clio/commandable.rb +195 -0
- data/lib/clio/commandline.rb +275 -0
- data/lib/clio/consoleutils.rb +117 -0
- data/lib/clio/errors.rb +16 -0
- data/lib/clio/option.rb +36 -0
- data/lib/clio/progressbar.rb +253 -0
- data/lib/clio/runmode.rb +126 -0
- data/lib/clio/string.rb +147 -0
- data/test/test_command.rb +42 -0
- data/test/test_commandline.rb +83 -0
- data/vendor/Console/Console.cpp +1203 -0
- data/vendor/Console/Console.rdoc +690 -0
- data/vendor/Console/Console_ANSI.rdoc +302 -0
- data/vendor/Console/HISTORY.txt +7 -0
- data/vendor/Console/INSTALL.txt +18 -0
- data/vendor/Console/Makefile +162 -0
- data/vendor/Console/README.txt +26 -0
- data/vendor/Console/doc/classes/Win32.html +115 -0
- data/vendor/Console/doc/classes/Win32/Console.html +650 -0
- data/vendor/Console/doc/classes/Win32/Console.src/M000001.html +31 -0
- data/vendor/Console/doc/classes/Win32/Console.src/M000002.html +23 -0
- data/vendor/Console/doc/classes/Win32/Console.src/M000003.html +23 -0
- data/vendor/Console/doc/classes/Win32/Console.src/M000004.html +27 -0
- data/vendor/Console/doc/classes/Win32/Console.src/M000005.html +23 -0
- data/vendor/Console/doc/classes/Win32/Console.src/M000006.html +28 -0
- data/vendor/Console/doc/classes/Win32/Console.src/M000007.html +23 -0
- data/vendor/Console/doc/classes/Win32/Console.src/M000008.html +24 -0
- data/vendor/Console/doc/classes/Win32/Console.src/M000009.html +44 -0
- data/vendor/Console/doc/classes/Win32/Console.src/M000010.html +23 -0
- data/vendor/Console/doc/classes/Win32/Console.src/M000011.html +33 -0
- data/vendor/Console/doc/classes/Win32/Console.src/M000012.html +26 -0
- data/vendor/Console/doc/classes/Win32/Console.src/M000013.html +27 -0
- data/vendor/Console/doc/classes/Win32/Console.src/M000014.html +28 -0
- data/vendor/Console/doc/classes/Win32/Console.src/M000015.html +23 -0
- data/vendor/Console/doc/classes/Win32/Console.src/M000016.html +23 -0
- data/vendor/Console/doc/classes/Win32/Console.src/M000017.html +23 -0
- data/vendor/Console/doc/classes/Win32/Console.src/M000018.html +29 -0
- data/vendor/Console/doc/classes/Win32/Console.src/M000019.html +23 -0
- data/vendor/Console/doc/classes/Win32/Console.src/M000020.html +23 -0
- data/vendor/Console/doc/classes/Win32/Console.src/M000021.html +28 -0
- data/vendor/Console/doc/classes/Win32/Console.src/M000022.html +23 -0
- data/vendor/Console/doc/classes/Win32/Console.src/M000023.html +28 -0
- data/vendor/Console/doc/classes/Win32/Console.src/M000024.html +35 -0
- data/vendor/Console/doc/classes/Win32/Console.src/M000025.html +28 -0
- data/vendor/Console/doc/classes/Win32/Console.src/M000026.html +28 -0
- data/vendor/Console/doc/classes/Win32/Console.src/M000027.html +28 -0
- data/vendor/Console/doc/classes/Win32/Console.src/M000028.html +31 -0
- data/vendor/Console/doc/classes/Win32/Console.src/M000029.html +23 -0
- data/vendor/Console/doc/classes/Win32/Console.src/M000030.html +23 -0
- data/vendor/Console/doc/classes/Win32/Console.src/M000031.html +23 -0
- data/vendor/Console/doc/classes/Win32/Console.src/M000032.html +27 -0
- data/vendor/Console/doc/classes/Win32/Console.src/M000033.html +27 -0
- data/vendor/Console/doc/classes/Win32/Console.src/M000034.html +25 -0
- data/vendor/Console/doc/classes/Win32/Console/ANSI.html +103 -0
- data/vendor/Console/doc/classes/Win32/Console/ANSI/IO.html +220 -0
- data/vendor/Console/doc/classes/Win32/Console/ANSI/IO.src/M000035.html +32 -0
- data/vendor/Console/doc/classes/Win32/Console/ANSI/IO.src/M000036.html +205 -0
- data/vendor/Console/doc/classes/Win32/Console/ANSI/IO.src/M000037.html +40 -0
- data/vendor/Console/doc/classes/Win32/Console/ANSI/IO.src/M000038.html +25 -0
- data/vendor/Console/doc/classes/Win32/Console/API.html +758 -0
- data/vendor/Console/doc/classes/Win32/Console/API.src/M000039.html +27 -0
- data/vendor/Console/doc/classes/Win32/Console/API.src/M000040.html +27 -0
- data/vendor/Console/doc/classes/Win32/Console/API.src/M000041.html +27 -0
- data/vendor/Console/doc/classes/Win32/Console/API.src/M000042.html +32 -0
- data/vendor/Console/doc/classes/Win32/Console/API.src/M000043.html +32 -0
- data/vendor/Console/doc/classes/Win32/Console/API.src/M000044.html +28 -0
- data/vendor/Console/doc/classes/Win32/Console/API.src/M000045.html +26 -0
- data/vendor/Console/doc/classes/Win32/Console/API.src/M000046.html +26 -0
- data/vendor/Console/doc/classes/Win32/Console/API.src/M000047.html +27 -0
- data/vendor/Console/doc/classes/Win32/Console/API.src/M000048.html +30 -0
- data/vendor/Console/doc/classes/Win32/Console/API.src/M000049.html +29 -0
- data/vendor/Console/doc/classes/Win32/Console/API.src/M000050.html +27 -0
- data/vendor/Console/doc/classes/Win32/Console/API.src/M000051.html +28 -0
- data/vendor/Console/doc/classes/Win32/Console/API.src/M000052.html +30 -0
- data/vendor/Console/doc/classes/Win32/Console/API.src/M000053.html +27 -0
- data/vendor/Console/doc/classes/Win32/Console/API.src/M000054.html +29 -0
- data/vendor/Console/doc/classes/Win32/Console/API.src/M000055.html +29 -0
- data/vendor/Console/doc/classes/Win32/Console/API.src/M000056.html +28 -0
- data/vendor/Console/doc/classes/Win32/Console/API.src/M000057.html +27 -0
- data/vendor/Console/doc/classes/Win32/Console/API.src/M000058.html +47 -0
- data/vendor/Console/doc/classes/Win32/Console/API.src/M000059.html +32 -0
- data/vendor/Console/doc/classes/Win32/Console/API.src/M000060.html +47 -0
- data/vendor/Console/doc/classes/Win32/Console/API.src/M000061.html +34 -0
- data/vendor/Console/doc/classes/Win32/Console/API.src/M000062.html +32 -0
- data/vendor/Console/doc/classes/Win32/Console/API.src/M000063.html +32 -0
- data/vendor/Console/doc/classes/Win32/Console/API.src/M000064.html +35 -0
- data/vendor/Console/doc/classes/Win32/Console/API.src/M000065.html +26 -0
- data/vendor/Console/doc/classes/Win32/Console/API.src/M000066.html +27 -0
- data/vendor/Console/doc/classes/Win32/Console/API.src/M000067.html +29 -0
- data/vendor/Console/doc/classes/Win32/Console/API.src/M000068.html +27 -0
- data/vendor/Console/doc/classes/Win32/Console/API.src/M000069.html +27 -0
- data/vendor/Console/doc/classes/Win32/Console/API.src/M000070.html +28 -0
- data/vendor/Console/doc/classes/Win32/Console/API.src/M000071.html +27 -0
- data/vendor/Console/doc/classes/Win32/Console/API.src/M000072.html +26 -0
- data/vendor/Console/doc/classes/Win32/Console/API.src/M000073.html +27 -0
- data/vendor/Console/doc/classes/Win32/Console/API.src/M000074.html +31 -0
- data/vendor/Console/doc/classes/Win32/Console/API.src/M000075.html +27 -0
- data/vendor/Console/doc/classes/Win32/Console/API.src/M000076.html +32 -0
- data/vendor/Console/doc/classes/Win32/Console/API.src/M000077.html +27 -0
- data/vendor/Console/doc/classes/Win32/Console/API.src/M000078.html +32 -0
- data/vendor/Console/doc/classes/Win32/Console/API.src/M000079.html +32 -0
- data/vendor/Console/doc/classes/Win32/Console/API.src/M000080.html +32 -0
- data/vendor/Console/doc/classes/Win32/Console/Constants.html +360 -0
- data/vendor/Console/doc/created.rid +1 -0
- data/vendor/Console/doc/files/Console_ANSI_rdoc.html +407 -0
- data/vendor/Console/doc/files/Console_cpp.html +104 -0
- data/vendor/Console/doc/files/Console_rdoc.html +964 -0
- data/vendor/Console/doc/files/lib/Win32/Console/ANSI_rb.html +123 -0
- data/vendor/Console/doc/files/lib/Win32/Console_rb.html +297 -0
- data/vendor/Console/doc/fr_class_index.html +32 -0
- data/vendor/Console/doc/fr_file_index.html +31 -0
- data/vendor/Console/doc/fr_method_index.html +106 -0
- data/vendor/Console/doc/index.html +24 -0
- data/vendor/Console/doc/rdoc-style.css +172 -0
- data/vendor/Console/extconf.rb +18 -0
- data/vendor/Console/lib/Term/ansicolor.rb +76 -0
- data/vendor/Console/lib/Win32/Console.rb +970 -0
- data/vendor/Console/lib/Win32/Console/ANSI.rb +305 -0
- data/vendor/Console/test/test_cursor.rb +9 -0
- data/vendor/Console/test/test_mouse.rb +6 -0
- data/vendor/Console/test/test_readinput.rb +62 -0
- data/vendor/Console/test/test_readoutput.rb +52 -0
- data/vendor/Console/test/test_sendevent.rb +17 -0
- data/vendor/Console/test/test_title.rb +14 -0
- data/vendor/Console/test/test_write.rb +36 -0
- metadata +253 -0
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
require 'test/unit'
|
|
2
|
+
require 'clio/multicommand'
|
|
3
|
+
|
|
4
|
+
class TestCommand < Test::Unit::TestCase
|
|
5
|
+
|
|
6
|
+
class ExampleCommand < Clio::MultiCommand
|
|
7
|
+
|
|
8
|
+
def setup
|
|
9
|
+
@check = {}
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
# No arguments and no options.
|
|
13
|
+
def a
|
|
14
|
+
@check['a'] = true
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
# Takes only options.
|
|
18
|
+
def b(opts)
|
|
19
|
+
@check['b'] = opts
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
# Takes multiple arguments and options. (Ruby 1.9 only)
|
|
23
|
+
#def c(*args, opts)
|
|
24
|
+
#end
|
|
25
|
+
|
|
26
|
+
# opt 'a', :bolean, 'example option a'
|
|
27
|
+
|
|
28
|
+
# Takes one argument and options.
|
|
29
|
+
def d(args, opts)
|
|
30
|
+
@check['d'] = [args, opts]
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def e(args, opts)
|
|
34
|
+
opts.has_only! %w{a b c}
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
end
|
|
40
|
+
|
data/admin/log/notes.xml
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
<notes>
|
|
2
|
+
<set label="FIXME">
|
|
3
|
+
<file src="lib/clio/progressbar.rb">
|
|
4
|
+
<note line="134" type="FIXME">FIXME: I don't know how portable it is.</note>
|
|
5
|
+
</file>
|
|
6
|
+
</set>
|
|
7
|
+
<set label="TODO">
|
|
8
|
+
<file src="lib/clio/string.rb">
|
|
9
|
+
<note line="76" type="TODO">TODO: No doubt the delegation will need to be made more robust.</note>
|
|
10
|
+
</file>
|
|
11
|
+
<file src="lib/clio/commandline.rb">
|
|
12
|
+
<note line="30" type="TODO">TODO: Rename this method.</note>
|
|
13
|
+
</file>
|
|
14
|
+
<file src="lib/clio/commandable.rb">
|
|
15
|
+
<note line="118" type="TODO">TODO: to_b if 'true' or 'false' ?</note>
|
|
16
|
+
</file>
|
|
17
|
+
<file src="lib/clio/runmode.rb">
|
|
18
|
+
<note line="117" type="TODO">TODO: Reduce to one, two at most.</note>
|
|
19
|
+
</file>
|
|
20
|
+
<file src="lib/clio/consoleutils.rb">
|
|
21
|
+
<note line="66" type="TODO">TODO: Don't know how portable #screen_width is.</note>
|
|
22
|
+
</file>
|
|
23
|
+
<file src="lib/clio/command.rb">
|
|
24
|
+
<note line="79" type="TODO">TODO: Support passing a string or *args, opts in place of ARGV.</note>
|
|
25
|
+
<note line="201" type="TODO">TODO: use clio/option</note>
|
|
26
|
+
</file>
|
|
27
|
+
</set>
|
|
28
|
+
</notes>
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
<html><head>
|
|
2
|
+
<title>Clio Code Statistics</title>
|
|
3
|
+
<link rel="stylesheet" type="text/css" href="log.css"/>
|
|
4
|
+
</head><body>
|
|
5
|
+
<div class="basic_statistics">
|
|
6
|
+
<h1>Clio -- Basic Code Statistics</h1>
|
|
7
|
+
<table class="counts" border="1">
|
|
8
|
+
<tr><th colspan="9"><h2>Code Counts</h2></th></tr>
|
|
9
|
+
<tr><th>TYPE</th><th>Total</th><th>Code</th><th>-%-</th><th>Docs</th><th>-%-</th><th>Blank</th><th>-%-</th><th>Files</th></tr>
|
|
10
|
+
<tr><th>Source</th><td>1780</td><td>888</td><td>49%</td><td>641</td><td>36%</td><td>251</td><td>14%</td><td>10</td></tr>
|
|
11
|
+
<tr><th>Test</th><td>125</td><td>81</td><td>4%</td><td>7</td><td>0%</td><td>37</td><td>2%</td><td>2</td></tr>
|
|
12
|
+
<tr><th>Total</th><td>1905</td><td>969</td><td>50%</td><td>648</td><td>34%</td><td>288</td><td>15%</td><td>12</td></tr>
|
|
13
|
+
</table>
|
|
14
|
+
<table class="ratios" border="1">
|
|
15
|
+
<tr><th colspan="6"><h2>Code Ratios</h2></th></tr>
|
|
16
|
+
<tr><th>RATIO</th><th>Code</th><th>Docs</th><th>Blank</th><th>Test</th><th>Total</th></tr>
|
|
17
|
+
<tr><th>Code</th><td> 1.0</td><td> 1.4</td><td> 3.5</td><td> 7.1</td><td> -</td></tr>
|
|
18
|
+
<tr><th>Docs</th><td> -</td><td> 1.0</td><td> 2.6</td><td> 5.1</td><td> -</td></tr>
|
|
19
|
+
<tr><th>Blank</th><td> -</td><td> -</td><td> 1.0</td><td> 2.0</td><td> -</td></tr>
|
|
20
|
+
<tr><th>Test</th><td> -</td><td> -</td><td> -</td><td> 1.0</td><td> -</td></tr>
|
|
21
|
+
<tr><th>Total</th><td> 2.0</td><td> 2.8</td><td> 7.1</td><td> 14.2</td><td> 1.0</td></tr>
|
|
22
|
+
</table>
|
|
23
|
+
<div class="date">Wed Sep 03 06:57:55 -0400 2008</div>
|
|
24
|
+
</div>
|
|
25
|
+
</body></html>
|
|
File without changes
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
Loaded suite [test/test_command.rb, test/test_commandline.rb]
|
|
2
|
+
Started
|
|
3
|
+
F...Loaded suite [test/test_command.rb, test/test_commandline.rb]
|
|
4
|
+
Started
|
|
5
|
+
....Loaded suite [test/test_command.rb, test/test_commandline.rb]
|
|
6
|
+
Started
|
|
7
|
+
............
|
|
8
|
+
Finished in 0.004846 seconds.
|
|
9
|
+
|
|
10
|
+
12 tests, 13 assertions, 0 failures, 0 errors
|
|
11
|
+
Loaded suite [test/test_command.rb, test/test_commandline.rb]
|
|
12
|
+
Started
|
|
13
|
+
............
|
|
14
|
+
Finished in 0.004963 seconds.
|
|
15
|
+
|
|
16
|
+
12 tests, 13 assertions, 0 failures, 0 errors
|
|
Binary file
|
|
@@ -0,0 +1,319 @@
|
|
|
1
|
+
# = ANSICode
|
|
2
|
+
#
|
|
3
|
+
# Module which makes it very easy to use ANSI codes.
|
|
4
|
+
# These are esspecially nice for beautifying shell output.
|
|
5
|
+
#
|
|
6
|
+
# include ANSICode
|
|
7
|
+
#
|
|
8
|
+
# p red, "Hello", blue, "World"
|
|
9
|
+
# => "\e[31mHello\e[34mWorld"
|
|
10
|
+
#
|
|
11
|
+
# p red { "Hello" } + blue { "World" }
|
|
12
|
+
# => "\e[31mHello\e[0m\e[34mWorld\e[0m"
|
|
13
|
+
#
|
|
14
|
+
# == Supported ANSI Comands
|
|
15
|
+
#
|
|
16
|
+
# The following is a list of supported codes.
|
|
17
|
+
#
|
|
18
|
+
# save
|
|
19
|
+
# restore
|
|
20
|
+
# clear_screen
|
|
21
|
+
# cls # synonym for :clear_screen
|
|
22
|
+
# clear_line
|
|
23
|
+
# clr # synonym for :clear_line
|
|
24
|
+
# move
|
|
25
|
+
# up
|
|
26
|
+
# down
|
|
27
|
+
# left
|
|
28
|
+
# right
|
|
29
|
+
# display
|
|
30
|
+
#
|
|
31
|
+
# clear
|
|
32
|
+
# reset # synonym for :clear
|
|
33
|
+
# bold
|
|
34
|
+
# dark
|
|
35
|
+
# italic # not widely implemented
|
|
36
|
+
# underline
|
|
37
|
+
# underscore # synonym for :underline
|
|
38
|
+
# blink
|
|
39
|
+
# rapid_blink # not widely implemented
|
|
40
|
+
# negative # no reverse because of String#reverse
|
|
41
|
+
# concealed
|
|
42
|
+
# strikethrough # not widely implemented
|
|
43
|
+
#
|
|
44
|
+
# black
|
|
45
|
+
# red
|
|
46
|
+
# green
|
|
47
|
+
# yellow
|
|
48
|
+
# blue
|
|
49
|
+
# magenta
|
|
50
|
+
# cyan
|
|
51
|
+
# white
|
|
52
|
+
#
|
|
53
|
+
# on_black
|
|
54
|
+
# on_red
|
|
55
|
+
# on_green
|
|
56
|
+
# on_yellow
|
|
57
|
+
# on_blue
|
|
58
|
+
# on_magenta
|
|
59
|
+
# on_cyan
|
|
60
|
+
# on_white
|
|
61
|
+
#
|
|
62
|
+
# == Authors
|
|
63
|
+
#
|
|
64
|
+
# * Florian Frank
|
|
65
|
+
# * Thomas Sawyer
|
|
66
|
+
#
|
|
67
|
+
# == Speical Thanks
|
|
68
|
+
#
|
|
69
|
+
# Special thanks to Florian Frank. ANSICode is a partial adaptation
|
|
70
|
+
# of ANSIColor, Copyright (c) 2002 Florian Frank, LGPL.
|
|
71
|
+
#
|
|
72
|
+
# == Todo
|
|
73
|
+
#
|
|
74
|
+
# * Need to add rest of ANSI codes. Include modes?
|
|
75
|
+
# * Re-evaluate how color/yielding methods are defined.
|
|
76
|
+
# * Maybe up, down, right, left should have yielding methods too?
|
|
77
|
+
#
|
|
78
|
+
# == Copying
|
|
79
|
+
#
|
|
80
|
+
# Copyright (c) 2004 Florian Frank, Thomas Sawyer
|
|
81
|
+
#
|
|
82
|
+
# Ruby License
|
|
83
|
+
#
|
|
84
|
+
# This module is free software. You may use, modify, and/or redistribute this
|
|
85
|
+
# software under the same terms as Ruby.
|
|
86
|
+
#
|
|
87
|
+
# This program is distributed in the hope that it will be useful, but WITHOUT
|
|
88
|
+
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
|
89
|
+
# FOR A PARTICULAR PURPOSE.
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
# = ANSICode
|
|
93
|
+
#
|
|
94
|
+
# Module which makes it very easy to use ANSI codes.
|
|
95
|
+
# These are esspecially nice for beautifying shell output.
|
|
96
|
+
#
|
|
97
|
+
# include ANSICode
|
|
98
|
+
#
|
|
99
|
+
# p red, "Hello", blue, "World"
|
|
100
|
+
# => "\e[31mHello\e[34mWorld"
|
|
101
|
+
#
|
|
102
|
+
# p red { "Hello" } + blue { "World" }
|
|
103
|
+
# => "\e[31mHello\e[0m\e[34mWorld\e[0m"
|
|
104
|
+
#
|
|
105
|
+
# == Supported ANSI Comands
|
|
106
|
+
#
|
|
107
|
+
# The following is a list of supported codes.
|
|
108
|
+
#
|
|
109
|
+
# save
|
|
110
|
+
# restore
|
|
111
|
+
# clear_screen
|
|
112
|
+
# cls # synonym for :clear_screen
|
|
113
|
+
# clear_line
|
|
114
|
+
# clr # synonym for :clear_line
|
|
115
|
+
# move
|
|
116
|
+
# up
|
|
117
|
+
# down
|
|
118
|
+
# left
|
|
119
|
+
# right
|
|
120
|
+
# display
|
|
121
|
+
#
|
|
122
|
+
# clear
|
|
123
|
+
# reset # synonym for :clear
|
|
124
|
+
# bold
|
|
125
|
+
# dark
|
|
126
|
+
# italic # not widely implemented
|
|
127
|
+
# underline
|
|
128
|
+
# underscore # synonym for :underline
|
|
129
|
+
# blink
|
|
130
|
+
# rapid_blink # not widely implemented
|
|
131
|
+
# negative # no reverse because of String#reverse
|
|
132
|
+
# concealed
|
|
133
|
+
# strikethrough # not widely implemented
|
|
134
|
+
#
|
|
135
|
+
# black
|
|
136
|
+
# red
|
|
137
|
+
# green
|
|
138
|
+
# yellow
|
|
139
|
+
# blue
|
|
140
|
+
# magenta
|
|
141
|
+
# cyan
|
|
142
|
+
# white
|
|
143
|
+
#
|
|
144
|
+
# on_black
|
|
145
|
+
# on_red
|
|
146
|
+
# on_green
|
|
147
|
+
# on_yellow
|
|
148
|
+
# on_blue
|
|
149
|
+
# on_magenta
|
|
150
|
+
# on_cyan
|
|
151
|
+
# on_white
|
|
152
|
+
#
|
|
153
|
+
|
|
154
|
+
module Clio
|
|
155
|
+
|
|
156
|
+
module ANSICode
|
|
157
|
+
|
|
158
|
+
extend self
|
|
159
|
+
|
|
160
|
+
# Save current cursor positon.
|
|
161
|
+
|
|
162
|
+
def save
|
|
163
|
+
"\e[s"
|
|
164
|
+
end
|
|
165
|
+
|
|
166
|
+
# Restore saved cursor positon.
|
|
167
|
+
|
|
168
|
+
def restore
|
|
169
|
+
"\e[u"
|
|
170
|
+
end
|
|
171
|
+
|
|
172
|
+
# Clear the screen and move cursor to home.
|
|
173
|
+
|
|
174
|
+
def clear_screen
|
|
175
|
+
"\e[2J"
|
|
176
|
+
end
|
|
177
|
+
alias_method :cls, :clear_screen
|
|
178
|
+
|
|
179
|
+
# Clear to the end of the current line.
|
|
180
|
+
|
|
181
|
+
def clear_line
|
|
182
|
+
"\e[K"
|
|
183
|
+
end
|
|
184
|
+
alias_method :clr, :clear_line
|
|
185
|
+
|
|
186
|
+
#--
|
|
187
|
+
#def position
|
|
188
|
+
# "\e[#;#R"
|
|
189
|
+
#end
|
|
190
|
+
#++
|
|
191
|
+
|
|
192
|
+
# Move curose to line and column.
|
|
193
|
+
|
|
194
|
+
def move( line, column=0 )
|
|
195
|
+
"\e[#{line.to_i};#{column.to_i}H"
|
|
196
|
+
end
|
|
197
|
+
|
|
198
|
+
# Move cursor up a specificed number of spaces.
|
|
199
|
+
|
|
200
|
+
def up( spaces=1 )
|
|
201
|
+
"\e[#{spaces.to_i}A"
|
|
202
|
+
end
|
|
203
|
+
|
|
204
|
+
# Move cursor down a specificed number of spaces.
|
|
205
|
+
|
|
206
|
+
def down( spaces=1 )
|
|
207
|
+
"\e[#{spaces.to_i}B"
|
|
208
|
+
end
|
|
209
|
+
|
|
210
|
+
# Move cursor left a specificed number of spaces.
|
|
211
|
+
|
|
212
|
+
def left( spaces=1 )
|
|
213
|
+
"\e[#{spaces.to_i}D"
|
|
214
|
+
end
|
|
215
|
+
|
|
216
|
+
# Move cursor right a specificed number of spaces.
|
|
217
|
+
|
|
218
|
+
def right( spaces=1 )
|
|
219
|
+
"\e[#{spaces.to_i}C"
|
|
220
|
+
end
|
|
221
|
+
|
|
222
|
+
# Like +move+ but returns to original positon
|
|
223
|
+
# after yielding block or adding string argument.
|
|
224
|
+
|
|
225
|
+
def display( line, column=0, string=nil ) #:yield:
|
|
226
|
+
result = "\e[s"
|
|
227
|
+
result << "\e[#{line.to_i};#{column.to_i}H"
|
|
228
|
+
if block_given?
|
|
229
|
+
result << yield
|
|
230
|
+
result << "\e[u"
|
|
231
|
+
elsif string
|
|
232
|
+
result << string
|
|
233
|
+
result << "\e[u"
|
|
234
|
+
elsif respond_to?(:to_str)
|
|
235
|
+
result << self
|
|
236
|
+
result << "\e[u"
|
|
237
|
+
end
|
|
238
|
+
return result
|
|
239
|
+
end
|
|
240
|
+
|
|
241
|
+
# Define color codes.
|
|
242
|
+
|
|
243
|
+
def self.define_ansicolor_method(name,code)
|
|
244
|
+
class_eval <<-HERE
|
|
245
|
+
def #{name.to_s}(string = nil)
|
|
246
|
+
result = "\e[#{code}m"
|
|
247
|
+
if block_given?
|
|
248
|
+
result << yield
|
|
249
|
+
result << "\e[0m"
|
|
250
|
+
elsif string
|
|
251
|
+
result << string
|
|
252
|
+
result << "\e[0m"
|
|
253
|
+
elsif respond_to?(:to_str)
|
|
254
|
+
result << self
|
|
255
|
+
result << "\e[0m"
|
|
256
|
+
end
|
|
257
|
+
return result
|
|
258
|
+
end
|
|
259
|
+
HERE
|
|
260
|
+
end
|
|
261
|
+
|
|
262
|
+
@@colors = [
|
|
263
|
+
[ :clear , 0 ],
|
|
264
|
+
[ :reset , 0 ], # synonym for :clear
|
|
265
|
+
[ :bold , 1 ],
|
|
266
|
+
[ :dark , 2 ],
|
|
267
|
+
[ :italic , 3 ], # not widely implemented
|
|
268
|
+
[ :underline , 4 ],
|
|
269
|
+
[ :underscore , 4 ], # synonym for :underline
|
|
270
|
+
[ :blink , 5 ],
|
|
271
|
+
[ :rapid_blink , 6 ], # not widely implemented
|
|
272
|
+
[ :negative , 7 ], # no reverse because of String#reverse
|
|
273
|
+
[ :concealed , 8 ],
|
|
274
|
+
[ :strikethrough, 9 ], # not widely implemented
|
|
275
|
+
[ :black , 30 ],
|
|
276
|
+
[ :red , 31 ],
|
|
277
|
+
[ :green , 32 ],
|
|
278
|
+
[ :yellow , 33 ],
|
|
279
|
+
[ :blue , 34 ],
|
|
280
|
+
[ :magenta , 35 ],
|
|
281
|
+
[ :cyan , 36 ],
|
|
282
|
+
[ :white , 37 ],
|
|
283
|
+
[ :on_black , 40 ],
|
|
284
|
+
[ :on_red , 41 ],
|
|
285
|
+
[ :on_green , 42 ],
|
|
286
|
+
[ :on_yellow , 43 ],
|
|
287
|
+
[ :on_blue , 44 ],
|
|
288
|
+
[ :on_magenta , 45 ],
|
|
289
|
+
[ :on_cyan , 46 ],
|
|
290
|
+
[ :on_white , 47 ],
|
|
291
|
+
]
|
|
292
|
+
|
|
293
|
+
@@colors.each do |c, v|
|
|
294
|
+
define_ansicolor_method(c, v)
|
|
295
|
+
end
|
|
296
|
+
|
|
297
|
+
ColoredRegexp = /\e\[([34][0-7]|[0-9])m/
|
|
298
|
+
|
|
299
|
+
def uncolored(string = nil)
|
|
300
|
+
if block_given?
|
|
301
|
+
yield.gsub(ColoredRegexp, '')
|
|
302
|
+
elsif string
|
|
303
|
+
string.gsub(ColoredRegexp, '')
|
|
304
|
+
elsif respond_to?(:to_str)
|
|
305
|
+
gsub(ColoredRegexp, '')
|
|
306
|
+
else
|
|
307
|
+
''
|
|
308
|
+
end
|
|
309
|
+
end
|
|
310
|
+
|
|
311
|
+
module_function
|
|
312
|
+
|
|
313
|
+
def colors
|
|
314
|
+
@@colors.map { |c| c[0] }
|
|
315
|
+
end
|
|
316
|
+
|
|
317
|
+
end
|
|
318
|
+
|
|
319
|
+
end
|