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.
Files changed (109) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +6 -0
  3. data/LICENSE.txt +21 -0
  4. data/README.md +51 -0
  5. data/Rakefile +10 -0
  6. data/bin/help/Help.rb +184 -0
  7. data/bin/help/Help_inst.rb +244 -0
  8. data/bin/linguide +23 -0
  9. data/bin/linmeric +36 -70
  10. data/doc/Archive.html +352 -0
  11. data/doc/Calculator/Evaluator.html +477 -0
  12. data/doc/Calculator/Lexer.html +186 -0
  13. data/doc/Calculator/Token.html +257 -0
  14. data/doc/Calculator.html +181 -0
  15. data/doc/Dim.html +257 -0
  16. data/doc/Filename.html +246 -0
  17. data/doc/Fixnum.html +253 -0
  18. data/doc/Float.html +253 -0
  19. data/doc/Function.html +784 -0
  20. data/doc/InputError.html +102 -0
  21. data/doc/Instructions_en.txt +6 -7
  22. data/doc/Instructions_it.txt +6 -9
  23. data/doc/Integrators.html +436 -0
  24. data/doc/LU.html +435 -0
  25. data/doc/Lexer.html +261 -0
  26. data/doc/Linmeric.html +109 -0
  27. data/doc/Listener.html +605 -0
  28. data/doc/Matrix.html +1719 -0
  29. data/doc/MyArgError.html +102 -0
  30. data/doc/NilClass.html +202 -0
  31. data/doc/Numeric.html +251 -0
  32. data/doc/Parser.html +389 -0
  33. data/doc/PrintError.html +622 -0
  34. data/doc/README_md.html +142 -0
  35. data/doc/Scp.html +530 -0
  36. data/doc/Sizer.html +652 -0
  37. data/doc/String.html +540 -0
  38. data/doc/Token.html +341 -0
  39. data/doc/Tool.html +394 -0
  40. data/doc/created.rid +18 -0
  41. data/doc/css/fonts.css +167 -0
  42. data/doc/css/rdoc.css +590 -0
  43. data/doc/fonts/Lato-Light.ttf +0 -0
  44. data/doc/fonts/Lato-LightItalic.ttf +0 -0
  45. data/doc/fonts/Lato-Regular.ttf +0 -0
  46. data/doc/fonts/Lato-RegularItalic.ttf +0 -0
  47. data/doc/fonts/SourceCodePro-Bold.ttf +0 -0
  48. data/doc/fonts/SourceCodePro-Regular.ttf +0 -0
  49. data/doc/images/add.png +0 -0
  50. data/doc/images/arrow_up.png +0 -0
  51. data/doc/images/brick.png +0 -0
  52. data/doc/images/brick_link.png +0 -0
  53. data/doc/images/bug.png +0 -0
  54. data/doc/images/bullet_black.png +0 -0
  55. data/doc/images/bullet_toggle_minus.png +0 -0
  56. data/doc/images/bullet_toggle_plus.png +0 -0
  57. data/doc/images/date.png +0 -0
  58. data/doc/images/delete.png +0 -0
  59. data/doc/images/find.png +0 -0
  60. data/doc/images/loadingAnimation.gif +0 -0
  61. data/doc/images/macFFBgHack.png +0 -0
  62. data/doc/images/package.png +0 -0
  63. data/doc/images/page_green.png +0 -0
  64. data/doc/images/page_white_text.png +0 -0
  65. data/doc/images/page_white_width.png +0 -0
  66. data/doc/images/plugin.png +0 -0
  67. data/doc/images/ruby.png +0 -0
  68. data/doc/images/tag_blue.png +0 -0
  69. data/doc/images/tag_green.png +0 -0
  70. data/doc/images/transparent.png +0 -0
  71. data/doc/images/wrench.png +0 -0
  72. data/doc/images/wrench_orange.png +0 -0
  73. data/doc/images/zoom.png +0 -0
  74. data/doc/index.html +190 -0
  75. data/doc/js/darkfish.js +161 -0
  76. data/doc/js/jquery.js +9404 -0
  77. data/doc/js/navigation.js +142 -0
  78. data/doc/js/navigation.js.gz +0 -0
  79. data/doc/js/search.js +109 -0
  80. data/doc/js/search_index.js +1 -0
  81. data/doc/js/search_index.js.gz +0 -0
  82. data/doc/js/searcher.js +228 -0
  83. data/doc/js/searcher.js.gz +0 -0
  84. data/doc/table_of_contents.html +834 -0
  85. data/lib/linmeric/Archive.rb +22 -1
  86. data/lib/linmeric/Calculator.rb +252 -0
  87. data/lib/linmeric/CnGal_Matrix_class.rb +130 -49
  88. data/lib/linmeric/CnGal_new_classes.rb +139 -37
  89. data/lib/linmeric/CnGal_tools.rb +23 -40
  90. data/lib/linmeric/Error_print.rb +35 -1
  91. data/lib/linmeric/Function_class.rb +70 -11
  92. data/lib/linmeric/Integrators.rb +81 -35
  93. data/lib/linmeric/LU.rb +26 -5
  94. data/lib/linmeric/Lexer.rb +19 -1
  95. data/lib/linmeric/Listener.rb +25 -5
  96. data/lib/linmeric/Parser.rb +23 -1
  97. data/lib/linmeric/Scopify.rb +52 -31
  98. data/lib/linmeric/Sizer.rb +43 -10
  99. data/lib/linmeric/Token.rb +23 -4
  100. data/lib/linmeric/version.rb +3 -0
  101. data/lib/linmeric.rb +10 -8
  102. data/lib/linmeric_bin.rb +12 -0
  103. metadata +126 -22
  104. data/doc/Instructions_en.html +0 -231
  105. data/doc/Instructions_it.html +0 -231
  106. data/doc/README_en.html +0 -177
  107. data/doc/README_en.txt +0 -30
  108. data/doc/README_it.html +0 -187
  109. data/doc/README_it.txt +0 -32
