standup_md 0.3.2 → 0.3.7
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.lock +11 -9
- data/README.md +67 -34
- data/Rakefile +3 -1
- data/doc/README_md.html +54 -54
- data/doc/StandupMD.html +8 -97
- data/doc/StandupMD/Cli.html +21 -163
- data/doc/StandupMD/Cli/Helpers.html +13 -34
- data/doc/StandupMD/Config.html +7 -44
- data/doc/StandupMD/Config/Cli.html +26 -85
- data/doc/StandupMD/Config/Entry.html +23 -67
- data/doc/StandupMD/Config/EntryList.html +22 -48
- data/doc/StandupMD/Config/File.html +27 -155
- data/doc/StandupMD/Entry.html +11 -120
- data/doc/StandupMD/EntryList.html +101 -361
- data/doc/StandupMD/File.html +51 -182
- data/doc/StandupMD/Version.html +143 -0
- data/doc/created.rid +15 -15
- data/doc/css/rdoc.css +1 -1
- data/doc/index.html +52 -67
- data/doc/js/navigation.js.gz +0 -0
- data/doc/js/search_index.js +1 -1
- data/doc/js/search_index.js.gz +0 -0
- data/doc/js/searcher.js.gz +0 -0
- data/doc/table_of_contents.html +51 -110
- data/lib/standup_md.rb +3 -2
- data/lib/standup_md/cli.rb +2 -3
- data/lib/standup_md/cli/helpers.rb +66 -34
- data/lib/standup_md/config.rb +2 -2
- data/lib/standup_md/config/cli.rb +22 -21
- data/lib/standup_md/config/entry.rb +12 -7
- data/lib/standup_md/config/entry_list.rb +8 -3
- data/lib/standup_md/config/file.rb +24 -14
- data/lib/standup_md/entry.rb +2 -2
- data/lib/standup_md/entry_list.rb +24 -41
- data/lib/standup_md/file.rb +32 -15
- data/lib/standup_md/file/helpers.rb +13 -15
- data/lib/standup_md/version.rb +23 -4
- data/standup_md.gemspec +12 -16
- metadata +7 -6
data/doc/StandupMD/Cli.html
CHANGED
@@ -21,8 +21,6 @@
|
|
21
21
|
<link href="../css/rdoc.css" rel="stylesheet">
|
22
22
|
|
23
23
|
|
24
|
-
|
25
|
-
|
26
24
|
<body id="top" role="document" class="class">
|
27
25
|
<nav role="navigation">
|
28
26
|
<div id="project-navigation">
|
@@ -59,51 +57,38 @@
|
|
59
57
|
|
60
58
|
<div id="class-metadata">
|
61
59
|
|
62
|
-
|
60
|
+
|
61
|
+
<div id="parent-class-section" class="nav-section">
|
63
62
|
<h3>Parent</h3>
|
64
63
|
|
65
|
-
|
66
64
|
<p class="link">Object
|
67
|
-
|
68
65
|
</div>
|
69
66
|
|
70
|
-
|
67
|
+
|
68
|
+
<div id="includes-section" class="nav-section">
|
71
69
|
<h3>Included Modules</h3>
|
72
70
|
|
73
71
|
<ul class="link-list">
|
74
|
-
|
75
|
-
|
76
72
|
<li><a class="include" href="Cli/Helpers.html">StandupMD::Cli::Helpers</a>
|
77
|
-
|
78
|
-
|
79
73
|
</ul>
|
80
74
|
</div>
|
81
75
|
|
82
76
|
|
83
|
-
|
77
|
+
|
78
|
+
<!-- Method Quickref -->
|
84
79
|
<div id="method-list-section" class="nav-section">
|
85
80
|
<h3>Methods</h3>
|
86
81
|
|
87
82
|
<ul class="link-list" role="directory">
|
88
|
-
|
89
83
|
<li ><a href="#method-c-config">::config</a>
|
90
|
-
|
91
84
|
<li ><a href="#method-c-echo">::echo</a>
|
92
|
-
|
93
85
|
<li ><a href="#method-c-execute">::execute</a>
|
94
|
-
|
95
86
|
<li ><a href="#method-c-new">::new</a>
|
96
|
-
|
97
87
|
<li ><a href="#method-i-echo">#echo</a>
|
98
|
-
|
99
88
|
<li ><a href="#method-i-edit">#edit</a>
|
100
|
-
|
101
89
|
<li ><a href="#method-i-load_preferences">#load_preferences</a>
|
102
|
-
|
103
90
|
<li ><a href="#method-i-preference_file_loaded-3F">#preference_file_loaded?</a>
|
104
|
-
|
105
91
|
<li ><a href="#method-i-write_file">#write_file</a>
|
106
|
-
|
107
92
|
</ul>
|
108
93
|
</div>
|
109
94
|
|
@@ -121,21 +106,15 @@
|
|
121
106
|
|
122
107
|
</section>
|
123
108
|
|
124
|
-
|
125
109
|
<section id="5Buntitled-5D" class="documentation-section">
|
126
|
-
|
127
110
|
|
128
|
-
|
129
111
|
|
130
|
-
|
131
112
|
|
132
|
-
|
133
113
|
<section class="attribute-method-details" class="method-section">
|
134
114
|
<header>
|
135
115
|
<h3>Attributes</h3>
|
136
116
|
</header>
|
137
117
|
|
138
|
-
|
139
118
|
<div id="attribute-i-entry" class="method-detail">
|
140
119
|
<div class="method-heading attribute-method-heading">
|
141
120
|
<span class="method-name">entry</span><span
|
@@ -143,14 +122,11 @@
|
|
143
122
|
</div>
|
144
123
|
|
145
124
|
<div class="method-description">
|
146
|
-
|
147
125
|
<p>The entry searched for, usually today.</p>
|
148
126
|
|
149
127
|
<p>@return [StandupMD::Entry]</p>
|
150
|
-
|
151
128
|
</div>
|
152
129
|
</div>
|
153
|
-
|
154
130
|
<div id="attribute-i-file" class="method-detail">
|
155
131
|
<div class="method-heading attribute-method-heading">
|
156
132
|
<span class="method-name">file</span><span
|
@@ -158,14 +134,11 @@
|
|
158
134
|
</div>
|
159
135
|
|
160
136
|
<div class="method-description">
|
161
|
-
|
162
137
|
<p>The file loaded.</p>
|
163
138
|
|
164
139
|
<p>@return [StandupMD::File]</p>
|
165
|
-
|
166
140
|
</div>
|
167
141
|
</div>
|
168
|
-
|
169
142
|
<div id="attribute-i-options" class="method-detail">
|
170
143
|
<div class="method-heading attribute-method-heading">
|
171
144
|
<span class="method-name">options</span><span
|
@@ -173,114 +146,77 @@
|
|
173
146
|
</div>
|
174
147
|
|
175
148
|
<div class="method-description">
|
176
|
-
|
177
149
|
<p>Arguments passed at runtime.</p>
|
178
150
|
|
179
151
|
<p>@return [Array] ARGV</p>
|
180
|
-
|
181
152
|
</div>
|
182
153
|
</div>
|
183
|
-
|
184
154
|
</section>
|
185
|
-
|
186
155
|
|
187
|
-
|
156
|
+
|
188
157
|
<section id="public-class-5Buntitled-5D-method-details" class="method-section">
|
189
158
|
<header>
|
190
159
|
<h3>Public Class Methods</h3>
|
191
160
|
</header>
|
192
161
|
|
193
|
-
|
194
162
|
<div id="method-c-config" class="method-detail ">
|
195
|
-
|
196
163
|
<div class="method-heading">
|
197
164
|
<span class="method-name">config</span><span
|
198
165
|
class="method-args">()</span>
|
199
|
-
|
200
166
|
<span class="method-click-advice">click to toggle source</span>
|
201
|
-
|
202
167
|
</div>
|
203
|
-
|
204
168
|
|
205
169
|
<div class="method-description">
|
206
|
-
|
207
170
|
<p>Access to the class's configuration.</p>
|
208
171
|
|
209
172
|
<p>@return [StandupMD::Config::Cli]</p>
|
210
|
-
|
211
|
-
|
212
173
|
|
213
|
-
|
214
174
|
<div class="method-source-code" id="config-source">
|
215
|
-
<pre><span class="ruby-comment"># File lib/standup_md/cli.rb, line
|
175
|
+
<pre><span class="ruby-comment"># File lib/standup_md/cli.rb, line 16</span>
|
216
176
|
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">config</span>
|
217
177
|
<span class="ruby-ivar">@config</span> <span class="ruby-operator">||=</span> <span class="ruby-constant">StandupMD</span>.<span class="ruby-identifier">config</span>.<span class="ruby-identifier">cli</span>
|
218
178
|
<span class="ruby-keyword">end</span></pre>
|
219
179
|
</div>
|
220
|
-
|
221
180
|
</div>
|
222
181
|
|
223
|
-
|
224
182
|
|
225
|
-
|
226
183
|
</div>
|
227
184
|
|
228
|
-
|
229
185
|
<div id="method-c-echo" class="method-detail ">
|
230
|
-
|
231
186
|
<div class="method-heading">
|
232
187
|
<span class="method-name">echo</span><span
|
233
188
|
class="method-args">(msg)</span>
|
234
|
-
|
235
189
|
<span class="method-click-advice">click to toggle source</span>
|
236
|
-
|
237
190
|
</div>
|
238
|
-
|
239
191
|
|
240
192
|
<div class="method-description">
|
241
|
-
|
242
193
|
<p>Prints output if <code>verbose</code> is true.</p>
|
243
194
|
|
244
195
|
<p>@return [nil]</p>
|
245
|
-
|
246
|
-
|
247
196
|
|
248
|
-
|
249
197
|
<div class="method-source-code" id="echo-source">
|
250
|
-
<pre><span class="ruby-comment"># File lib/standup_md/cli.rb, line
|
198
|
+
<pre><span class="ruby-comment"># File lib/standup_md/cli.rb, line 24</span>
|
251
199
|
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">echo</span>(<span class="ruby-identifier">msg</span>)
|
252
200
|
<span class="ruby-identifier">puts</span> <span class="ruby-identifier">msg</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">config</span>.<span class="ruby-identifier">verbose</span>
|
253
201
|
<span class="ruby-keyword">end</span></pre>
|
254
202
|
</div>
|
255
|
-
|
256
203
|
</div>
|
257
204
|
|
258
|
-
|
259
205
|
|
260
|
-
|
261
206
|
</div>
|
262
207
|
|
263
|
-
|
264
208
|
<div id="method-c-execute" class="method-detail ">
|
265
|
-
|
266
209
|
<div class="method-heading">
|
267
210
|
<span class="method-name">execute</span><span
|
268
211
|
class="method-args">(options = [])</span>
|
269
|
-
|
270
212
|
<span class="method-click-advice">click to toggle source</span>
|
271
|
-
|
272
213
|
</div>
|
273
|
-
|
274
214
|
|
275
215
|
<div class="method-description">
|
276
|
-
|
277
216
|
<p>Creates an instance of <code>StandupMD</code> and runs what the user requested.</p>
|
278
|
-
|
279
|
-
|
280
217
|
|
281
|
-
|
282
218
|
<div class="method-source-code" id="execute-source">
|
283
|
-
<pre><span class="ruby-comment"># File lib/standup_md/cli.rb, line
|
219
|
+
<pre><span class="ruby-comment"># File lib/standup_md/cli.rb, line 30</span>
|
284
220
|
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">execute</span>(<span class="ruby-identifier">options</span> = [])
|
285
221
|
<span class="ruby-identifier">exe</span> = <span class="ruby-identifier">new</span>(<span class="ruby-identifier">options</span>)
|
286
222
|
|
@@ -292,158 +228,109 @@
|
|
292
228
|
<span class="ruby-keyword">end</span>
|
293
229
|
<span class="ruby-keyword">end</span></pre>
|
294
230
|
</div>
|
295
|
-
|
296
231
|
</div>
|
297
232
|
|
298
|
-
|
299
233
|
|
300
|
-
|
301
234
|
</div>
|
302
235
|
|
303
|
-
|
304
236
|
<div id="method-c-new" class="method-detail ">
|
305
|
-
|
306
237
|
<div class="method-heading">
|
307
238
|
<span class="method-name">new</span><span
|
308
239
|
class="method-args">(options = [], load_config = true)</span>
|
309
|
-
|
310
240
|
<span class="method-click-advice">click to toggle source</span>
|
311
|
-
|
312
241
|
</div>
|
313
|
-
|
314
242
|
|
315
243
|
<div class="method-description">
|
316
|
-
|
317
244
|
<p>Constructor. Sets defaults.</p>
|
318
245
|
|
319
246
|
<p>@param [Array] options</p>
|
320
|
-
|
321
|
-
|
322
247
|
|
323
|
-
|
324
248
|
<div class="method-source-code" id="new-source">
|
325
|
-
<pre><span class="ruby-comment"># File lib/standup_md/cli.rb, line
|
249
|
+
<pre><span class="ruby-comment"># File lib/standup_md/cli.rb, line 63</span>
|
326
250
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">initialize</span>(<span class="ruby-identifier">options</span> = [], <span class="ruby-identifier">load_config</span> = <span class="ruby-keyword">true</span>)
|
327
251
|
<span class="ruby-ivar">@config</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">class</span>.<span class="ruby-identifier">config</span>
|
328
252
|
<span class="ruby-ivar">@preference_file_loaded</span> = <span class="ruby-keyword">false</span>
|
329
253
|
<span class="ruby-ivar">@options</span> = <span class="ruby-identifier">options</span>
|
330
254
|
<span class="ruby-identifier">load_preferences</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">load_config</span>
|
331
|
-
<span class="ruby-identifier">
|
255
|
+
<span class="ruby-identifier">load_runtime_preferences</span>(<span class="ruby-identifier">options</span>)
|
332
256
|
<span class="ruby-ivar">@file</span> = <span class="ruby-constant">StandupMD</span><span class="ruby-operator">::</span><span class="ruby-constant">File</span>.<span class="ruby-identifier">find_by_date</span>(<span class="ruby-ivar">@config</span>.<span class="ruby-identifier">date</span>)
|
333
257
|
<span class="ruby-ivar">@file</span>.<span class="ruby-identifier">load</span>
|
334
|
-
<span class="ruby-ivar">@entry</span> = <span class="ruby-identifier">
|
258
|
+
<span class="ruby-ivar">@entry</span> = <span class="ruby-identifier">new_entry</span>(<span class="ruby-ivar">@file</span>)
|
335
259
|
<span class="ruby-keyword">end</span></pre>
|
336
260
|
</div>
|
337
|
-
|
338
261
|
</div>
|
339
262
|
|
340
|
-
|
341
263
|
|
342
|
-
|
343
264
|
</div>
|
344
265
|
|
345
|
-
|
346
266
|
</section>
|
347
|
-
|
267
|
+
|
348
268
|
<section id="public-instance-5Buntitled-5D-method-details" class="method-section">
|
349
269
|
<header>
|
350
270
|
<h3>Public Instance Methods</h3>
|
351
271
|
</header>
|
352
272
|
|
353
|
-
|
354
273
|
<div id="method-i-echo" class="method-detail ">
|
355
|
-
|
356
274
|
<div class="method-heading">
|
357
275
|
<span class="method-name">echo</span><span
|
358
276
|
class="method-args">(msg)</span>
|
359
|
-
|
360
277
|
<span class="method-click-advice">click to toggle source</span>
|
361
|
-
|
362
278
|
</div>
|
363
|
-
|
364
279
|
|
365
280
|
<div class="method-description">
|
366
|
-
|
367
281
|
<p>Quick access to <a href="Cli.html#method-c-echo"><code>Cli.echo</code></a>.</p>
|
368
282
|
|
369
283
|
<p>@return [nil]</p>
|
370
|
-
|
371
|
-
|
372
284
|
|
373
|
-
|
374
285
|
<div class="method-source-code" id="echo-source">
|
375
|
-
<pre><span class="ruby-comment"># File lib/standup_md/cli.rb, line
|
286
|
+
<pre><span class="ruby-comment"># File lib/standup_md/cli.rb, line 117</span>
|
376
287
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">echo</span>(<span class="ruby-identifier">msg</span>)
|
377
288
|
<span class="ruby-keyword">self</span>.<span class="ruby-identifier">class</span>.<span class="ruby-identifier">echo</span>(<span class="ruby-identifier">msg</span>)
|
378
289
|
<span class="ruby-keyword">end</span></pre>
|
379
290
|
</div>
|
380
|
-
|
381
291
|
</div>
|
382
292
|
|
383
|
-
|
384
293
|
|
385
|
-
|
386
294
|
</div>
|
387
295
|
|
388
|
-
|
389
296
|
<div id="method-i-edit" class="method-detail ">
|
390
|
-
|
391
297
|
<div class="method-heading">
|
392
298
|
<span class="method-name">edit</span><span
|
393
299
|
class="method-args">()</span>
|
394
|
-
|
395
300
|
<span class="method-click-advice">click to toggle source</span>
|
396
|
-
|
397
301
|
</div>
|
398
|
-
|
399
302
|
|
400
303
|
<div class="method-description">
|
401
|
-
|
402
304
|
<p>Opens the file in an editor. Abandons the script.</p>
|
403
305
|
|
404
306
|
<p>@return [nil]</p>
|
405
|
-
|
406
|
-
|
407
307
|
|
408
|
-
|
409
308
|
<div class="method-source-code" id="edit-source">
|
410
|
-
<pre><span class="ruby-comment"># File lib/standup_md/cli.rb, line
|
309
|
+
<pre><span class="ruby-comment"># File lib/standup_md/cli.rb, line 99</span>
|
411
310
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">edit</span>
|
412
311
|
<span class="ruby-identifier">echo</span> <span class="ruby-node">"Opening file in #{@config.editor}"</span>
|
413
312
|
<span class="ruby-identifier">exec</span>(<span class="ruby-node">"#{@config.editor} #{file.name}"</span>)
|
414
313
|
<span class="ruby-keyword">end</span></pre>
|
415
314
|
</div>
|
416
|
-
|
417
315
|
</div>
|
418
316
|
|
419
|
-
|
420
317
|
|
421
|
-
|
422
318
|
</div>
|
423
319
|
|
424
|
-
|
425
320
|
<div id="method-i-load_preferences" class="method-detail ">
|
426
|
-
|
427
321
|
<div class="method-heading">
|
428
322
|
<span class="method-name">load_preferences</span><span
|
429
323
|
class="method-args">()</span>
|
430
|
-
|
431
324
|
<span class="method-click-advice">click to toggle source</span>
|
432
|
-
|
433
325
|
</div>
|
434
|
-
|
435
326
|
|
436
327
|
<div class="method-description">
|
437
|
-
|
438
328
|
<p>Load the preference file.</p>
|
439
329
|
|
440
330
|
<p>@return [nil]</p>
|
441
|
-
|
442
|
-
|
443
331
|
|
444
|
-
|
445
332
|
<div class="method-source-code" id="load_preferences-source">
|
446
|
-
<pre><span class="ruby-comment"># File lib/standup_md/cli.rb, line
|
333
|
+
<pre><span class="ruby-comment"># File lib/standup_md/cli.rb, line 78</span>
|
447
334
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">load_preferences</span>
|
448
335
|
<span class="ruby-keyword">if</span> <span class="ruby-operator">::</span><span class="ruby-constant">File</span>.<span class="ruby-identifier">exist?</span>(<span class="ruby-ivar">@config</span>.<span class="ruby-identifier">preference_file</span>)
|
449
336
|
<span class="ruby-operator">::</span><span class="ruby-constant">StandupMD</span>.<span class="ruby-identifier">load_config_file</span>(<span class="ruby-ivar">@config</span>.<span class="ruby-identifier">preference_file</span>)
|
@@ -453,96 +340,67 @@
|
|
453
340
|
<span class="ruby-keyword">end</span>
|
454
341
|
<span class="ruby-keyword">end</span></pre>
|
455
342
|
</div>
|
456
|
-
|
457
343
|
</div>
|
458
344
|
|
459
|
-
|
460
345
|
|
461
|
-
|
462
346
|
</div>
|
463
347
|
|
464
|
-
|
465
348
|
<div id="method-i-preference_file_loaded-3F" class="method-detail ">
|
466
|
-
|
467
349
|
<div class="method-heading">
|
468
350
|
<span class="method-name">preference_file_loaded?</span><span
|
469
351
|
class="method-args">()</span>
|
470
|
-
|
471
352
|
<span class="method-click-advice">click to toggle source</span>
|
472
|
-
|
473
353
|
</div>
|
474
|
-
|
475
354
|
|
476
355
|
<div class="method-description">
|
477
|
-
|
478
356
|
<p>Has the preference file been loaded?</p>
|
479
357
|
|
480
358
|
<p>@return boolean</p>
|
481
|
-
|
482
|
-
|
483
359
|
|
484
|
-
|
485
360
|
<div class="method-source-code" id="preference_file_loaded-3F-source">
|
486
|
-
<pre><span class="ruby-comment"># File lib/standup_md/cli.rb, line
|
361
|
+
<pre><span class="ruby-comment"># File lib/standup_md/cli.rb, line 91</span>
|
487
362
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">preference_file_loaded?</span>
|
488
363
|
<span class="ruby-ivar">@preference_file_loaded</span>
|
489
364
|
<span class="ruby-keyword">end</span></pre>
|
490
365
|
</div>
|
491
|
-
|
492
366
|
</div>
|
493
367
|
|
494
|
-
|
495
368
|
|
496
|
-
|
497
369
|
</div>
|
498
370
|
|
499
|
-
|
500
371
|
<div id="method-i-write_file" class="method-detail ">
|
501
|
-
|
502
372
|
<div class="method-heading">
|
503
373
|
<span class="method-name">write_file</span><span
|
504
374
|
class="method-args">()</span>
|
505
|
-
|
506
375
|
<span class="method-click-advice">click to toggle source</span>
|
507
|
-
|
508
376
|
</div>
|
509
|
-
|
510
377
|
|
511
378
|
<div class="method-description">
|
512
|
-
|
513
379
|
<p>Writes entries to the file.</p>
|
514
380
|
|
515
381
|
<p>@return [Boolean] true if file was written</p>
|
516
|
-
|
517
|
-
|
518
382
|
|
519
|
-
|
520
383
|
<div class="method-source-code" id="write_file-source">
|
521
|
-
<pre><span class="ruby-comment"># File lib/standup_md/cli.rb, line
|
384
|
+
<pre><span class="ruby-comment"># File lib/standup_md/cli.rb, line 108</span>
|
522
385
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">write_file</span>
|
523
386
|
<span class="ruby-identifier">echo</span> <span class="ruby-node">"Writing file #{file.name}"</span>
|
524
387
|
<span class="ruby-identifier">file</span>.<span class="ruby-identifier">write</span>
|
525
388
|
<span class="ruby-keyword">end</span></pre>
|
526
389
|
</div>
|
527
|
-
|
528
390
|
</div>
|
529
391
|
|
530
|
-
|
531
392
|
|
532
|
-
|
533
393
|
</div>
|
534
394
|
|
535
|
-
|
536
395
|
</section>
|
537
|
-
|
538
|
-
</section>
|
539
396
|
|
397
|
+
</section>
|
540
398
|
</main>
|
541
399
|
|
542
400
|
|
543
401
|
<footer id="validator-badges" role="contentinfo">
|
544
402
|
<p><a href="https://validator.w3.org/check/referer">Validate</a>
|
545
|
-
<p>Generated by <a href="https://ruby.github.io/rdoc/">RDoc</a> 6.
|
403
|
+
<p>Generated by <a href="https://ruby.github.io/rdoc/">RDoc</a> 6.3.0.
|
546
404
|
<p>Based on <a href="http://deveiate.org/projects/Darkfish-RDoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
|
547
405
|
</footer>
|
548
406
|
|