rubytext 0.0.82 → 0.0.83
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/version.rb +1 -1
- data/rubytext.gemspec +2 -2
- data/tutorial/basic.css +4 -0
- data/tutorial/colortest.png +0 -0
- data/tutorial/colortest.rb +31 -0
- data/tutorial/colortest.rb.html +57 -0
- data/tutorial/damn.rb +10 -0
- data/tutorial/hw.png +0 -0
- data/tutorial/hw.rb +7 -0
- data/tutorial/hw.rb.html +41 -0
- data/tutorial/meh.html +124 -0
- data/tutorial/modes.txt +52 -0
- data/tutorial/stdscr.png +0 -0
- data/tutorial/stdscr.rb +22 -0
- data/tutorial/stdscr.rb.html +57 -0
- data/tutorial/tutorial.html +124 -0
- data/tutorial/tutorial.lt3 +129 -0
- data/tutorial/wrap-colortest.html +59 -0
- data/tutorial/wrap-hw.html +43 -0
- data/tutorial/wrap-stdscr.html +59 -0
- metadata +19 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 40b5393ec1718ba30f6d37a83e32c45261d502965e5266bcb1e141d1c98e694a
|
4
|
+
data.tar.gz: ca37d8485b30ac6e6c2f0eb44f97e6dac1a682a9fd02536e35328ef727ba6bd8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ba422d281adb72a894c5b0e2d5df0a7d4e05219420571647d2e1ad578c2ac332c3992fefb84a78c1ed49e3d58144bb87fd698ba6e77c56136cf9acd82732d128
|
7
|
+
data.tar.gz: 602acfd074380a0828d898b09890f47c967bc422649c43060ec7cb549e861e541f15b1898b147f68f27eebf155b656b1a68fd5792a7b905a552fa2ad140d8f2a
|
data/lib/version.rb
CHANGED
data/rubytext.gemspec
CHANGED
@@ -21,11 +21,11 @@ Gem::Specification.new do |s|
|
|
21
21
|
main = Find.find("lib").to_a
|
22
22
|
bin = Find.find("bin").to_a
|
23
23
|
ex = Find.find("examples").to_a
|
24
|
-
|
25
24
|
misc = %w[./README.md ./rubytext.gemspec]
|
26
25
|
test = Find.find("test").to_a
|
26
|
+
tut = Find.find("tutorial").to_a
|
27
27
|
|
28
|
-
s.files = main + bin + ex + misc + test
|
28
|
+
s.files = main + bin + ex + misc + test + tut
|
29
29
|
s.homepage = 'https://github.com/Hal9000/rubytext'
|
30
30
|
s.license = "Ruby"
|
31
31
|
end
|
data/tutorial/basic.css
ADDED
Binary file
|
@@ -0,0 +1,31 @@
|
|
1
|
+
require 'rubytext'
|
2
|
+
|
3
|
+
RubyText.start(fg: White, bg: Black)
|
4
|
+
|
5
|
+
print " "*10
|
6
|
+
Colors.each {|col| print "%-8s" % col.to_s.capitalize }
|
7
|
+
puts
|
8
|
+
puts
|
9
|
+
|
10
|
+
Colors.each do |col|
|
11
|
+
puts " " + col.to_s.capitalize
|
12
|
+
puts
|
13
|
+
end
|
14
|
+
|
15
|
+
STDSCR.bottom
|
16
|
+
|
17
|
+
r0 = 2
|
18
|
+
Colors.each do |fg|
|
19
|
+
c0 = 10
|
20
|
+
Colors.each do |bg|
|
21
|
+
win = RubyText.window(1, 7, r0, c0,
|
22
|
+
border: false,
|
23
|
+
fg: fg, bg: bg)
|
24
|
+
win.puts " TEXT "
|
25
|
+
c0 += 8
|
26
|
+
end
|
27
|
+
r0 += 2
|
28
|
+
end
|
29
|
+
|
30
|
+
getch
|
31
|
+
|
@@ -0,0 +1,57 @@
|
|
1
|
+
<style type="text/css">
|
2
|
+
<!--
|
3
|
+
pre { white-space: pre-wrap; font-family: monospace; color: #ffffff; background-color: #000000; }
|
4
|
+
tt { font-size: 15 }
|
5
|
+
body { font-family: monospace; color: #ffffff; background-color: #000000; }
|
6
|
+
.Constant { color: #ff40ff; }
|
7
|
+
.Special { color: #ffff00; }
|
8
|
+
.Identifier { color: #00ffff; }
|
9
|
+
.Statement { color: #ffff00; }
|
10
|
+
.PreProc { color: #ff40ff; }
|
11
|
+
.Type { color: #00ff00; }
|
12
|
+
-->
|
13
|
+
</style>
|
14
|
+
|
15
|
+
<script type='text/javascript'>
|
16
|
+
<!--
|
17
|
+
|
18
|
+
-->
|
19
|
+
</script>
|
20
|
+
</head>
|
21
|
+
<body>
|
22
|
+
<pre id='vimCodeElement'>
|
23
|
+
<span class="PreProc">require</span> <span class="Special">'</span><span class="Constant">rubytext</span><span class="Special">'</span>
|
24
|
+
|
25
|
+
<span class="Type">RubyText</span>.start(<span class="Constant">fg</span>: <span class="Type">White</span>, <span class="Constant">bg</span>: <span class="Type">Black</span>)
|
26
|
+
|
27
|
+
print <span class="Special">"</span><span class="Constant"> </span><span class="Special">"</span>*<span class="Constant">10</span>
|
28
|
+
<span class="Type">Colors</span>.each {|<span class="Identifier">col</span>| print <span class="Special">"</span><span class="Constant">%-8s</span><span class="Special">"</span> % col.to_s.capitalize }
|
29
|
+
puts
|
30
|
+
puts
|
31
|
+
|
32
|
+
<span class="Type">Colors</span>.each <span class="Statement">do</span> |<span class="Identifier">col</span>|
|
33
|
+
puts <span class="Special">"</span><span class="Constant"> </span><span class="Special">"</span> + col.to_s.capitalize
|
34
|
+
puts
|
35
|
+
<span class="Statement">end</span>
|
36
|
+
|
37
|
+
<span class="Type">STDSCR</span>.bottom
|
38
|
+
|
39
|
+
r0 = <span class="Constant">2</span>
|
40
|
+
<span class="Type">Colors</span>.each <span class="Statement">do</span> |<span class="Identifier">fg</span>|
|
41
|
+
c0 = <span class="Constant">10</span>
|
42
|
+
<span class="Type">Colors</span>.each <span class="Statement">do</span> |<span class="Identifier">bg</span>|
|
43
|
+
win = <span class="Type">RubyText</span>.window(<span class="Constant">1</span>, <span class="Constant">7</span>, r0, c0,
|
44
|
+
<span class="Constant">border</span>: <span class="Constant">false</span>,
|
45
|
+
<span class="Constant">fg</span>: fg, <span class="Constant">bg</span>: bg)
|
46
|
+
win.puts <span class="Special">"</span><span class="Constant"> TEXT </span><span class="Special">"</span>
|
47
|
+
c0 += <span class="Constant">8</span>
|
48
|
+
<span class="Statement">end</span>
|
49
|
+
r0 += <span class="Constant">2</span>
|
50
|
+
<span class="Statement">end</span>
|
51
|
+
|
52
|
+
getch
|
53
|
+
|
54
|
+
</pre>
|
55
|
+
</body>
|
56
|
+
</html>
|
57
|
+
<!-- vim: set foldmethod=manual : -->
|
data/tutorial/damn.rb
ADDED
data/tutorial/hw.png
ADDED
Binary file
|
data/tutorial/hw.rb
ADDED
data/tutorial/hw.rb.html
ADDED
@@ -0,0 +1,41 @@
|
|
1
|
+
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
|
5
|
+
<title>~/Dropbox/files/rubytext/tutorial/hw.rb.html</title>
|
6
|
+
<meta name="Generator" content="Vim/7.4">
|
7
|
+
<meta name="plugin-version" content="vim7.4_v2">
|
8
|
+
<meta name="syntax" content="ruby">
|
9
|
+
<meta name="settings" content="use_css,pre_wrap,no_foldcolumn,expand_tabs,prevent_copy=">
|
10
|
+
<meta name="colorscheme" content="darkblue">
|
11
|
+
<style type="text/css">
|
12
|
+
<!--
|
13
|
+
pre { white-space: pre-wrap; font-family: monospace; color: #ffffff; background-color: #000000; font-size: 15}
|
14
|
+
tt { font-size: 15 }
|
15
|
+
body { font-family: monospace; color: #ffffff; background-color: #000000; }
|
16
|
+
.Constant { color: #ff40ff; }
|
17
|
+
.Special { color: #ffff00; }
|
18
|
+
.PreProc { color: #ff40ff; }
|
19
|
+
.Type { color: #00ff00; }
|
20
|
+
-->
|
21
|
+
</style>
|
22
|
+
|
23
|
+
<script type='text/javascript'>
|
24
|
+
<!--
|
25
|
+
|
26
|
+
-->
|
27
|
+
</script>
|
28
|
+
</head>
|
29
|
+
<body>
|
30
|
+
<pre id='vimCodeElement'>
|
31
|
+
<span class="PreProc">require</span> <span class="Special">'</span><span class="Constant">rubytext</span><span class="Special">'</span>
|
32
|
+
|
33
|
+
<span class="Type">RubyText</span>.start
|
34
|
+
|
35
|
+
puts <span class="Special">"</span><span class="Constant">Hello, world!</span><span class="Special">"</span>
|
36
|
+
|
37
|
+
getch
|
38
|
+
</pre>
|
39
|
+
</body>
|
40
|
+
</html>
|
41
|
+
<!-- vim: set foldmethod=manual : -->
|
data/tutorial/meh.html
ADDED
@@ -0,0 +1,124 @@
|
|
1
|
+
<style>
|
2
|
+
pre {font-size: 15}
|
3
|
+
tt {font-size: 15}
|
4
|
+
</style>
|
5
|
+
<h1>RubyText
|
6
|
+
</h1>
|
7
|
+
<p>
|
8
|
+
|
9
|
+
RubyText is a curses wrapper. The modern variant is ncurses, and there are also
|
10
|
+
others. This tutorial doesn't cover much of "real" curses, as the aim is to
|
11
|
+
wrap it and make it simpler.
|
12
|
+
<p>
|
13
|
+
|
14
|
+
This project is somewhat in its infancy. Once it is a little more mature, I
|
15
|
+
hope to produce an Elixir version. (Elixir is not usually used at the desktop,
|
16
|
+
but it <i>can</i> be.)
|
17
|
+
<p>
|
18
|
+
|
19
|
+
Let's start at the beginning with the overused "hello world" example.
|
20
|
+
<p>
|
21
|
+
|
22
|
+
<!-- high = 215 hcode = 165 -->
|
23
|
+
<iframe frameborder=0
|
24
|
+
width=566 height=215
|
25
|
+
src='wrap-hw.html'>
|
26
|
+
</iframe>
|
27
|
+
<p>
|
28
|
+
|
29
|
+
Here are some things to notice:
|
30
|
+
<ul>
|
31
|
+
<li>Obviously you have to require the <tt>rubytext</tt> library.</li>
|
32
|
+
<li>You have to invoke <tt>RubyText.start</tt> (possibly with parameters).</li>
|
33
|
+
<li>When the curses environment is started, things like <tt>puts</tt> are overridden.</li>
|
34
|
+
<li>We call <tt>getch</tt> here (get a character) to make the program "pause" so as not to exit before we see anything.</li>
|
35
|
+
<li>At program exit, your screen will be restored to normal.</li>
|
36
|
+
</ul>
|
37
|
+
Here's another example.
|
38
|
+
<p>
|
39
|
+
|
40
|
+
<!-- high = 277 hcode = 465 -->
|
41
|
+
<iframe frameborder=0
|
42
|
+
width=870 height=465
|
43
|
+
src='wrap-stdscr.html'>
|
44
|
+
</iframe>
|
45
|
+
<p>
|
46
|
+
|
47
|
+
<h3>The start method
|
48
|
+
</h3>
|
49
|
+
<p>
|
50
|
+
|
51
|
+
The <tt>start</tt> method can take a number of parameters, some of which
|
52
|
+
are keyword arguments. If you know curses, some of these will be familiar,
|
53
|
+
while others provide functionality unrelated to what curses provides.
|
54
|
+
<p>
|
55
|
+
|
56
|
+
<dl>
|
57
|
+
<dt><tt>:cbreak</tt> </dt>
|
58
|
+
<dd> Like <tt>cbreak</tt> in curses. Inverse is <tt>:_cbreak</tt> (preferred) or <tt>:nocbreak</tt></dd>
|
59
|
+
<dt><tt>:raw</tt> </dt>
|
60
|
+
<dd> Like <tt>raw</tt> in curses. Inverse is <tt>:_raw</tt> (preferred) or <tt>:noraw</tt></dd>
|
61
|
+
<dt><tt>:echo</tt> </dt>
|
62
|
+
<dd> Like <tt>echo</tt> in curses. Inverse is <tt>:_echo</tt> (preferred) or <tt>:noecho</tt></dd>
|
63
|
+
<dt><tt>:keypad</tt> </dt>
|
64
|
+
<dd> Like <tt>keypad</tt> in curses. Inverse is <tt>:_keypad</tt> (preferred) or <tt>:nokeypad</tt></dd>
|
65
|
+
<dt><tt>log:</tt> <i>logfile</i> </dt>
|
66
|
+
<dd> Log debugging information to specified file.</dd>
|
67
|
+
<dt><tt>fg:</tt> <i>foreground</i> </dt>
|
68
|
+
<dd> Set foreground color for STDSCR.</dd>
|
69
|
+
<dt><tt>bg:</tt> <i>background</i> </dt>
|
70
|
+
<dd> Set background color for STDSCR.</dd>
|
71
|
+
<dt><tt>scroll:</tt> <i>Boolean</i> </dt>
|
72
|
+
<dd> Permit (or disallow) window scrolling for STDSCR.</dd>
|
73
|
+
</dl>
|
74
|
+
<p>
|
75
|
+
|
76
|
+
The defaults are as follows:
|
77
|
+
<p>
|
78
|
+
|
79
|
+
<pre>
|
80
|
+
RubyText.start(:cbreak, :_raw, :_echo, :keypad, log: "/tmp/rubytext.log",
|
81
|
+
fg: White, bg: Blue, scroll: true)
|
82
|
+
|
83
|
+
# can be abbreviated simply:
|
84
|
+
|
85
|
+
RubyText.start
|
86
|
+
</pre>
|
87
|
+
If you're a relative curses newbie (like me), you may have some confusion about
|
88
|
+
the <tt>cbreak</tt> and <tt>raw</tt> modes. Let's clear it up a little with these four facts.
|
89
|
+
<p>
|
90
|
+
|
91
|
+
<ul>
|
92
|
+
<li>First of all, <i>neither</i> of these permits buffered keyboard input or line editing (such as backspace).</li>
|
93
|
+
<li>As for interrupts such as <tt>^C</tt> and <tt>^Z</tt>, <tt>cbreak</tt> <i>permits</i> these (handles them as usual).</li>
|
94
|
+
<li>The same interrupts are <i>not</i> honored by <tt>raw</tt>; instead, they are read as characters.</li>
|
95
|
+
<li>Finally, <tt>cbreak</tt> mode overrides <tt>raw</tt> mode if they are specified together.</li>
|
96
|
+
</ul>
|
97
|
+
As to colors, the defaults of <tt>White</tt> and <tt>Blue</tt> are purely arbitrary. They may change.
|
98
|
+
<p>
|
99
|
+
|
100
|
+
The standard curses implementation recognizes eight colors: <tt>Black</tt>, <tt>Blue</tt>, <tt>Cyan</tt>,
|
101
|
+
<tt>Green</tt>, <tt>Magenta</tt>, <tt>Red</tt>, <tt>White</tt>, <tt>Yellow</tt>. Each of these constants refers to a symbol
|
102
|
+
of the same (lowercased) name. What these colors look like in your own local environment
|
103
|
+
may depend on many factors such as your operating system and terminal driver.
|
104
|
+
<p>
|
105
|
+
|
106
|
+
My own environment is iterm on Mac OSX with fairly standard settings. Here is some code
|
107
|
+
that will display all 64 possibilities of foreground/background. (Note that curses seems
|
108
|
+
to "cheat" when these two are the same, presumably to preserve legibility.)
|
109
|
+
<p>
|
110
|
+
|
111
|
+
<!-- high = 248 hcode = 521 -->
|
112
|
+
<iframe frameborder=0
|
113
|
+
width=828 height=521
|
114
|
+
src='wrap-colortest.html'>
|
115
|
+
</iframe>
|
116
|
+
<p>
|
117
|
+
|
118
|
+
<p>
|
119
|
+
|
120
|
+
That's all for now.
|
121
|
+
<p>
|
122
|
+
|
123
|
+
<p>
|
124
|
+
|
data/tutorial/modes.txt
ADDED
@@ -0,0 +1,52 @@
|
|
1
|
+
MODE buffering? erase/kill? IQSF NOTES
|
2
|
+
|
3
|
+
cbreak no no yes cbreak overrides raw.
|
4
|
+
_cbreak yes yes
|
5
|
+
raw no no no reads: interrupt, quit, suspend, flow control
|
6
|
+
|
7
|
+
Defaults: cbreak, _echo, keypad
|
8
|
+
|
9
|
+
cbreak routine disables line buffering and erase/kill character-processing
|
10
|
+
(interrupt and flow control characters are unaffected), making characters
|
11
|
+
typed by the user immediately available to the program.
|
12
|
+
|
13
|
+
nocbreak returns the terminal to normal (cooked) mode.
|
14
|
+
|
15
|
+
A program should call cbreak or nocbreak explicitly.
|
16
|
+
Most interactive programs using curses set the cbreak mode.
|
17
|
+
Note that cbreak overrides raw.
|
18
|
+
|
19
|
+
The echo and noecho routines control whether characters are echoed by getch
|
20
|
+
Echoing by the tty driver is always disabled, but initially getch is in echo mode.
|
21
|
+
|
22
|
+
most interactive programs disable echoing
|
23
|
+
|
24
|
+
keypad option enables keypad of user's terminal.
|
25
|
+
User can press a function key (e.g. arrow) and getch returns a single
|
26
|
+
value e.g. KEY_LEFT.
|
27
|
+
|
28
|
+
Skip for now:
|
29
|
+
halfdelay
|
30
|
+
intrflush option
|
31
|
+
|
32
|
+
Skip?
|
33
|
+
nodelay causes getch to be a non-blocking call.
|
34
|
+
If no input is ready, getch returns ERR.
|
35
|
+
|
36
|
+
Skip?
|
37
|
+
notimeout(win, TRUE) -- wgetch does not set a timer.
|
38
|
+
Differentiate between sequences received from a function key and those typed by a user.
|
39
|
+
|
40
|
+
raw and noraw --
|
41
|
+
Raw mode is similar to cbreak mode -- characters typed are immediately passed through.
|
42
|
+
Differences: in raw mode -- the interrupt, quit, suspend, and flow control characters
|
43
|
+
are all passed through uninterpreted, instead of generating a signal. The behavior of
|
44
|
+
the BREAK key depends on other bits in the tty driver that are not set by curses.
|
45
|
+
|
46
|
+
Skip!
|
47
|
+
noqiflush
|
48
|
+
|
49
|
+
Skip!
|
50
|
+
timeout and wtimeout routines set blocking or non-blocking read for a given window.
|
51
|
+
|
52
|
+
|
data/tutorial/stdscr.png
ADDED
Binary file
|
data/tutorial/stdscr.rb
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'rubytext'
|
2
|
+
|
3
|
+
RubyText.start(fg: Yellow, bg: Blue)
|
4
|
+
|
5
|
+
puts "This writes by default to STDSCR"
|
6
|
+
STDSCR.puts "and this does the same thing.\n "
|
7
|
+
|
8
|
+
print "Only one line "
|
9
|
+
print "of output "
|
10
|
+
print "printed "
|
11
|
+
puts "here."
|
12
|
+
|
13
|
+
puts
|
14
|
+
|
15
|
+
array = [1, 2, 3, 4, 5]
|
16
|
+
|
17
|
+
puts "p also works:"
|
18
|
+
p array
|
19
|
+
|
20
|
+
puts
|
21
|
+
|
22
|
+
getch
|
@@ -0,0 +1,57 @@
|
|
1
|
+
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
|
5
|
+
<title>~/Dropbox/files/rubytext/tutorial/stdscr.rb.html</title>
|
6
|
+
<meta name="Generator" content="Vim/7.4">
|
7
|
+
<meta name="plugin-version" content="vim7.4_v2">
|
8
|
+
<meta name="syntax" content="ruby">
|
9
|
+
<meta name="settings" content="use_css,pre_wrap,no_foldcolumn,expand_tabs,prevent_copy=">
|
10
|
+
<meta name="colorscheme" content="darkblue">
|
11
|
+
<style type="text/css">
|
12
|
+
<!--
|
13
|
+
pre { white-space: pre-wrap; font-family: monospace; color: #ffffff; background-color: #000000; }
|
14
|
+
pre {font-size: 16}
|
15
|
+
tt {font-size: 16}
|
16
|
+
body { font-family: monospace; color: #ffffff; background-color: #000000; }
|
17
|
+
.Constant { color: #ff40ff; }
|
18
|
+
.Special { color: #ffff00; }
|
19
|
+
.PreProc { color: #ff40ff; }
|
20
|
+
.Type { color: #00ff00; }
|
21
|
+
-->
|
22
|
+
</style>
|
23
|
+
|
24
|
+
<script type='text/javascript'>
|
25
|
+
<!--
|
26
|
+
|
27
|
+
-->
|
28
|
+
</script>
|
29
|
+
</head>
|
30
|
+
<body>
|
31
|
+
<pre id='vimCodeElement'>
|
32
|
+
<span class="PreProc">require</span> <span class="Special">'</span><span class="Constant">rubytext</span><span class="Special">'</span>
|
33
|
+
|
34
|
+
<span class="Type">RubyText</span>.start(<span class="Constant">fg</span>: <span class="Type">Yellow</span>, <span class="Constant">bg</span>: <span class="Type">Blue</span>)
|
35
|
+
|
36
|
+
puts <span class="Special">"</span><span class="Constant">This writes by default to STDSCR</span><span class="Special">"</span>
|
37
|
+
<span class="Type">STDSCR</span>.puts <span class="Special">"</span><span class="Constant">and this does the same thing.</span><span class="Special">\n</span><span class="Constant"> </span><span class="Special">"</span>
|
38
|
+
|
39
|
+
print <span class="Special">"</span><span class="Constant">Only one line </span><span class="Special">"</span>
|
40
|
+
print <span class="Special">"</span><span class="Constant">of output </span><span class="Special">"</span>
|
41
|
+
print <span class="Special">"</span><span class="Constant">printed </span><span class="Special">"</span>
|
42
|
+
puts <span class="Special">"</span><span class="Constant">here.</span><span class="Special">"</span>
|
43
|
+
|
44
|
+
puts
|
45
|
+
|
46
|
+
array = [<span class="Constant">1</span>, <span class="Constant">2</span>, <span class="Constant">3</span>, <span class="Constant">4</span>, <span class="Constant">5</span>]
|
47
|
+
|
48
|
+
puts <span class="Special">"</span><span class="Constant">p also works:</span><span class="Special">"</span>
|
49
|
+
p array
|
50
|
+
|
51
|
+
puts
|
52
|
+
|
53
|
+
getch
|
54
|
+
</pre>
|
55
|
+
</body>
|
56
|
+
</html>
|
57
|
+
<!-- vim: set foldmethod=manual : -->
|
@@ -0,0 +1,124 @@
|
|
1
|
+
<style>
|
2
|
+
pre {font-size: 15}
|
3
|
+
tt {font-size: 15}
|
4
|
+
</style>
|
5
|
+
<h1>RubyText
|
6
|
+
</h1>
|
7
|
+
<p>
|
8
|
+
|
9
|
+
RubyText is a curses wrapper. The modern variant is ncurses, and there are also
|
10
|
+
others. This tutorial doesn't cover much of "real" curses, as the aim is to
|
11
|
+
wrap it and make it simpler.
|
12
|
+
<p>
|
13
|
+
|
14
|
+
This project is somewhat in its infancy. Once it is a little more mature, I
|
15
|
+
hope to produce an Elixir version. (Elixir is not usually used at the desktop,
|
16
|
+
but it <i>can</i> be.)
|
17
|
+
<p>
|
18
|
+
|
19
|
+
Let's start at the beginning with the overused "hello world" example.
|
20
|
+
<p>
|
21
|
+
|
22
|
+
<!-- high = 215 hcode = 165 -->
|
23
|
+
<iframe frameborder=0
|
24
|
+
width=566 height=215
|
25
|
+
src='wrap-hw.html'>
|
26
|
+
</iframe>
|
27
|
+
<p>
|
28
|
+
|
29
|
+
Here are some things to notice:
|
30
|
+
<ul>
|
31
|
+
<li>Obviously you have to require the <tt>rubytext</tt> library.</li>
|
32
|
+
<li>You have to invoke <tt>RubyText.start</tt> (possibly with parameters).</li>
|
33
|
+
<li>When the curses environment is started, things like <tt>puts</tt> are overridden.</li>
|
34
|
+
<li>We call <tt>getch</tt> here (get a character) to make the program "pause" so as not to exit before we see anything.</li>
|
35
|
+
<li>At program exit, your screen will be restored to normal.</li>
|
36
|
+
</ul>
|
37
|
+
Here's another example.
|
38
|
+
<p>
|
39
|
+
|
40
|
+
<!-- high = 277 hcode = 465 -->
|
41
|
+
<iframe frameborder=0
|
42
|
+
width=870 height=465
|
43
|
+
src='wrap-stdscr.html'>
|
44
|
+
</iframe>
|
45
|
+
<p>
|
46
|
+
|
47
|
+
<h3>The start method
|
48
|
+
</h3>
|
49
|
+
<p>
|
50
|
+
|
51
|
+
The <tt>start</tt> method can take a number of parameters, some of which
|
52
|
+
are keyword arguments. If you know curses, some of these will be familiar,
|
53
|
+
while others provide functionality unrelated to what curses provides.
|
54
|
+
<p>
|
55
|
+
|
56
|
+
<dl>
|
57
|
+
<dt><tt>:cbreak</tt> </dt>
|
58
|
+
<dd> Like <tt>cbreak</tt> in curses. Inverse is <tt>:_cbreak</tt> (preferred) or <tt>:nocbreak</tt></dd>
|
59
|
+
<dt><tt>:raw</tt> </dt>
|
60
|
+
<dd> Like <tt>raw</tt> in curses. Inverse is <tt>:_raw</tt> (preferred) or <tt>:noraw</tt></dd>
|
61
|
+
<dt><tt>:echo</tt> </dt>
|
62
|
+
<dd> Like <tt>echo</tt> in curses. Inverse is <tt>:_echo</tt> (preferred) or <tt>:noecho</tt></dd>
|
63
|
+
<dt><tt>:keypad</tt> </dt>
|
64
|
+
<dd> Like <tt>keypad</tt> in curses. Inverse is <tt>:_keypad</tt> (preferred) or <tt>:nokeypad</tt></dd>
|
65
|
+
<dt><tt>log:</tt> <i>logfile</i> </dt>
|
66
|
+
<dd> Log debugging information to specified file.</dd>
|
67
|
+
<dt><tt>fg:</tt> <i>foreground</i> </dt>
|
68
|
+
<dd> Set foreground color for STDSCR.</dd>
|
69
|
+
<dt><tt>bg:</tt> <i>background</i> </dt>
|
70
|
+
<dd> Set background color for STDSCR.</dd>
|
71
|
+
<dt><tt>scroll:</tt> <i>Boolean</i> </dt>
|
72
|
+
<dd> Permit (or disallow) window scrolling for STDSCR.</dd>
|
73
|
+
</dl>
|
74
|
+
<p>
|
75
|
+
|
76
|
+
The defaults are as follows:
|
77
|
+
<p>
|
78
|
+
|
79
|
+
<pre>
|
80
|
+
RubyText.start(:cbreak, :_raw, :_echo, :keypad, log: "/tmp/rubytext.log",
|
81
|
+
fg: White, bg: Blue, scroll: true)
|
82
|
+
|
83
|
+
# can be abbreviated simply:
|
84
|
+
|
85
|
+
RubyText.start
|
86
|
+
</pre>
|
87
|
+
If you're a relative curses newbie (like me), you may have some confusion about
|
88
|
+
the <tt>cbreak</tt> and <tt>raw</tt> modes. Let's clear it up a little with these four facts.
|
89
|
+
<p>
|
90
|
+
|
91
|
+
<ul>
|
92
|
+
<li>First of all, <i>neither</i> of these permits buffered keyboard input or line editing (such as backspace).</li>
|
93
|
+
<li>As for interrupts such as <tt>^C</tt> and <tt>^Z</tt>, <tt>cbreak</tt> <i>permits</i> these (handles them as usual).</li>
|
94
|
+
<li>The same interrupts are <i>not</i> honored by <tt>raw</tt>; instead, they are read as characters.</li>
|
95
|
+
<li>Finally, <tt>cbreak</tt> mode overrides <tt>raw</tt> mode if they are specified together.</li>
|
96
|
+
</ul>
|
97
|
+
As to colors, the defaults of <tt>White</tt> and <tt>Blue</tt> are purely arbitrary. They may change.
|
98
|
+
<p>
|
99
|
+
|
100
|
+
The standard curses implementation recognizes eight colors: <tt>Black</tt>, <tt>Blue</tt>, <tt>Cyan</tt>,
|
101
|
+
<tt>Green</tt>, <tt>Magenta</tt>, <tt>Red</tt>, <tt>White</tt>, <tt>Yellow</tt>. Each of these constants refers to a symbol
|
102
|
+
of the same (lowercased) name. What these colors look like in your own local environment
|
103
|
+
may depend on many factors such as your operating system and terminal driver.
|
104
|
+
<p>
|
105
|
+
|
106
|
+
My own environment is iterm on Mac OSX with fairly standard settings. Here is some code
|
107
|
+
that will display all 64 possibilities of foreground/background. (Note that curses seems
|
108
|
+
to "cheat" when these two are the same, presumably to preserve legibility.)
|
109
|
+
<p>
|
110
|
+
|
111
|
+
<!-- high = 248 hcode = 521 -->
|
112
|
+
<iframe frameborder=0
|
113
|
+
width=828 height=521
|
114
|
+
src='wrap-colortest.html'>
|
115
|
+
</iframe>
|
116
|
+
<p>
|
117
|
+
|
118
|
+
<p>
|
119
|
+
|
120
|
+
That's all for now.
|
121
|
+
<p>
|
122
|
+
|
123
|
+
<p>
|
124
|
+
|
@@ -0,0 +1,129 @@
|
|
1
|
+
.mixin bookish
|
2
|
+
|
3
|
+
.copy basic.css
|
4
|
+
|
5
|
+
.h1 RubyText
|
6
|
+
|
7
|
+
RubyText is a curses wrapper. The modern variant is ncurses, and there are also
|
8
|
+
others. This tutorial doesn't cover much of "real" curses, as the aim is to
|
9
|
+
wrap it and make it simpler.
|
10
|
+
|
11
|
+
This project is somewhat in its infancy. Once it is a little more mature, I
|
12
|
+
hope to produce an Elixir version. (Elixir is not usually used at the desktop,
|
13
|
+
but it _can be.)
|
14
|
+
|
15
|
+
.def example
|
16
|
+
arg, ppl = _args
|
17
|
+
ppl ||= 20
|
18
|
+
file = arg + ".rb.html"
|
19
|
+
sshot = arg + ".png"
|
20
|
+
code = File.read(file) # HTML from vim
|
21
|
+
lines = code.split("\n")
|
22
|
+
n0 = lines.find_index {|x| x =~ /^<pre/ }
|
23
|
+
n1 = lines.find_index {|x| x =~ /^<.pre>/ }
|
24
|
+
nlines = n1 - n0 - 1
|
25
|
+
# hw.png PNG 283x190 283x190+0+0 8-bit sRGB 5443B 0.000u 0:00.000
|
26
|
+
img_data = `identify #{sshot}` # depends on imagemagick
|
27
|
+
wimg, himg = img_data.split[2].split("x")
|
28
|
+
wide = (wimg.to_i * 2).to_i
|
29
|
+
high = himg.to_i + 25
|
30
|
+
hcode = nlines*ppl.to_i + 25
|
31
|
+
hmax = [high, hcode].max # Code may be longer than screenshot height
|
32
|
+
_puts "<!-- high = #{high} hcode = #{hcode} -->"
|
33
|
+
File.open("wrap-#{arg}.html", "w") do |f|
|
34
|
+
f.puts "<table width=100% cellpadding=2><tr><td width=50% valign=top>"
|
35
|
+
f.puts code
|
36
|
+
f.puts "</td><td width=50% valign=top><img src=#{sshot} valign=top></td></tr></table>"
|
37
|
+
end
|
38
|
+
_puts <<-HTML
|
39
|
+
<iframe frameborder=0
|
40
|
+
width=#{wide} height=#{hmax}
|
41
|
+
src='wrap-#{arg}.html'>
|
42
|
+
</iframe>
|
43
|
+
HTML
|
44
|
+
.end
|
45
|
+
|
46
|
+
Let's start at the beginning with the overused "hello world" example.
|
47
|
+
|
48
|
+
.example hw
|
49
|
+
|
50
|
+
Here are some things to notice:
|
51
|
+
.list
|
52
|
+
Obviously you have to require the `rubytext library.
|
53
|
+
You have to invoke `RubyText.start (possibly with parameters).
|
54
|
+
When the curses environment is started, things like `puts are overridden.
|
55
|
+
We call `getch here (get a character) to make the program "pause" so as not to exit before we see anything.
|
56
|
+
At program exit, your screen will be restored to normal.
|
57
|
+
.end
|
58
|
+
|
59
|
+
Here's another example.
|
60
|
+
|
61
|
+
.example stdscr
|
62
|
+
|
63
|
+
.h3 The start method
|
64
|
+
|
65
|
+
The `start method can take a number of parameters, some of which
|
66
|
+
are keyword arguments. If you know curses, some of these will be familiar,
|
67
|
+
while others provide functionality unrelated to what curses provides.
|
68
|
+
|
69
|
+
.dlist |
|
70
|
+
`:cbreak | Like `cbreak in curses. Inverse is `:\_cbreak (preferred) or `:nocbreak
|
71
|
+
`:raw | Like `raw in curses. Inverse is `:\_raw (preferred) or `:noraw
|
72
|
+
`:echo | Like `echo in curses. Inverse is `:\_echo (preferred) or `:noecho
|
73
|
+
`:keypad | Like `keypad in curses. Inverse is `:\_keypad (preferred) or `:nokeypad
|
74
|
+
`log: _logfile | Log debugging information to specified file.
|
75
|
+
`fg: _foreground | Set foreground color for STDSCR.
|
76
|
+
`bg: _background | Set background color for STDSCR.
|
77
|
+
`scroll: _Boolean | Permit (or disallow) window scrolling for STDSCR.
|
78
|
+
.end
|
79
|
+
|
80
|
+
|
81
|
+
The defaults are as follows:
|
82
|
+
|
83
|
+
.mono
|
84
|
+
RubyText.start(:cbreak, :_raw, :_echo, :keypad, log: "/tmp/rubytext.log",
|
85
|
+
fg: White, bg: Blue, scroll: true)
|
86
|
+
|
87
|
+
# can be abbreviated simply:
|
88
|
+
|
89
|
+
RubyText.start
|
90
|
+
.end
|
91
|
+
|
92
|
+
.comment
|
93
|
+
Skip?
|
94
|
+
nodelay causes getch to be a non-blocking call.
|
95
|
+
If no input is ready, getch returns ERR.
|
96
|
+
|
97
|
+
Skip?
|
98
|
+
notimeout(win, TRUE) -- wgetch does not set a timer.
|
99
|
+
Differentiate between sequences received from a function key and those typed by a user.
|
100
|
+
.end
|
101
|
+
|
102
|
+
If you're a relative curses newbie (like me), you may have some confusion about
|
103
|
+
the `cbreak and `raw modes. Let's clear it up a little with these four facts.
|
104
|
+
|
105
|
+
.list
|
106
|
+
First of all, _neither of these permits buffered keyboard input or line editing (such as backspace).
|
107
|
+
As for interrupts such as `^C and ``^Z, `cbreak _permits these (handles them as usual).
|
108
|
+
The same interrupts are _not honored by `[raw]; instead, they are read as characters.
|
109
|
+
Finally, `cbreak mode overrides `raw mode if they are specified together.
|
110
|
+
.end
|
111
|
+
|
112
|
+
As for colors: The defaults of `White and `Blue are purely arbitrary. They may change.
|
113
|
+
|
114
|
+
The standard curses implementation recognizes eight colors: ``Black, ``Blue, ``Cyan,
|
115
|
+
``Green, ``Magenta, ``Red, ``White, ``Yellow. Each of these constants refers to a symbol
|
116
|
+
of the same (lowercased) name. What these colors look like in your own local environment
|
117
|
+
may depend on many factors such as your operating system and terminal driver.
|
118
|
+
|
119
|
+
My own environment is iterm on Mac OSX with fairly standard settings. Here is some code
|
120
|
+
that will display all 64 possibilities of foreground/background. (Note that curses seems
|
121
|
+
to "cheat" when these two are the same, presumably to preserve legibility.)
|
122
|
+
|
123
|
+
.example colortest 16
|
124
|
+
|
125
|
+
|
126
|
+
That's all for now.
|
127
|
+
|
128
|
+
|
129
|
+
.cleanup toc.tmp
|
@@ -0,0 +1,59 @@
|
|
1
|
+
<table width=100% cellpadding=2><tr><td width=50% valign=top>
|
2
|
+
<style type="text/css">
|
3
|
+
<!--
|
4
|
+
pre { white-space: pre-wrap; font-family: monospace; color: #ffffff; background-color: #000000; }
|
5
|
+
tt { font-size: 15 }
|
6
|
+
body { font-family: monospace; color: #ffffff; background-color: #000000; }
|
7
|
+
.Constant { color: #ff40ff; }
|
8
|
+
.Special { color: #ffff00; }
|
9
|
+
.Identifier { color: #00ffff; }
|
10
|
+
.Statement { color: #ffff00; }
|
11
|
+
.PreProc { color: #ff40ff; }
|
12
|
+
.Type { color: #00ff00; }
|
13
|
+
-->
|
14
|
+
</style>
|
15
|
+
|
16
|
+
<script type='text/javascript'>
|
17
|
+
<!--
|
18
|
+
|
19
|
+
-->
|
20
|
+
</script>
|
21
|
+
</head>
|
22
|
+
<body>
|
23
|
+
<pre id='vimCodeElement'>
|
24
|
+
<span class="PreProc">require</span> <span class="Special">'</span><span class="Constant">rubytext</span><span class="Special">'</span>
|
25
|
+
|
26
|
+
<span class="Type">RubyText</span>.start(<span class="Constant">fg</span>: <span class="Type">White</span>, <span class="Constant">bg</span>: <span class="Type">Black</span>)
|
27
|
+
|
28
|
+
print <span class="Special">"</span><span class="Constant"> </span><span class="Special">"</span>*<span class="Constant">10</span>
|
29
|
+
<span class="Type">Colors</span>.each {|<span class="Identifier">col</span>| print <span class="Special">"</span><span class="Constant">%-8s</span><span class="Special">"</span> % col.to_s.capitalize }
|
30
|
+
puts
|
31
|
+
puts
|
32
|
+
|
33
|
+
<span class="Type">Colors</span>.each <span class="Statement">do</span> |<span class="Identifier">col</span>|
|
34
|
+
puts <span class="Special">"</span><span class="Constant"> </span><span class="Special">"</span> + col.to_s.capitalize
|
35
|
+
puts
|
36
|
+
<span class="Statement">end</span>
|
37
|
+
|
38
|
+
<span class="Type">STDSCR</span>.bottom
|
39
|
+
|
40
|
+
r0 = <span class="Constant">2</span>
|
41
|
+
<span class="Type">Colors</span>.each <span class="Statement">do</span> |<span class="Identifier">fg</span>|
|
42
|
+
c0 = <span class="Constant">10</span>
|
43
|
+
<span class="Type">Colors</span>.each <span class="Statement">do</span> |<span class="Identifier">bg</span>|
|
44
|
+
win = <span class="Type">RubyText</span>.window(<span class="Constant">1</span>, <span class="Constant">7</span>, r0, c0,
|
45
|
+
<span class="Constant">border</span>: <span class="Constant">false</span>,
|
46
|
+
<span class="Constant">fg</span>: fg, <span class="Constant">bg</span>: bg)
|
47
|
+
win.puts <span class="Special">"</span><span class="Constant"> TEXT </span><span class="Special">"</span>
|
48
|
+
c0 += <span class="Constant">8</span>
|
49
|
+
<span class="Statement">end</span>
|
50
|
+
r0 += <span class="Constant">2</span>
|
51
|
+
<span class="Statement">end</span>
|
52
|
+
|
53
|
+
getch
|
54
|
+
|
55
|
+
</pre>
|
56
|
+
</body>
|
57
|
+
</html>
|
58
|
+
<!-- vim: set foldmethod=manual : -->
|
59
|
+
</td><td width=50% valign=top><img src=colortest.png valign=top></td></tr></table>
|
@@ -0,0 +1,43 @@
|
|
1
|
+
<table width=100% cellpadding=2><tr><td width=50% valign=top>
|
2
|
+
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
|
3
|
+
<html>
|
4
|
+
<head>
|
5
|
+
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
|
6
|
+
<title>~/Dropbox/files/rubytext/tutorial/hw.rb.html</title>
|
7
|
+
<meta name="Generator" content="Vim/7.4">
|
8
|
+
<meta name="plugin-version" content="vim7.4_v2">
|
9
|
+
<meta name="syntax" content="ruby">
|
10
|
+
<meta name="settings" content="use_css,pre_wrap,no_foldcolumn,expand_tabs,prevent_copy=">
|
11
|
+
<meta name="colorscheme" content="darkblue">
|
12
|
+
<style type="text/css">
|
13
|
+
<!--
|
14
|
+
pre { white-space: pre-wrap; font-family: monospace; color: #ffffff; background-color: #000000; font-size: 15}
|
15
|
+
tt { font-size: 15 }
|
16
|
+
body { font-family: monospace; color: #ffffff; background-color: #000000; }
|
17
|
+
.Constant { color: #ff40ff; }
|
18
|
+
.Special { color: #ffff00; }
|
19
|
+
.PreProc { color: #ff40ff; }
|
20
|
+
.Type { color: #00ff00; }
|
21
|
+
-->
|
22
|
+
</style>
|
23
|
+
|
24
|
+
<script type='text/javascript'>
|
25
|
+
<!--
|
26
|
+
|
27
|
+
-->
|
28
|
+
</script>
|
29
|
+
</head>
|
30
|
+
<body>
|
31
|
+
<pre id='vimCodeElement'>
|
32
|
+
<span class="PreProc">require</span> <span class="Special">'</span><span class="Constant">rubytext</span><span class="Special">'</span>
|
33
|
+
|
34
|
+
<span class="Type">RubyText</span>.start
|
35
|
+
|
36
|
+
puts <span class="Special">"</span><span class="Constant">Hello, world!</span><span class="Special">"</span>
|
37
|
+
|
38
|
+
getch
|
39
|
+
</pre>
|
40
|
+
</body>
|
41
|
+
</html>
|
42
|
+
<!-- vim: set foldmethod=manual : -->
|
43
|
+
</td><td width=50% valign=top><img src=hw.png valign=top></td></tr></table>
|
@@ -0,0 +1,59 @@
|
|
1
|
+
<table width=100% cellpadding=2><tr><td width=50% valign=top>
|
2
|
+
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
|
3
|
+
<html>
|
4
|
+
<head>
|
5
|
+
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
|
6
|
+
<title>~/Dropbox/files/rubytext/tutorial/stdscr.rb.html</title>
|
7
|
+
<meta name="Generator" content="Vim/7.4">
|
8
|
+
<meta name="plugin-version" content="vim7.4_v2">
|
9
|
+
<meta name="syntax" content="ruby">
|
10
|
+
<meta name="settings" content="use_css,pre_wrap,no_foldcolumn,expand_tabs,prevent_copy=">
|
11
|
+
<meta name="colorscheme" content="darkblue">
|
12
|
+
<style type="text/css">
|
13
|
+
<!--
|
14
|
+
pre { white-space: pre-wrap; font-family: monospace; color: #ffffff; background-color: #000000; }
|
15
|
+
pre {font-size: 16}
|
16
|
+
tt {font-size: 16}
|
17
|
+
body { font-family: monospace; color: #ffffff; background-color: #000000; }
|
18
|
+
.Constant { color: #ff40ff; }
|
19
|
+
.Special { color: #ffff00; }
|
20
|
+
.PreProc { color: #ff40ff; }
|
21
|
+
.Type { color: #00ff00; }
|
22
|
+
-->
|
23
|
+
</style>
|
24
|
+
|
25
|
+
<script type='text/javascript'>
|
26
|
+
<!--
|
27
|
+
|
28
|
+
-->
|
29
|
+
</script>
|
30
|
+
</head>
|
31
|
+
<body>
|
32
|
+
<pre id='vimCodeElement'>
|
33
|
+
<span class="PreProc">require</span> <span class="Special">'</span><span class="Constant">rubytext</span><span class="Special">'</span>
|
34
|
+
|
35
|
+
<span class="Type">RubyText</span>.start(<span class="Constant">fg</span>: <span class="Type">Yellow</span>, <span class="Constant">bg</span>: <span class="Type">Blue</span>)
|
36
|
+
|
37
|
+
puts <span class="Special">"</span><span class="Constant">This writes by default to STDSCR</span><span class="Special">"</span>
|
38
|
+
<span class="Type">STDSCR</span>.puts <span class="Special">"</span><span class="Constant">and this does the same thing.</span><span class="Special">\n</span><span class="Constant"> </span><span class="Special">"</span>
|
39
|
+
|
40
|
+
print <span class="Special">"</span><span class="Constant">Only one line </span><span class="Special">"</span>
|
41
|
+
print <span class="Special">"</span><span class="Constant">of output </span><span class="Special">"</span>
|
42
|
+
print <span class="Special">"</span><span class="Constant">printed </span><span class="Special">"</span>
|
43
|
+
puts <span class="Special">"</span><span class="Constant">here.</span><span class="Special">"</span>
|
44
|
+
|
45
|
+
puts
|
46
|
+
|
47
|
+
array = [<span class="Constant">1</span>, <span class="Constant">2</span>, <span class="Constant">3</span>, <span class="Constant">4</span>, <span class="Constant">5</span>]
|
48
|
+
|
49
|
+
puts <span class="Special">"</span><span class="Constant">p also works:</span><span class="Special">"</span>
|
50
|
+
p array
|
51
|
+
|
52
|
+
puts
|
53
|
+
|
54
|
+
getch
|
55
|
+
</pre>
|
56
|
+
</body>
|
57
|
+
</html>
|
58
|
+
<!-- vim: set foldmethod=manual : -->
|
59
|
+
</td><td width=50% valign=top><img src=stdscr.png valign=top></td></tr></table>
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rubytext
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.83
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Hal Fulton
|
@@ -85,6 +85,24 @@ files:
|
|
85
85
|
- lib/widgets.rb
|
86
86
|
- lib/window.rb
|
87
87
|
- test/auto.rb
|
88
|
+
- tutorial/basic.css
|
89
|
+
- tutorial/colortest.png
|
90
|
+
- tutorial/colortest.rb
|
91
|
+
- tutorial/colortest.rb.html
|
92
|
+
- tutorial/damn.rb
|
93
|
+
- tutorial/hw.png
|
94
|
+
- tutorial/hw.rb
|
95
|
+
- tutorial/hw.rb.html
|
96
|
+
- tutorial/meh.html
|
97
|
+
- tutorial/modes.txt
|
98
|
+
- tutorial/stdscr.png
|
99
|
+
- tutorial/stdscr.rb
|
100
|
+
- tutorial/stdscr.rb.html
|
101
|
+
- tutorial/tutorial.html
|
102
|
+
- tutorial/tutorial.lt3
|
103
|
+
- tutorial/wrap-colortest.html
|
104
|
+
- tutorial/wrap-hw.html
|
105
|
+
- tutorial/wrap-stdscr.html
|
88
106
|
homepage: https://github.com/Hal9000/rubytext
|
89
107
|
licenses:
|
90
108
|
- Ruby
|