data/bin/linmeric CHANGED
@@ -1,7 +1,9 @@
1
1
  #! /usr/bin/env ruby
2
2
 
3
- require "linmeric"
3
+ require "linmeric_bin"
4
+ require_relative "help/Help.rb"
4
5
 
6
+ Help.ask if ["-h","--help"].include? ARGV[0]
5
7
 
6
8
  @error = false
7
9
  @vars = {}
@@ -18,19 +20,14 @@ require "linmeric"
18
20
  t = b.tr
19
21
  if a.similar_to? t then
20
22
  a += t
21
- # if a.raised_exception? != nil then
22
- # puts " " + a.raised_exception?
23
- # @error = true
24
- # return nil
25
- # end
26
23
  return a
27
24
  else
28
- puts " Argument Error: Cannot sum #{a.getRws}x#{a.getCls} matrix with #{b.getRws}x#{b.getCls}"#; puts
25
+ puts " Argument Error: Cannot sum #{a.getRws}x#{a.getCls} matrix with #{b.getRws}x#{b.getCls}"
29
26
  @error = true
30
27
  return nil
31
28
  end
32
29
  else
33
- puts " Math Error: cannot sum #{a.class} with #{b.class}"#; puts
30
+ puts " Math Error: cannot sum #{a.class} with #{b.class}"
34
31
  @error = true
35
32
  return nil
36
33
  end
@@ -53,20 +50,14 @@ require "linmeric"
53
50
  if a.similar_to? t then
54
51
  a = a - t
55
52
  else
56
- puts " Argument Error: Cannot subtract #{a.getRws}x#{a.getCls} matrix with #{b.getRws}x#{b.getCls}"#; puts
53
+ puts " Argument Error: Cannot subtract #{a.getRws}x#{a.getCls} matrix with #{b.getRws}x#{b.getCls}"
57
54
  @error = true
58
55
  return nil
59
56
  end
60
57
  end
61
- # if a.raised_exception? != nil then
62
- # puts " " + a.raised_exception?
63
- # @error = true
64
- # return nil
65
- # else
66
58
  return a
67
- # end
68
59
  else
69
- puts " Math Error: cannot subtract #{a.class} with #{b.class}"#; puts
60
+ puts " Math Error: cannot subtract #{a.class} with #{b.class}"
70
61
  @error = true
71
62
  return nil
