rubytext 0.0.82 → 0.0.83
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/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
|