linmeric 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Gemfile +6 -0
- data/LICENSE.txt +21 -0
- data/README.md +51 -0
- data/Rakefile +10 -0
- data/bin/help/Help.rb +184 -0
- data/bin/help/Help_inst.rb +244 -0
- data/bin/linguide +23 -0
- data/bin/linmeric +36 -70
- data/doc/Archive.html +352 -0
- data/doc/Calculator/Evaluator.html +477 -0
- data/doc/Calculator/Lexer.html +186 -0
- data/doc/Calculator/Token.html +257 -0
- data/doc/Calculator.html +181 -0
- data/doc/Dim.html +257 -0
- data/doc/Filename.html +246 -0
- data/doc/Fixnum.html +253 -0
- data/doc/Float.html +253 -0
- data/doc/Function.html +784 -0
- data/doc/InputError.html +102 -0
- data/doc/Instructions_en.txt +6 -7
- data/doc/Instructions_it.txt +6 -9
- data/doc/Integrators.html +436 -0
- data/doc/LU.html +435 -0
- data/doc/Lexer.html +261 -0
- data/doc/Linmeric.html +109 -0
- data/doc/Listener.html +605 -0
- data/doc/Matrix.html +1719 -0
- data/doc/MyArgError.html +102 -0
- data/doc/NilClass.html +202 -0
- data/doc/Numeric.html +251 -0
- data/doc/Parser.html +389 -0
- data/doc/PrintError.html +622 -0
- data/doc/README_md.html +142 -0
- data/doc/Scp.html +530 -0
- data/doc/Sizer.html +652 -0
- data/doc/String.html +540 -0
- data/doc/Token.html +341 -0
- data/doc/Tool.html +394 -0
- data/doc/created.rid +18 -0
- data/doc/css/fonts.css +167 -0
- data/doc/css/rdoc.css +590 -0
- data/doc/fonts/Lato-Light.ttf +0 -0
- data/doc/fonts/Lato-LightItalic.ttf +0 -0
- data/doc/fonts/Lato-Regular.ttf +0 -0
- data/doc/fonts/Lato-RegularItalic.ttf +0 -0
- data/doc/fonts/SourceCodePro-Bold.ttf +0 -0
- data/doc/fonts/SourceCodePro-Regular.ttf +0 -0
- data/doc/images/add.png +0 -0
- data/doc/images/arrow_up.png +0 -0
- data/doc/images/brick.png +0 -0
- data/doc/images/brick_link.png +0 -0
- data/doc/images/bug.png +0 -0
- data/doc/images/bullet_black.png +0 -0
- data/doc/images/bullet_toggle_minus.png +0 -0
- data/doc/images/bullet_toggle_plus.png +0 -0
- data/doc/images/date.png +0 -0
- data/doc/images/delete.png +0 -0
- data/doc/images/find.png +0 -0
- data/doc/images/loadingAnimation.gif +0 -0
- data/doc/images/macFFBgHack.png +0 -0
- data/doc/images/package.png +0 -0
- data/doc/images/page_green.png +0 -0
- data/doc/images/page_white_text.png +0 -0
- data/doc/images/page_white_width.png +0 -0
- data/doc/images/plugin.png +0 -0
- data/doc/images/ruby.png +0 -0
- data/doc/images/tag_blue.png +0 -0
- data/doc/images/tag_green.png +0 -0
- data/doc/images/transparent.png +0 -0
- data/doc/images/wrench.png +0 -0
- data/doc/images/wrench_orange.png +0 -0
- data/doc/images/zoom.png +0 -0
- data/doc/index.html +190 -0
- data/doc/js/darkfish.js +161 -0
- data/doc/js/jquery.js +9404 -0
- data/doc/js/navigation.js +142 -0
- data/doc/js/navigation.js.gz +0 -0
- data/doc/js/search.js +109 -0
- data/doc/js/search_index.js +1 -0
- data/doc/js/search_index.js.gz +0 -0
- data/doc/js/searcher.js +228 -0
- data/doc/js/searcher.js.gz +0 -0
- data/doc/table_of_contents.html +834 -0
- data/lib/linmeric/Archive.rb +22 -1
- data/lib/linmeric/Calculator.rb +252 -0
- data/lib/linmeric/CnGal_Matrix_class.rb +130 -49
- data/lib/linmeric/CnGal_new_classes.rb +139 -37
- data/lib/linmeric/CnGal_tools.rb +23 -40
- data/lib/linmeric/Error_print.rb +35 -1
- data/lib/linmeric/Function_class.rb +70 -11
- data/lib/linmeric/Integrators.rb +81 -35
- data/lib/linmeric/LU.rb +26 -5
- data/lib/linmeric/Lexer.rb +19 -1
- data/lib/linmeric/Listener.rb +25 -5
- data/lib/linmeric/Parser.rb +23 -1
- data/lib/linmeric/Scopify.rb +52 -31
- data/lib/linmeric/Sizer.rb +43 -10
- data/lib/linmeric/Token.rb +23 -4
- data/lib/linmeric/version.rb +3 -0
- data/lib/linmeric.rb +10 -8
- data/lib/linmeric_bin.rb +12 -0
- metadata +126 -22
- data/doc/Instructions_en.html +0 -231
- data/doc/Instructions_it.html +0 -231
- data/doc/README_en.html +0 -177
- data/doc/README_en.txt +0 -30
- data/doc/README_it.html +0 -187
- data/doc/README_it.txt +0 -32
data/doc/Listener.html
ADDED
|
@@ -0,0 +1,605 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
|
|
3
|
+
<html>
|
|
4
|
+
<head>
|
|
5
|
+
<meta charset="UTF-8">
|
|
6
|
+
|
|
7
|
+
<title>class Listener - RDoc Documentation</title>
|
|
8
|
+
|
|
9
|
+
<script type="text/javascript">
|
|
10
|
+
var rdoc_rel_prefix = "./";
|
|
11
|
+
</script>
|
|
12
|
+
|
|
13
|
+
<script src="./js/jquery.js"></script>
|
|
14
|
+
<script src="./js/darkfish.js"></script>
|
|
15
|
+
|
|
16
|
+
<link href="./css/fonts.css" rel="stylesheet">
|
|
17
|
+
<link href="./css/rdoc.css" rel="stylesheet">
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
<body id="top" role="document" class="class">
|
|
22
|
+
<nav role="navigation">
|
|
23
|
+
<div id="project-navigation">
|
|
24
|
+
<div id="home-section" role="region" title="Quick navigation" class="nav-section">
|
|
25
|
+
<h2>
|
|
26
|
+
<a href="./index.html" rel="home">Home</a>
|
|
27
|
+
</h2>
|
|
28
|
+
|
|
29
|
+
<div id="table-of-contents-navigation">
|
|
30
|
+
<a href="./table_of_contents.html#pages">Pages</a>
|
|
31
|
+
<a href="./table_of_contents.html#classes">Classes</a>
|
|
32
|
+
<a href="./table_of_contents.html#methods">Methods</a>
|
|
33
|
+
</div>
|
|
34
|
+
</div>
|
|
35
|
+
|
|
36
|
+
<div id="search-section" role="search" class="project-section initially-hidden">
|
|
37
|
+
<form action="#" method="get" accept-charset="utf-8">
|
|
38
|
+
<div id="search-field-wrapper">
|
|
39
|
+
<input id="search-field" role="combobox" aria-label="Search"
|
|
40
|
+
aria-autocomplete="list" aria-controls="search-results"
|
|
41
|
+
type="text" name="search" placeholder="Search" spellcheck="false"
|
|
42
|
+
title="Type to search, Up and Down to navigate, Enter to load">
|
|
43
|
+
</div>
|
|
44
|
+
|
|
45
|
+
<ul id="search-results" aria-label="Search Results"
|
|
46
|
+
aria-busy="false" aria-expanded="false"
|
|
47
|
+
aria-atomic="false" class="initially-hidden"></ul>
|
|
48
|
+
</form>
|
|
49
|
+
</div>
|
|
50
|
+
|
|
51
|
+
</div>
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
<div id="class-metadata">
|
|
56
|
+
|
|
57
|
+
<div id="parent-class-section" class="nav-section">
|
|
58
|
+
<h3>Parent</h3>
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
<p class="link">Object
|
|
62
|
+
|
|
63
|
+
</div>
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
<!-- Method Quickref -->
|
|
68
|
+
<div id="method-list-section" class="nav-section">
|
|
69
|
+
<h3>Methods</h3>
|
|
70
|
+
|
|
71
|
+
<ul class="link-list" role="directory">
|
|
72
|
+
|
|
73
|
+
<li ><a href="#method-c-new">::new</a>
|
|
74
|
+
|
|
75
|
+
<li ><a href="#method-i-clear_line">#clear_line</a>
|
|
76
|
+
|
|
77
|
+
<li ><a href="#method-i-collect_single_key">#collect_single_key</a>
|
|
78
|
+
|
|
79
|
+
<li ><a href="#method-i-cursor_to">#cursor_to</a>
|
|
80
|
+
|
|
81
|
+
<li ><a href="#method-i-gets">#gets</a>
|
|
82
|
+
|
|
83
|
+
<li ><a href="#method-i-read_char">#read_char</a>
|
|
84
|
+
|
|
85
|
+
<li ><a href="#method-i-reset">#reset</a>
|
|
86
|
+
|
|
87
|
+
</ul>
|
|
88
|
+
</div>
|
|
89
|
+
|
|
90
|
+
</div>
|
|
91
|
+
</nav>
|
|
92
|
+
|
|
93
|
+
<main role="main" aria-labelledby="class-Listener">
|
|
94
|
+
<h1 id="class-Listener" class="class">
|
|
95
|
+
class Listener
|
|
96
|
+
</h1>
|
|
97
|
+
|
|
98
|
+
<section class="description">
|
|
99
|
+
|
|
100
|
+
<p>This class works on the command line interface to allow the user to move
|
|
101
|
+
the cursor, modify the input string in each point and retrieve commands
|
|
102
|
+
from the history</p>
|
|
103
|
+
<dl class="rdoc-list note-list"><dt>Author
|
|
104
|
+
<dd>
|
|
105
|
+
<p>Massimiliano Dal Mas (<a
|
|
106
|
+
href="mailto:max.codeware@gmail.com">max.codeware@gmail.com</a>)</p>
|
|
107
|
+
</dd><dt>License
|
|
108
|
+
<dd>
|
|
109
|
+
<p>Distributed under MIT license</p>
|
|
110
|
+
</dd></dl>
|
|
111
|
+
|
|
112
|
+
</section>
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
<section id="5Buntitled-5D" class="documentation-section">
|
|
118
|
+
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
|
|
123
|
+
<section class="constants-list">
|
|
124
|
+
<header>
|
|
125
|
+
<h3>Constants</h3>
|
|
126
|
+
</header>
|
|
127
|
+
<dl>
|
|
128
|
+
|
|
129
|
+
<dt id="CHARS">CHARS
|
|
130
|
+
|
|
131
|
+
<dd>
|
|
132
|
+
|
|
133
|
+
|
|
134
|
+
<dt id="CSI">CSI
|
|
135
|
+
|
|
136
|
+
<dd>
|
|
137
|
+
|
|
138
|
+
|
|
139
|
+
<dt id="LETTERS">LETTERS
|
|
140
|
+
|
|
141
|
+
<dd>
|
|
142
|
+
|
|
143
|
+
|
|
144
|
+
<dt id="NUMBERS">NUMBERS
|
|
145
|
+
|
|
146
|
+
<dd>
|
|
147
|
+
|
|
148
|
+
|
|
149
|
+
<dt id="SPECIAL_CHARS">SPECIAL_CHARS
|
|
150
|
+
|
|
151
|
+
<dd>
|
|
152
|
+
|
|
153
|
+
|
|
154
|
+
</dl>
|
|
155
|
+
</section>
|
|
156
|
+
|
|
157
|
+
|
|
158
|
+
|
|
159
|
+
|
|
160
|
+
|
|
161
|
+
<section id="public-class-5Buntitled-5D-method-details" class="method-section">
|
|
162
|
+
<header>
|
|
163
|
+
<h3>Public Class Methods</h3>
|
|
164
|
+
</header>
|
|
165
|
+
|
|
166
|
+
|
|
167
|
+
<div id="method-c-new" class="method-detail ">
|
|
168
|
+
|
|
169
|
+
<div class="method-heading">
|
|
170
|
+
<span class="method-name">new</span><span
|
|
171
|
+
class="method-args">()</span>
|
|
172
|
+
|
|
173
|
+
<span class="method-click-advice">click to toggle source</span>
|
|
174
|
+
|
|
175
|
+
</div>
|
|
176
|
+
|
|
177
|
+
|
|
178
|
+
<div class="method-description">
|
|
179
|
+
|
|
180
|
+
<p>Creates the main variables</p>
|
|
181
|
+
|
|
182
|
+
|
|
183
|
+
|
|
184
|
+
|
|
185
|
+
<div class="method-source-code" id="new-source">
|
|
186
|
+
<pre><span class="ruby-comment"># File lib/linmeric/Listener.rb, line 23</span>
|
|
187
|
+
<span class="ruby-keyword">def</span> <span class="ruby-identifier">initialize</span>
|
|
188
|
+
<span class="ruby-ivar">@final_string</span> = <span class="ruby-string">""</span>
|
|
189
|
+
<span class="ruby-ivar">@i</span> = <span class="ruby-value">0</span>
|
|
190
|
+
<span class="ruby-ivar">@s</span> = <span class="ruby-value">0</span>
|
|
191
|
+
<span class="ruby-ivar">@exit</span> = <span class="ruby-keyword">false</span>
|
|
192
|
+
<span class="ruby-ivar">@list</span> = <span class="ruby-constant">Archive</span>.<span class="ruby-identifier">new</span>
|
|
193
|
+
<span class="ruby-keyword">end</span></pre>
|
|
194
|
+
</div>
|
|
195
|
+
|
|
196
|
+
</div>
|
|
197
|
+
|
|
198
|
+
|
|
199
|
+
|
|
200
|
+
|
|
201
|
+
</div>
|
|
202
|
+
|
|
203
|
+
|
|
204
|
+
</section>
|
|
205
|
+
|
|
206
|
+
<section id="public-instance-5Buntitled-5D-method-details" class="method-section">
|
|
207
|
+
<header>
|
|
208
|
+
<h3>Public Instance Methods</h3>
|
|
209
|
+
</header>
|
|
210
|
+
|
|
211
|
+
|
|
212
|
+
<div id="method-i-clear_line" class="method-detail ">
|
|
213
|
+
|
|
214
|
+
<div class="method-heading">
|
|
215
|
+
<span class="method-name">clear_line</span><span
|
|
216
|
+
class="method-args">()</span>
|
|
217
|
+
|
|
218
|
+
<span class="method-click-advice">click to toggle source</span>
|
|
219
|
+
|
|
220
|
+
</div>
|
|
221
|
+
|
|
222
|
+
|
|
223
|
+
<div class="method-description">
|
|
224
|
+
|
|
225
|
+
<p>Clears the current line (deletes the typed input)</p>
|
|
226
|
+
|
|
227
|
+
|
|
228
|
+
|
|
229
|
+
|
|
230
|
+
<div class="method-source-code" id="clear_line-source">
|
|
231
|
+
<pre><span class="ruby-comment"># File lib/linmeric/Listener.rb, line 167</span>
|
|
232
|
+
<span class="ruby-keyword">def</span> <span class="ruby-identifier">clear_line</span>
|
|
233
|
+
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@i</span> <span class="ruby-operator"><</span> <span class="ruby-ivar">@final_string</span>.<span class="ruby-identifier">size</span>
|
|
234
|
+
<span class="ruby-keyword">for</span> <span class="ruby-identifier">i</span> <span class="ruby-keyword">in</span> <span class="ruby-ivar">@i</span><span class="ruby-operator">...</span><span class="ruby-ivar">@final_string</span>.<span class="ruby-identifier">size</span> <span class="ruby-keyword">do</span>
|
|
235
|
+
<span class="ruby-identifier">$stdout</span>.<span class="ruby-identifier">write</span> <span class="ruby-node">"#{CSI}1C"</span>
|
|
236
|
+
<span class="ruby-keyword">end</span>
|
|
237
|
+
<span class="ruby-keyword">end</span>
|
|
238
|
+
<span class="ruby-ivar">@i</span> = (<span class="ruby-ivar">@final_string</span> <span class="ruby-operator">==</span> <span class="ruby-keyword">nil</span> <span class="ruby-keyword">or</span> <span class="ruby-ivar">@final_string</span> <span class="ruby-operator">==</span> <span class="ruby-string">""</span>) <span class="ruby-operator">?</span> <span class="ruby-value">0</span> <span class="ruby-operator">:</span> <span class="ruby-ivar">@final_string</span>.<span class="ruby-identifier">size</span>
|
|
239
|
+
<span class="ruby-keyword">for</span> <span class="ruby-identifier">i</span> <span class="ruby-keyword">in</span> <span class="ruby-value">0</span><span class="ruby-operator">...</span><span class="ruby-ivar">@i</span> <span class="ruby-keyword">do</span>
|
|
240
|
+
<span class="ruby-identifier">$stdout</span>.<span class="ruby-identifier">write</span> <span class="ruby-node">"#{CSI}1D"</span>
|
|
241
|
+
<span class="ruby-identifier">$stdout</span>.<span class="ruby-identifier">write</span> <span class="ruby-string">" "</span>
|
|
242
|
+
<span class="ruby-identifier">$stdout</span>.<span class="ruby-identifier">write</span> <span class="ruby-node">"#{CSI}1D"</span>
|
|
243
|
+
<span class="ruby-keyword">end</span>
|
|
244
|
+
<span class="ruby-ivar">@i</span> = <span class="ruby-value">0</span>
|
|
245
|
+
<span class="ruby-keyword">end</span></pre>
|
|
246
|
+
</div>
|
|
247
|
+
|
|
248
|
+
</div>
|
|
249
|
+
|
|
250
|
+
|
|
251
|
+
|
|
252
|
+
|
|
253
|
+
</div>
|
|
254
|
+
|
|
255
|
+
|
|
256
|
+
<div id="method-i-collect_single_key" class="method-detail ">
|
|
257
|
+
|
|
258
|
+
<div class="method-heading">
|
|
259
|
+
<span class="method-name">collect_single_key</span><span
|
|
260
|
+
class="method-args">()</span>
|
|
261
|
+
|
|
262
|
+
<span class="method-click-advice">click to toggle source</span>
|
|
263
|
+
|
|
264
|
+
</div>
|
|
265
|
+
|
|
266
|
+
|
|
267
|
+
<div class="method-description">
|
|
268
|
+
|
|
269
|
+
<p>according to the collected key decides what to do: moving the cursor,
|
|
270
|
+
surfing the history, or simply store chars in a variable</p>
|
|
271
|
+
|
|
272
|
+
|
|
273
|
+
|
|
274
|
+
|
|
275
|
+
<div class="method-source-code" id="collect_single_key-source">
|
|
276
|
+
<pre><span class="ruby-comment"># File lib/linmeric/Listener.rb, line 57</span>
|
|
277
|
+
<span class="ruby-keyword">def</span> <span class="ruby-identifier">collect_single_key</span>()
|
|
278
|
+
<span class="ruby-identifier">c</span> = <span class="ruby-identifier">read_char</span>
|
|
279
|
+
<span class="ruby-keyword">case</span> <span class="ruby-identifier">c</span>
|
|
280
|
+
|
|
281
|
+
<span class="ruby-comment"># "TAB"</span>
|
|
282
|
+
<span class="ruby-keyword">when</span> <span class="ruby-string">"\t"</span>
|
|
283
|
+
|
|
284
|
+
<span class="ruby-comment"># "RETURN"</span>
|
|
285
|
+
<span class="ruby-keyword">when</span> <span class="ruby-string">"\r"</span>
|
|
286
|
+
<span class="ruby-identifier">puts</span> <span class="ruby-identifier">c</span>
|
|
287
|
+
<span class="ruby-ivar">@exit</span> = <span class="ruby-keyword">true</span>
|
|
288
|
+
<span class="ruby-keyword">when</span> <span class="ruby-string">"\n"</span>
|
|
289
|
+
<span class="ruby-comment"># "LINE FEED"</span>
|
|
290
|
+
<span class="ruby-keyword">when</span> <span class="ruby-string">"\e"</span>
|
|
291
|
+
<span class="ruby-comment"># "ESCAPE"</span>
|
|
292
|
+
|
|
293
|
+
<span class="ruby-comment"># "UP ARROW"</span>
|
|
294
|
+
<span class="ruby-keyword">when</span> <span class="ruby-string">"\e[A"</span>
|
|
295
|
+
<span class="ruby-identifier">temp</span> = <span class="ruby-ivar">@list</span>.<span class="ruby-identifier">previous</span>
|
|
296
|
+
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">temp</span> <span class="ruby-operator">==</span> <span class="ruby-string">""</span>
|
|
297
|
+
<span class="ruby-identifier">clear_line</span>
|
|
298
|
+
<span class="ruby-ivar">@final_string</span> = <span class="ruby-identifier">temp</span>
|
|
299
|
+
<span class="ruby-ivar">@i</span> = <span class="ruby-ivar">@final_string</span>.<span class="ruby-identifier">size</span>
|
|
300
|
+
<span class="ruby-identifier">print</span> <span class="ruby-ivar">@final_string</span>
|
|
301
|
+
<span class="ruby-keyword">end</span>
|
|
302
|
+
|
|
303
|
+
<span class="ruby-comment"># "DOWN ARROW" </span>
|
|
304
|
+
<span class="ruby-keyword">when</span> <span class="ruby-string">"\e[B"</span>
|
|
305
|
+
<span class="ruby-identifier">clear_line</span>
|
|
306
|
+
<span class="ruby-ivar">@final_string</span> = <span class="ruby-ivar">@list</span>.<span class="ruby-identifier">next_</span>
|
|
307
|
+
<span class="ruby-ivar">@i</span> = <span class="ruby-ivar">@final_string</span>.<span class="ruby-identifier">size</span>
|
|
308
|
+
<span class="ruby-identifier">print</span> <span class="ruby-ivar">@final_string</span>
|
|
309
|
+
|
|
310
|
+
<span class="ruby-comment"># "RIGHT ARROW"</span>
|
|
311
|
+
<span class="ruby-keyword">when</span> <span class="ruby-string">"\e[C"</span>
|
|
312
|
+
<span class="ruby-ivar">@list</span>.<span class="ruby-identifier">top</span>
|
|
313
|
+
<span class="ruby-keyword">unless</span> <span class="ruby-ivar">@i</span> <span class="ruby-operator">==</span> <span class="ruby-ivar">@final_string</span>.<span class="ruby-identifier">size</span>
|
|
314
|
+
<span class="ruby-identifier">$stdout</span>.<span class="ruby-identifier">write</span> <span class="ruby-node">"#{CSI}1C"</span>
|
|
315
|
+
<span class="ruby-ivar">@i</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
|
|
316
|
+
<span class="ruby-keyword">end</span>
|
|
317
|
+
|
|
318
|
+
<span class="ruby-comment"># "LEFT ARROW" </span>
|
|
319
|
+
<span class="ruby-keyword">when</span> <span class="ruby-string">"\e[D"</span>
|
|
320
|
+
<span class="ruby-ivar">@list</span>.<span class="ruby-identifier">top</span>
|
|
321
|
+
<span class="ruby-keyword">unless</span> <span class="ruby-ivar">@i</span> <span class="ruby-operator">==</span> <span class="ruby-value">0</span>
|
|
322
|
+
<span class="ruby-identifier">$stdout</span>.<span class="ruby-identifier">write</span> <span class="ruby-node">"#{CSI}1D"</span>
|
|
323
|
+
<span class="ruby-ivar">@i</span> <span class="ruby-operator">-=</span> <span class="ruby-value">1</span>
|
|
324
|
+
<span class="ruby-keyword">end</span>
|
|
325
|
+
|
|
326
|
+
<span class="ruby-comment"># Delete char </span>
|
|
327
|
+
<span class="ruby-keyword">when</span> <span class="ruby-string">"\177"</span>
|
|
328
|
+
<span class="ruby-ivar">@list</span>.<span class="ruby-identifier">top</span>
|
|
329
|
+
<span class="ruby-keyword">unless</span> <span class="ruby-ivar">@i</span> <span class="ruby-operator">==</span> <span class="ruby-value">0</span>
|
|
330
|
+
<span class="ruby-identifier">$stdout</span>.<span class="ruby-identifier">write</span> <span class="ruby-node">"#{CSI}1D"</span>
|
|
331
|
+
<span class="ruby-keyword">for</span> <span class="ruby-identifier">i</span> <span class="ruby-keyword">in</span> (<span class="ruby-ivar">@i</span>)<span class="ruby-operator">...</span><span class="ruby-ivar">@final_string</span>.<span class="ruby-identifier">size</span> <span class="ruby-keyword">do</span>
|
|
332
|
+
<span class="ruby-identifier">$stdout</span>.<span class="ruby-identifier">write</span> <span class="ruby-node">"#{@final_string[i]}"</span>
|
|
333
|
+
<span class="ruby-keyword">end</span>
|
|
334
|
+
<span class="ruby-identifier">$stdout</span>.<span class="ruby-identifier">write</span> <span class="ruby-string">" "</span>
|
|
335
|
+
<span class="ruby-ivar">@final_string</span> = <span class="ruby-ivar">@final_string</span>.<span class="ruby-identifier">remove</span>(<span class="ruby-ivar">@i</span><span class="ruby-operator">-</span><span class="ruby-value">1</span>)
|
|
336
|
+
<span class="ruby-keyword">for</span> <span class="ruby-identifier">i</span> <span class="ruby-keyword">in</span> (<span class="ruby-ivar">@i</span><span class="ruby-operator">-</span><span class="ruby-value">2</span>)<span class="ruby-operator">...</span><span class="ruby-ivar">@final_string</span>.<span class="ruby-identifier">size</span> <span class="ruby-keyword">do</span>
|
|
337
|
+
<span class="ruby-identifier">$stdout</span>.<span class="ruby-identifier">write</span> <span class="ruby-node">"#{CSI}1D"</span>
|
|
338
|
+
<span class="ruby-keyword">end</span>
|
|
339
|
+
<span class="ruby-ivar">@i</span> <span class="ruby-operator">-=</span> <span class="ruby-value">1</span>
|
|
340
|
+
<span class="ruby-keyword">end</span>
|
|
341
|
+
|
|
342
|
+
<span class="ruby-keyword">when</span> <span class="ruby-string">"\004"</span>
|
|
343
|
+
<span class="ruby-comment"># "DELETE"</span>
|
|
344
|
+
<span class="ruby-keyword">when</span> <span class="ruby-string">"\e[3~"</span>
|
|
345
|
+
<span class="ruby-comment"># "ALTERNATE DELETE"</span>
|
|
346
|
+
|
|
347
|
+
<span class="ruby-comment"># "Ctrl + C"</span>
|
|
348
|
+
<span class="ruby-keyword">when</span> <span class="ruby-string">"\u0003"</span>
|
|
349
|
+
<span class="ruby-comment"># puts</span>
|
|
350
|
+
<span class="ruby-comment"># exit 0</span>
|
|
351
|
+
<span class="ruby-keyword">when</span> <span class="ruby-regexp">/^.$/</span>
|
|
352
|
+
<span class="ruby-ivar">@list</span>.<span class="ruby-identifier">top</span>
|
|
353
|
+
<span class="ruby-keyword">if</span> <span class="ruby-constant">CHARS</span>.<span class="ruby-identifier">include?</span> <span class="ruby-identifier">c</span>
|
|
354
|
+
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@i</span> <span class="ruby-operator"><</span> <span class="ruby-ivar">@final_string</span>.<span class="ruby-identifier">size</span> <span class="ruby-keyword">then</span>
|
|
355
|
+
<span class="ruby-identifier">last_i</span> = <span class="ruby-ivar">@i</span> <span class="ruby-operator">+</span> <span class="ruby-value">2</span>
|
|
356
|
+
<span class="ruby-ivar">@final_string</span>.<span class="ruby-identifier">insert</span> <span class="ruby-ivar">@i</span>, <span class="ruby-identifier">c</span>
|
|
357
|
+
<span class="ruby-identifier">clear_line</span>
|
|
358
|
+
<span class="ruby-identifier">$stdout</span>.<span class="ruby-identifier">write</span> <span class="ruby-node">"#{@final_string}"</span>
|
|
359
|
+
<span class="ruby-identifier">cursor_to</span>(<span class="ruby-identifier">last_i</span>)
|
|
360
|
+
<span class="ruby-ivar">@i</span> = <span class="ruby-identifier">last_i</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span>
|
|
361
|
+
<span class="ruby-keyword">else</span>
|
|
362
|
+
<span class="ruby-identifier">print</span> <span class="ruby-identifier">c</span>
|
|
363
|
+
<span class="ruby-ivar">@final_string</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">c</span>
|
|
364
|
+
<span class="ruby-ivar">@i</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
|
|
365
|
+
<span class="ruby-keyword">end</span>
|
|
366
|
+
<span class="ruby-keyword">elsif</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">==</span> <span class="ruby-string">"\f"</span> <span class="ruby-keyword">then</span>
|
|
367
|
+
<span class="ruby-ivar">@i</span> = <span class="ruby-value">0</span>
|
|
368
|
+
<span class="ruby-identifier">print</span> <span class="ruby-string">"\e[H\e[2J"</span>
|
|
369
|
+
<span class="ruby-identifier">print</span> <span class="ruby-string">"Linmeric-main> "</span>
|
|
370
|
+
<span class="ruby-keyword">end</span>
|
|
371
|
+
<span class="ruby-keyword">end</span>
|
|
372
|
+
<span class="ruby-keyword">end</span>
|
|
373
|
+
|
|
374
|
+
<span class="ruby-comment"># main function that can be used. It returns the stream the user wrote on the command</span>
|
|
375
|
+
<span class="ruby-comment"># line after they pressed return.</span>
|
|
376
|
+
<span class="ruby-keyword">def</span> <span class="ruby-identifier">gets</span>()
|
|
377
|
+
<span class="ruby-identifier">collect_single_key</span> <span class="ruby-keyword">while</span>(<span class="ruby-operator">!</span><span class="ruby-ivar">@exit</span>)
|
|
378
|
+
<span class="ruby-ivar">@list</span>.<span class="ruby-identifier">store</span>(<span class="ruby-ivar">@final_string</span>)
|
|
379
|
+
<span class="ruby-keyword">return</span> <span class="ruby-ivar">@final_string</span>.<span class="ruby-identifier">clone</span>
|
|
380
|
+
<span class="ruby-keyword">ensure</span>
|
|
381
|
+
<span class="ruby-identifier">reset</span>
|
|
382
|
+
<span class="ruby-keyword">end</span>
|
|
383
|
+
|
|
384
|
+
<span class="ruby-identifier">private</span>
|
|
385
|
+
|
|
386
|
+
<span class="ruby-comment"># Clears the current line (deletes the typed input)</span>
|
|
387
|
+
<span class="ruby-keyword">def</span> <span class="ruby-identifier">clear_line</span>
|
|
388
|
+
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@i</span> <span class="ruby-operator"><</span> <span class="ruby-ivar">@final_string</span>.<span class="ruby-identifier">size</span>
|
|
389
|
+
<span class="ruby-keyword">for</span> <span class="ruby-identifier">i</span> <span class="ruby-keyword">in</span> <span class="ruby-ivar">@i</span><span class="ruby-operator">...</span><span class="ruby-ivar">@final_string</span>.<span class="ruby-identifier">size</span> <span class="ruby-keyword">do</span>
|
|
390
|
+
<span class="ruby-identifier">$stdout</span>.<span class="ruby-identifier">write</span> <span class="ruby-node">"#{CSI}1C"</span>
|
|
391
|
+
<span class="ruby-keyword">end</span>
|
|
392
|
+
<span class="ruby-keyword">end</span>
|
|
393
|
+
<span class="ruby-ivar">@i</span> = (<span class="ruby-ivar">@final_string</span> <span class="ruby-operator">==</span> <span class="ruby-keyword">nil</span> <span class="ruby-keyword">or</span> <span class="ruby-ivar">@final_string</span> <span class="ruby-operator">==</span> <span class="ruby-string">""</span>) <span class="ruby-operator">?</span> <span class="ruby-value">0</span> <span class="ruby-operator">:</span> <span class="ruby-ivar">@final_string</span>.<span class="ruby-identifier">size</span>
|
|
394
|
+
<span class="ruby-keyword">for</span> <span class="ruby-identifier">i</span> <span class="ruby-keyword">in</span> <span class="ruby-value">0</span><span class="ruby-operator">...</span><span class="ruby-ivar">@i</span> <span class="ruby-keyword">do</span>
|
|
395
|
+
<span class="ruby-identifier">$stdout</span>.<span class="ruby-identifier">write</span> <span class="ruby-node">"#{CSI}1D"</span>
|
|
396
|
+
<span class="ruby-identifier">$stdout</span>.<span class="ruby-identifier">write</span> <span class="ruby-string">" "</span>
|
|
397
|
+
<span class="ruby-identifier">$stdout</span>.<span class="ruby-identifier">write</span> <span class="ruby-node">"#{CSI}1D"</span>
|
|
398
|
+
<span class="ruby-keyword">end</span>
|
|
399
|
+
<span class="ruby-ivar">@i</span> = <span class="ruby-value">0</span>
|
|
400
|
+
<span class="ruby-keyword">end</span>
|
|
401
|
+
|
|
402
|
+
<span class="ruby-comment"># Moves the cursor backward of the number of specified position</span>
|
|
403
|
+
<span class="ruby-comment">#</span>
|
|
404
|
+
<span class="ruby-comment"># * **argument**: number of position the cursor must be moved backward</span>
|
|
405
|
+
<span class="ruby-keyword">def</span> <span class="ruby-identifier">cursor_to</span>(<span class="ruby-identifier">pos</span>)
|
|
406
|
+
<span class="ruby-keyword">return</span> <span class="ruby-keyword">nil</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">pos</span> <span class="ruby-operator"><</span> <span class="ruby-value">0</span>
|
|
407
|
+
<span class="ruby-keyword">for</span> <span class="ruby-identifier">i</span> <span class="ruby-keyword">in</span> <span class="ruby-identifier">pos</span><span class="ruby-operator">..</span><span class="ruby-ivar">@final_string</span>.<span class="ruby-identifier">size</span>
|
|
408
|
+
<span class="ruby-identifier">$stdout</span>.<span class="ruby-identifier">write</span> <span class="ruby-node">"#{CSI}1D"</span>
|
|
409
|
+
<span class="ruby-keyword">end</span>
|
|
410
|
+
<span class="ruby-keyword">end</span>
|
|
411
|
+
|
|
412
|
+
<span class="ruby-keyword">end</span>
|
|
413
|
+
|
|
414
|
+
|
|
415
|
+
|
|
416
|
+
<span class="ruby-comment">########################################</span>
|
|
417
|
+
<span class="ruby-comment"># TESTS #</span>
|
|
418
|
+
<span class="ruby-comment">########################################</span>
|
|
419
|
+
<span class="ruby-comment">listener = Listener.new
|
|
420
|
+
while true
|
|
421
|
+
print '> '
|
|
422
|
+
listener.gets
|
|
423
|
+
listener.reset
|
|
424
|
+
end
|
|
425
|
+
</span></pre>
|
|
426
|
+
</div>
|
|
427
|
+
|
|
428
|
+
</div>
|
|
429
|
+
|
|
430
|
+
|
|
431
|
+
|
|
432
|
+
|
|
433
|
+
</div>
|
|
434
|
+
|
|
435
|
+
|
|
436
|
+
<div id="method-i-cursor_to" class="method-detail ">
|
|
437
|
+
|
|
438
|
+
<div class="method-heading">
|
|
439
|
+
<span class="method-name">cursor_to</span><span
|
|
440
|
+
class="method-args">(pos)</span>
|
|
441
|
+
|
|
442
|
+
<span class="method-click-advice">click to toggle source</span>
|
|
443
|
+
|
|
444
|
+
</div>
|
|
445
|
+
|
|
446
|
+
|
|
447
|
+
<div class="method-description">
|
|
448
|
+
|
|
449
|
+
<p>Moves the cursor backward of the number of specified position</p>
|
|
450
|
+
<ul><li>
|
|
451
|
+
<p>*<strong>argument</strong>*: number of position the cursor must be moved
|
|
452
|
+
backward</p>
|
|
453
|
+
</li></ul>
|
|
454
|
+
|
|
455
|
+
|
|
456
|
+
|
|
457
|
+
|
|
458
|
+
<div class="method-source-code" id="cursor_to-source">
|
|
459
|
+
<pre><span class="ruby-comment"># File lib/linmeric/Listener.rb, line 185</span>
|
|
460
|
+
<span class="ruby-keyword">def</span> <span class="ruby-identifier">cursor_to</span>(<span class="ruby-identifier">pos</span>)
|
|
461
|
+
<span class="ruby-keyword">return</span> <span class="ruby-keyword">nil</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">pos</span> <span class="ruby-operator"><</span> <span class="ruby-value">0</span>
|
|
462
|
+
<span class="ruby-keyword">for</span> <span class="ruby-identifier">i</span> <span class="ruby-keyword">in</span> <span class="ruby-identifier">pos</span><span class="ruby-operator">..</span><span class="ruby-ivar">@final_string</span>.<span class="ruby-identifier">size</span>
|
|
463
|
+
<span class="ruby-identifier">$stdout</span>.<span class="ruby-identifier">write</span> <span class="ruby-node">"#{CSI}1D"</span>
|
|
464
|
+
<span class="ruby-keyword">end</span>
|
|
465
|
+
<span class="ruby-keyword">end</span></pre>
|
|
466
|
+
</div>
|
|
467
|
+
|
|
468
|
+
</div>
|
|
469
|
+
|
|
470
|
+
|
|
471
|
+
|
|
472
|
+
|
|
473
|
+
</div>
|
|
474
|
+
|
|
475
|
+
|
|
476
|
+
<div id="method-i-gets" class="method-detail ">
|
|
477
|
+
|
|
478
|
+
<div class="method-heading">
|
|
479
|
+
<span class="method-name">gets</span><span
|
|
480
|
+
class="method-args">()</span>
|
|
481
|
+
|
|
482
|
+
<span class="method-click-advice">click to toggle source</span>
|
|
483
|
+
|
|
484
|
+
</div>
|
|
485
|
+
|
|
486
|
+
|
|
487
|
+
<div class="method-description">
|
|
488
|
+
|
|
489
|
+
<p>main function that can be used. It returns the stream the user wrote on the
|
|
490
|
+
command line after they pressed return.</p>
|
|
491
|
+
|
|
492
|
+
|
|
493
|
+
|
|
494
|
+
|
|
495
|
+
<div class="method-source-code" id="gets-source">
|
|
496
|
+
<pre><span class="ruby-comment"># File lib/linmeric/Listener.rb, line 156</span>
|
|
497
|
+
<span class="ruby-keyword">def</span> <span class="ruby-identifier">gets</span>()
|
|
498
|
+
<span class="ruby-identifier">collect_single_key</span> <span class="ruby-keyword">while</span>(<span class="ruby-operator">!</span><span class="ruby-ivar">@exit</span>)
|
|
499
|
+
<span class="ruby-ivar">@list</span>.<span class="ruby-identifier">store</span>(<span class="ruby-ivar">@final_string</span>)
|
|
500
|
+
<span class="ruby-keyword">return</span> <span class="ruby-ivar">@final_string</span>.<span class="ruby-identifier">clone</span>
|
|
501
|
+
<span class="ruby-keyword">ensure</span>
|
|
502
|
+
<span class="ruby-identifier">reset</span>
|
|
503
|
+
<span class="ruby-keyword">end</span></pre>
|
|
504
|
+
</div>
|
|
505
|
+
|
|
506
|
+
</div>
|
|
507
|
+
|
|
508
|
+
|
|
509
|
+
|
|
510
|
+
|
|
511
|
+
</div>
|
|
512
|
+
|
|
513
|
+
|
|
514
|
+
<div id="method-i-read_char" class="method-detail ">
|
|
515
|
+
|
|
516
|
+
<div class="method-heading">
|
|
517
|
+
<span class="method-name">read_char</span><span
|
|
518
|
+
class="method-args">()</span>
|
|
519
|
+
|
|
520
|
+
<span class="method-click-advice">click to toggle source</span>
|
|
521
|
+
|
|
522
|
+
</div>
|
|
523
|
+
|
|
524
|
+
|
|
525
|
+
<div class="method-description">
|
|
526
|
+
|
|
527
|
+
<p>Reads a single char from the command line</p>
|
|
528
|
+
|
|
529
|
+
|
|
530
|
+
|
|
531
|
+
|
|
532
|
+
<div class="method-source-code" id="read_char-source">
|
|
533
|
+
<pre><span class="ruby-comment"># File lib/linmeric/Listener.rb, line 39</span>
|
|
534
|
+
<span class="ruby-keyword">def</span> <span class="ruby-identifier">read_char</span>
|
|
535
|
+
<span class="ruby-constant">STDIN</span>.<span class="ruby-identifier">echo</span> = <span class="ruby-keyword">false</span>
|
|
536
|
+
<span class="ruby-constant">STDIN</span>.<span class="ruby-identifier">raw!</span>
|
|
537
|
+
|
|
538
|
+
<span class="ruby-identifier">input</span> = <span class="ruby-constant">STDIN</span>.<span class="ruby-identifier">getc</span>.<span class="ruby-identifier">chr</span>
|
|
539
|
+
<span class="ruby-keyword">if</span> <span class="ruby-identifier">input</span> <span class="ruby-operator">==</span> <span class="ruby-string">"\e"</span> <span class="ruby-keyword">then</span>
|
|
540
|
+
<span class="ruby-identifier">input</span> <span class="ruby-operator"><<</span> <span class="ruby-constant">STDIN</span>.<span class="ruby-identifier">read_nonblock</span>(<span class="ruby-value">3</span>) <span class="ruby-keyword">rescue</span> <span class="ruby-keyword">nil</span>
|
|
541
|
+
<span class="ruby-identifier">input</span> <span class="ruby-operator"><<</span> <span class="ruby-constant">STDIN</span>.<span class="ruby-identifier">read_nonblock</span>(<span class="ruby-value">2</span>) <span class="ruby-keyword">rescue</span> <span class="ruby-keyword">nil</span>
|
|
542
|
+
<span class="ruby-keyword">end</span>
|
|
543
|
+
<span class="ruby-keyword">ensure</span>
|
|
544
|
+
<span class="ruby-constant">STDIN</span>.<span class="ruby-identifier">echo</span> = <span class="ruby-keyword">true</span>
|
|
545
|
+
<span class="ruby-constant">STDIN</span>.<span class="ruby-identifier">cooked!</span>
|
|
546
|
+
|
|
547
|
+
<span class="ruby-keyword">return</span> <span class="ruby-identifier">input</span>
|
|
548
|
+
<span class="ruby-keyword">end</span></pre>
|
|
549
|
+
</div>
|
|
550
|
+
|
|
551
|
+
</div>
|
|
552
|
+
|
|
553
|
+
|
|
554
|
+
|
|
555
|
+
|
|
556
|
+
</div>
|
|
557
|
+
|
|
558
|
+
|
|
559
|
+
<div id="method-i-reset" class="method-detail ">
|
|
560
|
+
|
|
561
|
+
<div class="method-heading">
|
|
562
|
+
<span class="method-name">reset</span><span
|
|
563
|
+
class="method-args">()</span>
|
|
564
|
+
|
|
565
|
+
<span class="method-click-advice">click to toggle source</span>
|
|
566
|
+
|
|
567
|
+
</div>
|
|
568
|
+
|
|
569
|
+
|
|
570
|
+
<div class="method-description">
|
|
571
|
+
|
|
572
|
+
<p>reinitializates three main variables</p>
|
|
573
|
+
|
|
574
|
+
|
|
575
|
+
|
|
576
|
+
|
|
577
|
+
<div class="method-source-code" id="reset-source">
|
|
578
|
+
<pre><span class="ruby-comment"># File lib/linmeric/Listener.rb, line 32</span>
|
|
579
|
+
<span class="ruby-keyword">def</span> <span class="ruby-identifier">reset</span>
|
|
580
|
+
<span class="ruby-ivar">@final_string</span> = <span class="ruby-string">""</span>
|
|
581
|
+
<span class="ruby-ivar">@i</span> = <span class="ruby-value">0</span>
|
|
582
|
+
<span class="ruby-ivar">@exit</span> = <span class="ruby-keyword">false</span>
|
|
583
|
+
<span class="ruby-keyword">end</span></pre>
|
|
584
|
+
</div>
|
|
585
|
+
|
|
586
|
+
</div>
|
|
587
|
+
|
|
588
|
+
|
|
589
|
+
|
|
590
|
+
|
|
591
|
+
</div>
|
|
592
|
+
|
|
593
|
+
|
|
594
|
+
</section>
|
|
595
|
+
|
|
596
|
+
</section>
|
|
597
|
+
</main>
|
|
598
|
+
|
|
599
|
+
|
|
600
|
+
<footer id="validator-badges" role="contentinfo">
|
|
601
|
+
<p><a href="http://validator.w3.org/check/referer">Validate</a>
|
|
602
|
+
<p>Generated by <a href="http://docs.seattlerb.org/rdoc/">RDoc</a> 4.2.0.
|
|
603
|
+
<p>Based on <a href="http://deveiate.org/projects/Darkfish-RDoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
|
|
604
|
+
</footer>
|
|
605
|
+
|