72
63
  end
@@ -79,14 +70,14 @@ require "linmeric"
79
70
  b = replace_var(b) if b.is_a? String
80
71
  unless @error
81
72
  if a.is_a? Numeric or a.is_a? Matrix then
82
- a == b ? (puts true) : (puts false);puts
73
+ a == b ? (puts "=> true") : (puts "=> false")
83
74
  else
84
75
  @vars[a] = b
85
76
  if not b.is_a? Matrix then
86
- print "=> "; b.show#; puts
77
+ puts "=> #{b}"
87
78
  else
88
79
  puts "=>"
89
- b.show#; puts
80
+ puts b
90
81
  end
91
82
  end
92
83
  end
@@ -105,12 +96,12 @@ require "linmeric"
105
96
  if a.can_multiply? t then
106
97
  return a * t
107
98
  else
108
- puts " Cannot multiply #{a.getRws}x#{a.getCls} matrix with #{b.getRws}x#{b.getCls}"#; puts
99
+ puts " Cannot multiply #{a.getRws}x#{a.getCls} matrix with #{b.getRws}x#{b.getCls}"
109
100
  @error = true
110
101
  return nil
111
102
  end
112
103
  else
113
- puts " Cannot multiply #{a.class} with #{b.class}"#; puts
104
+ puts " Cannot multiply #{a.class} with #{b.class}"
114
105
  end
115
106
  end
116
107
  end,
@@ -123,14 +114,12 @@ require "linmeric"
123
114
  unless @error
124
115
  if (a.can_divide? b) and b != 0 then
125
116
  return a / b.to_f
126
- #elsif (a.is_a? Matrix and b.s_a? Numeric) or (a.is_a? Numeric and b.is_a? Matrix) then
127
- # return a / b
128
117
  else
129
118
  @error = true
130
119
  if b == 0 then
131
- puts " Math Error: division for 0"#; puts
120
+ puts " Math Error: division for 0"
132
121
  else
133
- puts " Math Error: invalid divison between #{a.class} and #{b.class}"#; puts
122
+ puts " Math Error: invalid divison between #{a.class} and #{b.class}"
134
123
  end
135
124
  return nil
136
125
  end
@@ -149,12 +138,12 @@ require "linmeric"
149
138
  elsif (a.is_a? Matrix and b.is_a? Numeric) or (a.is_a? Numeric and b.is_a? Matrix)
150
139
  return a ** b
151
140
  else
152
- puts " Math Error: invalid power #{a.class}-#{b.class}"#; puts
141
+ puts " Math Error: invalid power #{a.class}-#{b.class}"
153
142
  @error = true
154
143
  return nil
155
144
  end
156
145
  else
157
- puts " Math Error: 0^0"#; puts
146
+ puts " Math Error: 0^0"
158
147
  @error = true
159
148
  return nil
160
149
  end
@@ -168,17 +157,13 @@ require "linmeric"
168
157
  unless @error
169
158
  if a.is_a? Matrix then
170
159
  a.to_file(b)
171
- # unless a.raised_exception? == nil
172
- # puts " " + a.raised_exception?; puts
173
- # @error = true
174
- # end
175
160
  else
176
161
  if Dir.exist? File.dirname(b) then
177
162
  File.open(b,"w") do |ln|
178
163
  ln.puts "#{a}"
179
164
  end
180
165
  else
181
- puts " Argument Error: Invalid directory; Directory not found"#; puts
166
+ puts " Argument Error: Invalid directory; Directory not found"
182
167
  @error = true
183
168
  end
184
169
  end
@@ -193,7 +178,7 @@ require "linmeric"
193
178
  if a.is_a? Matrix then
194
179
  return a.tr
195
180
  else
196
- puts " Math Error: cannot traspose a #{a.class} value"#; puts
181
+ puts " Math Error: cannot traspose a #{a.class} value"
197
182
  @error = true
198
183
  return nil
199
184
  end
@@ -208,12 +193,12 @@ require "linmeric"
208
193
  if a.is_squared? then
209
194
  return a.laplace
210
195
  else
211
- puts " Math Error: determinant on a non-squared Matrix"#; puts
196
+ puts " Math Error: determinant on a non-squared Matrix"
212
197
  @error = true
213
198
  return nil
214
199
  end
215
200
  else
216
- puts " Math Error: determinant on #{a.class} value"#; puts
201
+ puts " Math Error: determinant on #{a.class} value"
217
202
  @error = true
218
203
  return nil
219
204
  end
@@ -225,9 +210,9 @@ require "linmeric"
225
210
  a = replace_var(a) if a.is_a? String
226
211
  unless @error
227
212
  if a.is_a? Matrix then
228
- return a.norma
213
+ return a.norm
229
214
  else
230
- puts " Math Error: norm on a #{a.class} value"#; puts
215
+ puts " Math Error: norm on a #{a.class} value"
231
216
  @error = true
232
217
  return nil
233
218
  end
@@ -242,7 +227,7 @@ require "linmeric"
242
227
  return Matrix.identity(a) if a > 0
243
228
  end
244
229
  @error = true
245
- puts " Argument Error: bad value #{a} for Identity Matrix"#; puts
230
+ puts " Argument Error: bad value #{a} for Identity Matrix"
246
231
  return nil
247
232
  end
248
233
  end,
@@ -251,7 +236,7 @@ require "linmeric"
251
236
  a = a - "\"" if a.is_a? String
252
237
  return Filename.new(a) if a.is_a? String
253
238
  @error = true
254
- puts " Argument Error: bad filename #{a}"#; puts
239
+ puts " Argument Error: bad filename #{a}"
255
240
  return nil
256
241
  end,
257
242
 
@@ -303,17 +288,12 @@ require "linmeric"
303
288
  b = b.to_block(2)
304
289
  if b == nil then
305
290
  @error = true
306
- puts " Argument Error: bad function for Matrix"#; puts
291
+ puts " Argument Error: bad function for Matrix"
307
292
  return nil
308
293
  end
309
- m = eval(" Matrix.new(a.sx,a.dx) #{b}")
294
+ m = eval(" Matrix.new(#{a.sx},#{a.dx}) #{b}")
310
295
  end
311
296
  end
312
- # if m.raised_exception? != nil then
313
- # @error = true
314
- # puts " " + m.raised_exception?; puts
315
- # return nil
316
- # end
317
297
  return m
318
298
  end
319
299
  return nil
@@ -323,7 +303,7 @@ require "linmeric"
323
303
  a = a - '"'
324
304
  a = Function.new(a)
325
305
  unless a.ok?
326
- puts " Argument Error: bad function inserted. Maybe sintax error?"#; puts
306
+ puts " Argument Error: bad function inserted. Maybe sintax error?"
327
307
  @error = true
328
308
  return nil
329
309
  end
@@ -340,7 +320,7 @@ require "linmeric"
340
320
  return nil
341
321
  end
342
322
  else
343
- puts " Argument Error: Bad argument #{a} for 'shw:' command"#; puts
323
+ puts " Argument Error: Bad argument #{a} for 'shw:' command"
344
324
  end
345
325
  end,
346
326
 
@@ -393,7 +373,7 @@ require "linmeric"
393
373
  f = Function.new(f)
394
374
  unless f.ok?
395
375
  @error = true
396
- puts " Argument Error: bad function for integration"#; puts
376
+ puts " Argument Error: bad function for integration"
397
377
  return nil
398
378
  end
399
379
  else
@@ -411,7 +391,7 @@ require "linmeric"
411
391
  return nil
412
392
  end
413
393
  if n <= 0 then
414
- puts " Argument Error: bad NumPoints for integration"#; puts
394
+ puts " Argument Error: bad NumPoints for integration"
415
395
  @error = true
416
396
  return nil
417
397
  end
@@ -438,7 +418,7 @@ def replace_var(var)
438
418
  if @vars.include? var then
439
419
  return @vars[var]
440
420
  else
441
- puts " Argument Error: variable '#{var}' not defined"#; puts
421
+ puts " Argument Error: variable '#{var}' not defined"
442
422
  @error = true
443
423
  return nil
444
424
  end
@@ -472,7 +452,7 @@ def evaluate(token_arr)
472
452
  token_arr[i+1] = @operators[token_arr[i]][token_arr[i - 1],token_arr[i + 1]]
473
453
  end
474
454
  else
475
- puts " Unknown keyword or operator '#{token_arr[i]}'"#; puts
455
+ puts " Unknown keyword or operator '#{token_arr[i]}'"
476
456
  @error = true
477
457
  return nil
478
458
  end
@@ -506,9 +486,9 @@ begin
506
486
  string.include? "shwvar:") or @error
507
487
  if ev.is_a? Matrix then
508
488
  puts "=>"
509
- ev.show
489
+ puts ev
510
490
  else
511
- print "=> "; ev.show#; puts
491
+ puts "=> #{ev}"
512
492
  end
513
493
  end
514
494
  end
@@ -516,7 +496,7 @@ begin
516
496
  @error = false
517
497
  parser.reset
518
498
  print "Linmeric-main> "
519
- reader.reset
499
+ # reader.reset
520
500
  string = reader.gets
521
501
  end
522
502
 
@@ -524,21 +504,7 @@ rescue => error
524
504
  puts error
525
505
  retry
526
506
  end
527
-
528
-
529
-
530
- ##############################################
531
- # TESTS #
532
- ##############################################
533
- =begin
534
- a = Matrix.new(2,3) {|i,j| i + j}
535
- b = Matrix.new(3,2) {|i,j| i + j}
536
- @vars = {"a" => a, "b" => b}
537
- scopify = Scp.new
538
- @operators[:"shwvar:" ][]#["2,3",Function.new("i+j")].show
539
- #puts evaluate(Parser.parse(scopify.scopify('12=3*4')))#.show
540
- puts @vars
541
- =end
507
+
542
508
 
543
509
 
544
510
 
data/doc/Archive.html ADDED
@@ -0,0 +1,352 @@
1
+ <!DOCTYPE html>
2
+
3
+ <html>
4
+ <head>
5
+ <meta charset="UTF-8">
6
+
7
+ <title>class Archive - 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-next_">#next_</a>
76
+
77
+ <li ><a href="#method-i-previous">#previous</a>
78
+
79
+ <li ><a href="#method-i-store">#store</a>
80
+
81
+ <li ><a href="#method-i-top">#top</a>
82
+
83
+ </ul>
84
+ </div>
85
+
86
+ </div>
87
+ </nav>
88
+
89
+ <main role="main" aria-labelledby="class-Archive">
90
+ <h1 id="class-Archive" class="class">
91
+ class Archive
92
+ </h1>
93
+
94
+ <section class="description">
95
+
96
+ <p>This class provides a useful object to store the command history of
97
+ linmeric</p>
98
+ <dl class="rdoc-list note-list"><dt>Author
99
+ <dd>
100
+ <p>Massimiliano Dal Mas (<a
101
+ href="mailto:max.codeware@gmail.com">max.codeware@gmail.com</a>)</p>
102
+ </dd><dt>License
103
+ <dd>
104
+ <p>Distributed under MIT license</p>
105
+ </dd></dl>
106
+
107
+ </section>
108
+
109
+
110
+
111
+
112
+ <section id="5Buntitled-5D" class="documentation-section">
113
+
114
+
115
+
116
+
117
+
118
+
119
+
120
+
121
+
122
+ <section id="public-class-5Buntitled-5D-method-details" class="method-section">
123
+ <header>
124
+ <h3>Public Class Methods</h3>
125
+ </header>
126
+
127
+
128
+ <div id="method-c-new" class="method-detail ">
129
+
130
+ <div class="method-heading">
131
+ <span class="method-name">new</span><span
132
+ class="method-args">()</span>
133
+
134
+ <span class="method-click-advice">click to toggle source</span>
135
+
136
+ </div>
137
+
138
+
139
+ <div class="method-description">
140
+
141
+ <p>Creates a new <a href="Archive.html">Archive</a> objects</p>
142
+
143
+
144
+
145
+
146
+ <div class="method-source-code" id="new-source">
147
+ <pre><span class="ruby-comment"># File lib/linmeric/Archive.rb, line 12</span>
148
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">initialize</span>
149
+ <span class="ruby-ivar">@myArray</span> = []
150
+ <span class="ruby-ivar">@i</span> = <span class="ruby-value">0</span>
151
+ <span class="ruby-keyword">end</span></pre>
152
+ </div>
153
+
154
+ </div>
155
+
156
+
157
+
158
+
159
+ </div>
160
+
161
+
162
+ </section>
163
+
164
+ <section id="public-instance-5Buntitled-5D-method-details" class="method-section">
165
+ <header>
166
+ <h3>Public Instance Methods</h3>
167
+ </header>
168
+
169
+
170
+ <div id="method-i-next_" class="method-detail ">
171
+
172
+ <div class="method-heading">
173
+ <span class="method-name">next_</span><span
174
+ class="method-args">()</span>
175
+
176
+ <span class="method-click-advice">click to toggle source</span>
177
+
178
+ </div>
179
+
180
+
181
+ <div class="method-description">
182
+
183
+ <p>Returns the next item compared to the pointer position</p>
184
+ <ul><li>
185
+ <p>*<strong>returns</strong>*: saved object; “” if the pointer is already at
186
+ the</p>
187
+ </li></ul>
188
+
189
+ <p>end of the <a href="Archive.html">Archive</a></p>
190
+
191
+
192
+
193
+
194
+ <div class="method-source-code" id="next_-source">
195
+ <pre><span class="ruby-comment"># File lib/linmeric/Archive.rb, line 51</span>
196
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">next_</span>
197
+ <span class="ruby-keyword">if</span> <span class="ruby-ivar">@i</span> <span class="ruby-operator">&lt;</span> (<span class="ruby-ivar">@myArray</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span>)
198
+ <span class="ruby-ivar">@i</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
199
+ <span class="ruby-keyword">return</span> <span class="ruby-ivar">@myArray</span>[<span class="ruby-ivar">@i</span>].<span class="ruby-identifier">clone</span>
200
+ <span class="ruby-keyword">else</span>
201
+ <span class="ruby-ivar">@i</span> = <span class="ruby-ivar">@myArray</span>.<span class="ruby-identifier">size</span>
202
+ <span class="ruby-keyword">return</span> <span class="ruby-string">&quot;&quot;</span>
203
+ <span class="ruby-keyword">end</span>
204
+ <span class="ruby-ivar">@i</span> = <span class="ruby-ivar">@myArray</span>.<span class="ruby-identifier">size</span>
205
+ <span class="ruby-keyword">return</span> <span class="ruby-string">&quot;&quot;</span>
206
+ <span class="ruby-keyword">end</span></pre>
207
+ </div>
208
+
209
+ </div>
210
+
211
+
212
+
213
+
214
+ </div>
215
+
216
+
217
+ <div id="method-i-previous" class="method-detail ">
218
+
219
+ <div class="method-heading">
220
+ <span class="method-name">previous</span><span
221
+ class="method-args">()</span>
222
+
223
+ <span class="method-click-advice">click to toggle source</span>
224
+
225
+ </div>
226
+
227
+
228
+ <div class="method-description">
229
+
230
+ <p>Returns the previous item compared to the pointer position</p>
231
+ <ul><li>
232
+ <p>*<strong>returns</strong>*: saved object; “” if the pointer is already at
233
+ the</p>
234
+ </li></ul>
235
+
236
+ <p>beginning of the archive</p>
237
+
238
+
239
+
240
+
241
+ <div class="method-source-code" id="previous-source">
242
+ <pre><span class="ruby-comment"># File lib/linmeric/Archive.rb, line 35</span>
243
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">previous</span>
244
+ <span class="ruby-keyword">if</span> <span class="ruby-keyword">not</span> <span class="ruby-ivar">@i</span> <span class="ruby-operator">==</span> <span class="ruby-value">0</span> <span class="ruby-keyword">then</span>
245
+ <span class="ruby-ivar">@i</span> <span class="ruby-operator">-=</span> <span class="ruby-value">1</span>
246
+ <span class="ruby-keyword">return</span> <span class="ruby-ivar">@myArray</span>[<span class="ruby-ivar">@i</span>].<span class="ruby-identifier">clone</span>
247
+ <span class="ruby-keyword">else</span>
248
+ <span class="ruby-ivar">@i</span> = <span class="ruby-value">0</span>
249
+ <span class="ruby-keyword">return</span> <span class="ruby-string">&quot;&quot;</span>
250
+ <span class="ruby-keyword">end</span>
251
+ <span class="ruby-ivar">@i</span> = <span class="ruby-value">0</span>
252
+ <span class="ruby-keyword">return</span> <span class="ruby-string">&quot;&quot;</span>
253
+ <span class="ruby-keyword">end</span></pre>
254
+ </div>
255
+
256
+ </div>
257
+
258
+
259
+
260
+
261
+ </div>
262
+
263
+
264
+ <div id="method-i-store" class="method-detail ">
265
+
266
+ <div class="method-heading">
267
+ <span class="method-name">store</span><span
268
+ class="method-args">(str)</span>
269
+
270
+ <span class="method-click-advice">click to toggle source</span>
271
+
272
+ </div>
273
+
274
+
275
+ <div class="method-description">
276
+
277
+ <p>Adds a new item to the archive (it keeps the last 20 items which have been
278
+ inserted).</p>
279
+ <ul><li>
280
+ <p>*<strong>argument</strong>*: item to be added (mainly a <a
281
+ href="String.html">String</a>)</p>
282
+ </li></ul>
283
+
284
+
285
+
286
+
287
+ <div class="method-source-code" id="store-source">
288
+ <pre><span class="ruby-comment"># File lib/linmeric/Archive.rb, line 21</span>
289
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">store</span>(<span class="ruby-identifier">str</span>)
290
+ <span class="ruby-keyword">if</span> <span class="ruby-ivar">@myArray</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">==</span> <span class="ruby-value">20</span>
291
+ <span class="ruby-ivar">@myArray</span> = <span class="ruby-ivar">@myArray</span>[<span class="ruby-value">1</span><span class="ruby-operator">...</span><span class="ruby-ivar">@myArray</span>.<span class="ruby-identifier">size</span>] <span class="ruby-operator">+</span> [<span class="ruby-identifier">str</span>]
292
+ <span class="ruby-comment"># @i = @myArray.size</span>
293
+ <span class="ruby-keyword">else</span>
294
+ <span class="ruby-ivar">@myArray</span>[<span class="ruby-ivar">@myArray</span>.<span class="ruby-identifier">size</span>] = <span class="ruby-identifier">str</span>
295
+ <span class="ruby-ivar">@i</span> = <span class="ruby-ivar">@myArray</span>.<span class="ruby-identifier">size</span>
296
+ <span class="ruby-keyword">end</span>
297
+ <span class="ruby-keyword">end</span></pre>
298
+ </div>
299
+
300
+ </div>
301
+
302
+
303
+
304
+
305
+ </div>
306
+
307
+
308
+ <div id="method-i-top" class="method-detail ">
309
+
310
+ <div class="method-heading">
311
+ <span class="method-name">top</span><span
312
+ class="method-args">()</span>
313
+
314
+ <span class="method-click-advice">click to toggle source</span>
315
+
316
+ </div>
317
+
318
+
319
+ <div class="method-description">
320
+
321
+ <p>Moves the pointer to the top of the archive (the last element inserted)</p>
322
+
323
+
324
+
325
+
326
+ <div class="method-source-code" id="top-source">
327
+ <pre><span class="ruby-comment"># File lib/linmeric/Archive.rb, line 64</span>
328
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">top</span>
329
+ <span class="ruby-ivar">@i</span> = <span class="ruby-ivar">@myArray</span>.<span class="ruby-identifier">size</span>
330
+ <span class="ruby-keyword">end</span></pre>
331
+ </div>
332
+
333
+ </div>
334
+
335
+
336
+
337
+
338
+ </div>
339
+
340
+
341
+ </section>
342
+
343
+ </section>
344
+ </main>
345
+
346
+
347
+ <footer id="validator-badges" role="contentinfo">
348
+ <p><a href="http://validator.w3.org/check/referer">Validate</a>
349
+ <p>Generated by <a href="http://docs.seattlerb.org/rdoc/">RDoc</a> 4.2.0.
350
+ <p>Based on <a href="http://deveiate.org/projects/Darkfish-RDoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
351
+ </footer>
352
+