inochi 4.0.1 → 5.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,21 @@
1
+ == SYNOPSIS
2
+
3
+ *#{package_name}* ['OPTIONS'] 'PARAM1' 'PARAM2' 'PARAM3' ...
4
+
5
+ === Command
6
+
7
+ // TODO: explain the usage and behavior of the above command here
8
+
9
+ === Options
10
+
11
+ // TODO: list command-line options and explain them here
12
+
13
+ *-h*, *--help*::
14
+ Display this manual and exit.
15
+
16
+ *-v*, *--version*::
17
+ Print version number and exit.
18
+
19
+ === Examples
20
+
21
+ // TODO: add examples of using the above command here
@@ -1,23 +1,11 @@
1
- %#----------------------------------------------------------------------------
2
- ## SYNOPSIS
3
- %#----------------------------------------------------------------------------
1
+ == USAGE
4
2
 
5
- `#{package_name}` [<OPTIONS>] <PARAM1> <PARAM2> <PARAM3> ...
3
+ Begin by loading the #{project_name} library into your program:
6
4
 
7
- %#----------------------------------------------------------------------------
8
- ## DESCRIPTION
9
- %#----------------------------------------------------------------------------
5
+ [source,ruby]
6
+ ------------------------------------------------------------------------------
7
+ require 'rubygems' # might not be necessary; see HACKING
8
+ require '#{package_name}'
9
+ ------------------------------------------------------------------------------
10
10
 
11
- > TODO: explain the usage and behavior of the above command here
12
-
13
- %#----------------------------------------------------------------------------
14
- ## OPTIONS
15
- %#----------------------------------------------------------------------------
16
-
17
- > TODO: list command-line options and explain them here
18
-
19
- * `-h`, `--help`:
20
- Display this manual and exit.
21
-
22
- * `-v`, `--version`:
23
- Print version number and exit.
11
+ // TODO: explain what things you can do with the library
@@ -3,16 +3,8 @@
3
3
  require '#{package_name}'
4
4
 
5
5
  if ARGV.delete('-h') or ARGV.delete('--help')
6
- # try to display UNIX version of help manual
7
- man_path = File.join(#{library_name}::INSTDIR, 'man')
8
- unless system 'man', '-M', man_path, '-a', '#{package_name}'
9
- # try to display HTML version of help manual
10
- man_html = man_path + '.html'
11
- unless %w[$BROWSER open start].any? {|b| system "\#{b} \#{man_html}" }
12
- # no luck; direct user to project website
13
- puts "See \#{#{library_name}::WEBSITE}"
14
- end
15
- end
6
+ system 'man', '-M', File.join(#{library_name}::INSTDIR, 'man'), '#{package_name}' or
7
+ warn "Could not display the help manual.\\nSee \#{#{library_name}::WEBSITE} instead."
16
8
  exit
17
9
  elsif ARGV.delete('-v') or ARGV.delete('--version')
18
10
  puts #{library_name}::VERSION
@@ -1,3 +1,11 @@
1
+ ##
2
+ # Attributes to pass to AsciiDoc when rendering the HTML manual page. See
3
+ # "Backend Attributes" in the AsciiDoc manual for a list of all attributes:
4
+ #
5
+ # http://www.methods.co.nz/asciidoc/chunked/aph.html
6
+ #
7
+ :man_asciidoc_attributes:
8
+
1
9
  ##
2
10
  # Location where `inochi pub:web` will upload files. This value
3
11
  # can use any local/remote/protocol syntax supported by rsync(1).
@@ -3,27 +3,27 @@ module #{library_name}
3
3
  ##
4
4
  # Official name of this project.
5
5
  #
6
- PROJECT = #{project_name.inspect}
6
+ PROJECT = '#{project_name}'
7
7
 
8
8
  ##
9
9
  # Short single-line description of this project.
10
10
  #
11
- TAGLINE = "TODO: the tagline of this project"
11
+ TAGLINE = 'TODO: the tagline of this project'
12
12
 
13
13
  ##
14
14
  # Address of this project's official home page.
15
15
  #
16
- WEBSITE = "http://#{package_name}.rubyforge.org"
16
+ WEBSITE = 'http://#{package_name}.rubyforge.org'
17
17
 
18
18
  ##
19
19
  # Number of this release of this project.
20
20
  #
21
- VERSION = #{project_version.inspect}
21
+ VERSION = '#{project_version}'
22
22
 
23
23
  ##
24
24
  # Date of this release of this project.
25
25
  #
26
- RELDATE = #{project_release.inspect}
26
+ RELDATE = '#{project_release}'
27
27
 
28
28
  ##
29
29
  # Description of this release of this project.
@@ -44,14 +44,14 @@ module #{library_name}
44
44
  #
45
45
  # RUNTIME = {
46
46
  # # this project needs exactly version 1.2.3 of the "an_example" gem
47
- # "an_example" => [ "1.2.3" ],
47
+ # 'an_example' => [ '1.2.3' ],
48
48
  #
49
49
  # # this project needs at least version 1.2 (but not
50
50
  # # version 1.2.4 or newer) of the "another_example" gem
51
- # "another_example" => [ ">= 1.2" , "< 1.2.4" ],
51
+ # 'another_example' => [ '>= 1.2' , '< 1.2.4' ],
52
52
  #
53
53
  # # this project needs any version of the "yet_another_example" gem
54
- # "yet_another_example" => [],
54
+ # 'yet_another_example' => [],
55
55
  # }
56
56
  #
57
57
  RUNTIME = {}
@@ -63,18 +63,18 @@ module #{library_name}
63
63
  #
64
64
  # DEVTIME = {
65
65
  # # this project needs exactly version 1.2.3 of the "an_example" gem
66
- # "an_example" => [ "1.2.3" ],
66
+ # 'an_example' => [ '1.2.3' ],
67
67
  #
68
68
  # # this project needs at least version 1.2 (but not
69
69
  # # version 1.2.4 or newer) of the "another_example" gem
70
- # "another_example" => [ ">= 1.2" , "< 1.2.4" ],
70
+ # 'another_example' => [ '>= 1.2' , '< 1.2.4' ],
71
71
  #
72
72
  # # this project needs any version of the "yet_another_example" gem
73
73
  # "yet_another_example" => [],
74
74
  # }
75
75
  #
76
76
  DEVTIME = {
77
- "inochi" => [ ">= #{Inochi::VERSION}", "< #{Inochi::VERSION.to_i.next}" ],
77
+ 'inochi' => [ '>= #{Inochi::VERSION}', '< #{Inochi::VERSION.to_i.next}' ],
78
78
  }
79
79
 
80
80
  # establish gem version dependencies
data/man/man1/inochi.1 ADDED
@@ -0,0 +1,2807 @@
1
+ '\" t
2
+ .\" Title: inochi
3
+ .\" Author: [see the "AUTHORS" section]
4
+ .\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
5
+ .\" Date: 08/07/2010
6
+ .\" Manual: \ \&
7
+ .\" Source: \ \& 5.0.0
8
+ .\" Language: English
9
+ .\"
10
+ .TH "INOCHI" "1" "08/07/2010" "\ \& 5\&.0\&.0" "\ \&"
11
+ .\" -----------------------------------------------------------------
12
+ .\" * set default formatting
13
+ .\" -----------------------------------------------------------------
14
+ .\" disable hyphenation
15
+ .nh
16
+ .\" disable justification (adjust text to left margin only)
17
+ .ad l
18
+ .\" -----------------------------------------------------------------
19
+ .\" * MAIN CONTENT STARTS HERE *
20
+ .\" -----------------------------------------------------------------
21
+ .SH "NAME"
22
+ inochi \- Gives life to Ruby projects
23
+ .SH "SYNOPSIS"
24
+ .sp
25
+ \fBinochi\fR [\fIOPTIONS\fR] [\fITASK\fR] [\fIRAKE_OPTIONS\fR]
26
+ .sp
27
+ \fBinochi init\fR project=\fIPROJECT\fR [package=\fIPACKAGE\fR] [merger=\fIMERGER\fR]
28
+ .SS "Command"
29
+ .sp
30
+ Runs the given \fITASK\fR while passing the given \fIRAKE_OPTIONS\fR to rake(1)\&. Otherwise, if \fITASK\fR is not given, displays a list of available tasks\&.
31
+ .SS "Options"
32
+ .PP
33
+ \fB\-h\fR, \fB\-\-help\fR
34
+ .RS 4
35
+ Display this manual and exit\&.
36
+ .RE
37
+ .PP
38
+ \fB\-v\fR, \fB\-\-version\fR
39
+ .RS 4
40
+ Print version number and exit\&.
41
+ .RE
42
+ .SS "Examples"
43
+ .sp
44
+ See list of available tasks:
45
+ .sp
46
+ .nf
47
+ inochi
48
+ .fi
49
+ .sp
50
+ Set up a project named "Foo Bar Baz 123":
51
+ .sp
52
+ .nf
53
+ inochi init project="Foo Bar Baz 123"
54
+ .fi
55
+ .sp
56
+ Set up a project that is named "Foo Bar Baz 123" but packaged as "fbb123":
57
+ .sp
58
+ .nf
59
+ inochi init project="Foo Bar Baz 123" package="fbb123"
60
+ .fi
61
+ .SH "DESCRIPTION"
62
+ .sp
63
+ Inochi is a software project infrastructure for the Ruby programming language\&. It helps you test, document, package, publish, and announce your projects while encouraging excellent documentation and reducing administrivia\&.
64
+ .SS "Features"
65
+ .sp
66
+ .RS 4
67
+ .ie n \{\
68
+ \h'-04'\(bu\h'+03'\c
69
+ .\}
70
+ .el \{\
71
+ .sp -1
72
+ .IP \(bu 2.3
73
+ .\}
74
+ Provides a comprehensive help manual that is written in
75
+ [eRuby]
76
+ over
77
+ [AsciiDoc]
78
+ and is rendered into a Web page and a UNIX manual page\&.
79
+ .RE
80
+ .sp
81
+ .RS 4
82
+ .ie n \{\
83
+ \h'-04'\(bu\h'+03'\c
84
+ .\}
85
+ .el \{\
86
+ .sp -1
87
+ .IP \(bu 2.3
88
+ .\}
89
+ Announces project releases on
90
+ [RAA],
91
+ [ruby-talk], and via RSS feed\&.
92
+ .RE
93
+ .sp
94
+ .RS 4
95
+ .ie n \{\
96
+ \h'-04'\(bu\h'+03'\c
97
+ .\}
98
+ .el \{\
99
+ .sp -1
100
+ .IP \(bu 2.3
101
+ .\}
102
+ Stores project information in a single Ruby source file\&.
103
+ .RE
104
+ .SS "Resources"
105
+ .PP
106
+ Project website
107
+ .RS 4
108
+
109
+ http://snk\&.tuxfamily\&.org/lib/inochi/
110
+ .RE
111
+ .PP
112
+ Announcements feed
113
+ .RS 4
114
+
115
+ http://snk\&.tuxfamily\&.org/lib/inochi/ann\&.xml
116
+ .RE
117
+ .PP
118
+ API documentation
119
+ .RS 4
120
+
121
+ http://snk\&.tuxfamily\&.org/lib/inochi/api/
122
+ .RE
123
+ .PP
124
+ Source code (browse online, download, or checkout)
125
+ .RS 4
126
+
127
+ http://github\&.com/sunaku/inochi
128
+ .RE
129
+ .PP
130
+ Issue tracker (report bugs, request features, get help)
131
+ .RS 4
132
+
133
+ http://github\&.com/sunaku/inochi/issues
134
+ .RE
135
+ .SH "INSTALL"
136
+ .SS "Prerequisites"
137
+ .sp
138
+ .RS 4
139
+ .ie n \{\
140
+ \h'-04'\(bu\h'+03'\c
141
+ .\}
142
+ .el \{\
143
+ .sp -1
144
+ .IP \(bu 2.3
145
+ .\}
146
+
147
+ [Ruby]
148
+ 1\&.8\&.6 or newer\&.
149
+ .RE
150
+ .sp
151
+ .RS 4
152
+ .ie n \{\
153
+ \h'-04'\(bu\h'+03'\c
154
+ .\}
155
+ .el \{\
156
+ .sp -1
157
+ .IP \(bu 2.3
158
+ .\}
159
+
160
+ [RubyGems]
161
+ 1\&.3\&.6 or newer\&.
162
+ .RE
163
+ .sp
164
+ .RS 4
165
+ .ie n \{\
166
+ \h'-04'\(bu\h'+03'\c
167
+ .\}
168
+ .el \{\
169
+ .sp -1
170
+ .IP \(bu 2.3
171
+ .\}
172
+
173
+ [AsciiDoc]
174
+ 8\&.5\&.3 or newer\&.
175
+ .RE
176
+ .sp
177
+ .RS 4
178
+ .ie n \{\
179
+ \h'-04'\(bu\h'+03'\c
180
+ .\}
181
+ .el \{\
182
+ .sp -1
183
+ .IP \(bu 2.3
184
+ .\}
185
+
186
+ [Lynx]
187
+ 2\&.8\&.6 or newer\&.
188
+ .RE
189
+ .SS "Installing"
190
+ .sp
191
+ .if n \{\
192
+ .RS 4
193
+ .\}
194
+ .nf
195
+ gem install inochi
196
+ .fi
197
+ .if n \{\
198
+ .RE
199
+ .\}
200
+ .SS "Upgrading"
201
+ .sp
202
+ .if n \{\
203
+ .RS 4
204
+ .\}
205
+ .nf
206
+ gem update inochi
207
+ .fi
208
+ .if n \{\
209
+ .RE
210
+ .\}
211
+ .SS "Removing"
212
+ .sp
213
+ .if n \{\
214
+ .RS 4
215
+ .\}
216
+ .nf
217
+ gem uninstall inochi
218
+ .fi
219
+ .if n \{\
220
+ .RE
221
+ .\}
222
+ .SH "USAGE"
223
+ .sp
224
+ This tutorial shows how to set up an Inochi project for a "WordCount" tool that counts the number of words in the text given to it\&.
225
+ .SS "Creating a new project"
226
+ .sp
227
+ Create a directory for the project:
228
+ .sp
229
+ .if n \{\
230
+ .RS 4
231
+ .\}
232
+ .nf
233
+ mkdir word_count
234
+ .fi
235
+ .if n \{\
236
+ .RE
237
+ .\}
238
+ .sp
239
+ Instill Inochi into the directory:
240
+ .sp
241
+ .if n \{\
242
+ .RS 4
243
+ .\}
244
+ .nf
245
+ cd word_count
246
+ inochi init project="WordCount"
247
+ .fi
248
+ .if n \{\
249
+ .RE
250
+ .\}
251
+ .sp
252
+ Review pending work marked as "TODO":
253
+ .sp
254
+ .if n \{\
255
+ .RS 4
256
+ .\}
257
+ .nf
258
+ grep TODO \-nR \&.
259
+ .fi
260
+ .if n \{\
261
+ .RE
262
+ .\}
263
+ .SS "Running the shell command"
264
+ .sp
265
+ Run the project\(cqs shell command:
266
+ .sp
267
+ .if n \{\
268
+ .RS 4
269
+ .\}
270
+ .nf
271
+ ruby \-Ilib bin/word_count
272
+ .fi
273
+ .if n \{\
274
+ .RE
275
+ .\}
276
+ .sp
277
+ View the project version number:
278
+ .sp
279
+ .if n \{\
280
+ .RS 4
281
+ .\}
282
+ .nf
283
+ ruby \-Ilib bin/word_count \-\-version
284
+ .fi
285
+ .if n \{\
286
+ .RE
287
+ .\}
288
+ .sp
289
+ View the project help manual:
290
+ .sp
291
+ .if n \{\
292
+ .RS 4
293
+ .\}
294
+ .nf
295
+ ruby \-Ilib bin/word_count \-\-help
296
+ .fi
297
+ .if n \{\
298
+ .RE
299
+ .\}
300
+ .SS "Building the help manual"
301
+ .sp
302
+ Build the help manual:
303
+ .sp
304
+ .if n \{\
305
+ .RS 4
306
+ .\}
307
+ .nf
308
+ inochi man
309
+ .fi
310
+ .if n \{\
311
+ .RE
312
+ .\}
313
+ .sp
314
+ View the help manual in a terminal:
315
+ .sp
316
+ .if n \{\
317
+ .RS 4
318
+ .\}
319
+ .nf
320
+ man \-l man/man1/word_count\&.1
321
+ .fi
322
+ .if n \{\
323
+ .RE
324
+ .\}
325
+ .sp
326
+ View the help manual in a Web browser:
327
+ .sp
328
+ .if n \{\
329
+ .RS 4
330
+ .\}
331
+ .nf
332
+ firefox man\&.html
333
+ .fi
334
+ .if n \{\
335
+ .RE
336
+ .\}
337
+ .SS "Implementing the library"
338
+ .sp
339
+ Append the following code to the test/word_count_test\&.rb file:
340
+ .sp
341
+ .if n \{\
342
+ .RS 4
343
+ .\}
344
+ .nf
345
+ class TestWordCount < Test::Unit::TestCase
346
+ def test_handles_empty_input
347
+ assert_equal(0, WordCount\&.count(nil))
348
+ assert_equal(0, WordCount\&.count(\'\'))
349
+ assert_equal(0, WordCount\&.count(\' \'))
350
+ end
351
+
352
+ def test_handles_single_words
353
+ assert_equal(1, WordCount\&.count(\'a\'))
354
+ assert_equal(1, WordCount\&.count(\'foo\'))
355
+ assert_equal(1, WordCount\&.count(\'bar\'))
356
+ end
357
+
358
+ def test_handles_multiple_words
359
+ assert_equal(2, WordCount\&.count(\'a b\'))
360
+ assert_equal(2, WordCount\&.count(\'a\-b\'))
361
+ assert_equal(2, WordCount\&.count(\'a/b\'))
362
+ end
363
+
364
+ def test_ignores_punctuation_and_space
365
+ assert_equal(0, WordCount\&.count(\'!\'))
366
+ assert_equal(0, WordCount\&.count(\'! @ # % #!@#\'))
367
+ assert_equal(0, WordCount\&.count(\' !\'))
368
+ assert_equal(0, WordCount\&.count(\'! \'))
369
+ assert_equal(0, WordCount\&.count(\' ! \'))
370
+ assert_equal(0, WordCount\&.count(\' ! \'))
371
+ end
372
+ end
373
+ .fi
374
+ .if n \{\
375
+ .RE
376
+ .\}
377
+ .sp
378
+ Run the test suite and observe that all tests fail:
379
+ .sp
380
+ .if n \{\
381
+ .RS 4
382
+ .\}
383
+ .nf
384
+ ruby test/runner
385
+ .fi
386
+ .if n \{\
387
+ .RE
388
+ .\}
389
+ .sp
390
+ Append the following code to the lib/word_count\&.rb file:
391
+ .sp
392
+ .if n \{\
393
+ .RS 4
394
+ .\}
395
+ .nf
396
+ module WordCount
397
+ # Returns the number of words in the given input\&.
398
+ def WordCount\&.count input
399
+ input\&.to_s\&.split(/\eW+/)\&.length
400
+ end
401
+ end
402
+ .fi
403
+ .if n \{\
404
+ .RE
405
+ .\}
406
+ .sp
407
+ Run the test suite again and observe that all tests pass:
408
+ .sp
409
+ .if n \{\
410
+ .RS 4
411
+ .\}
412
+ .nf
413
+ ruby test/runner
414
+ .fi
415
+ .if n \{\
416
+ .RE
417
+ .\}
418
+ .SS "Implementing the shell command"
419
+ .sp
420
+ Append the following code to the bin/word_count file:
421
+ .sp
422
+ .if n \{\
423
+ .RS 4
424
+ .\}
425
+ .nf
426
+ input = ARGF\&.read
427
+ total = WordCount\&.count(input)
428
+ puts "There are #{total} words in the input\&."
429
+ .fi
430
+ .if n \{\
431
+ .RE
432
+ .\}
433
+ .sp
434
+ Run the project\(cqs shell command on the README file:
435
+ .sp
436
+ .if n \{\
437
+ .RS 4
438
+ .\}
439
+ .nf
440
+ ruby \-Ilib bin/word_count README
441
+ .fi
442
+ .if n \{\
443
+ .RE
444
+ .\}
445
+ .SH "TASKS"
446
+ .sp
447
+ Inochi provides the following tasks\&. Some of these are explained below\&.
448
+ .TS
449
+ tab(:);
450
+ lt lt
451
+ lt lt
452
+ lt lt
453
+ lt lt
454
+ lt lt
455
+ lt lt
456
+ lt lt
457
+ lt lt
458
+ lt lt
459
+ lt lt
460
+ lt lt
461
+ lt lt
462
+ lt lt
463
+ lt lt
464
+ lt lt
465
+ lt lt.
466
+ T{
467
+ .sp
468
+ ann
469
+ T}:T{
470
+ .sp
471
+ Build all release announcements\&.
472
+ T}
473
+ T{
474
+ .sp
475
+ ann:feed
476
+ T}:T{
477
+ .sp
478
+ Build RSS feed announcement\&.
479
+ T}
480
+ T{
481
+ .sp
482
+ ann:html
483
+ T}:T{
484
+ .sp
485
+ Build HTML announcement\&.
486
+ T}
487
+ T{
488
+ .sp
489
+ ann:text
490
+ T}:T{
491
+ .sp
492
+ Build plain text announcement\&.
493
+ T}
494
+ T{
495
+ .sp
496
+ api
497
+ T}:T{
498
+ .sp
499
+ Build API documentation\&.
500
+ T}
501
+ T{
502
+ .sp
503
+ clean
504
+ T}:T{
505
+ .sp
506
+ Remove any temporary products\&.
507
+ T}
508
+ T{
509
+ .sp
510
+ clobber
511
+ T}:T{
512
+ .sp
513
+ Remove any generated file\&.
514
+ T}
515
+ T{
516
+ .sp
517
+ gem
518
+ T}:T{
519
+ .sp
520
+ Build release package for RubyGems\&.
521
+ T}
522
+ T{
523
+ .sp
524
+ init
525
+ T}:T{
526
+ .sp
527
+ Instill Inochi into current directory\&.
528
+ T}
529
+ T{
530
+ .sp
531
+ man
532
+ T}:T{
533
+ .sp
534
+ Build the help manual\&.
535
+ T}
536
+ T{
537
+ .sp
538
+ pub
539
+ T}:T{
540
+ .sp
541
+ Publish a release of this project\&.
542
+ T}
543
+ T{
544
+ .sp
545
+ pub:ann
546
+ T}:T{
547
+ .sp
548
+ Announce release on all news outlets\&.
549
+ T}
550
+ T{
551
+ .sp
552
+ pub:ann:raa
553
+ T}:T{
554
+ .sp
555
+ Announce release on RAA (Ruby Application Archive)\&.
556
+ T}
557
+ T{
558
+ .sp
559
+ pub:ann:ruby\-talk
560
+ T}:T{
561
+ .sp
562
+ Announce release on ruby\-talk mailing list\&.
563
+ T}
564
+ T{
565
+ .sp
566
+ pub:gem
567
+ T}:T{
568
+ .sp
569
+ Publish gem release package to RubyGems\&.org\&.
570
+ T}
571
+ T{
572
+ .sp
573
+ pub:web
574
+ T}:T{
575
+ .sp
576
+ Publish help manual, API docs, and RSS feed to project website\&.
577
+ T}
578
+ .TE
579
+ .sp 1
580
+ .SS "inochi init"
581
+ .sp
582
+ Installs the Inochi infrastructure for the project in the current working directory or upgrades a previous installation thereof\&.
583
+ .sp
584
+ .it 1 an-trap
585
+ .nr an-no-space-flag 1
586
+ .nr an-break-flag 1
587
+ .br
588
+ .ps +1
589
+ \fBSynopsis\fR
590
+ .RS 4
591
+ .sp
592
+ \fBinochi init\fR project=\fIPROJECT\fR [package=\fIPACKAGE\fR] [merger=\fIMERGER\fR]
593
+ .RE
594
+ .sp
595
+ .it 1 an-trap
596
+ .nr an-no-space-flag 1
597
+ .nr an-break-flag 1
598
+ .br
599
+ .ps +1
600
+ \fBParameters\fR
601
+ .RS 4
602
+ .PP
603
+ \fIPROJECT\fR
604
+ .RS 4
605
+ Name of the project\&. This will be normalized into the name of a Ruby module that will serve as a namespace for all code in the project\&.
606
+ .RE
607
+ .PP
608
+ \fIPACKAGE\fR
609
+ .RS 4
610
+ Name of the project\(cqs package directory, shell command, and basename of the project library file\&.
611
+ .RE
612
+ .PP
613
+ \fIMERGER\fR
614
+ .RS 4
615
+ Command that invokes a text merging tool with three arguments: (1) old file, (2) new file, (3) output file\&. The command should direct the result of merging the old file and the new file to the output file\&. In addition, the command
616
+ \fBmust not\fR
617
+ modify the old file or the new file\&.
618
+ .RE
619
+ .RE
620
+ .sp
621
+ .it 1 an-trap
622
+ .nr an-no-space-flag 1
623
+ .nr an-break-flag 1
624
+ .br
625
+ .ps +1
626
+ \fBDescription\fR
627
+ .RS 4
628
+ .sp
629
+ Pre\-existing files are not overwritten\&. Instead, it is your responsibility to merge changes between pre\-existing and newly generated files\&. You can do this with the aid of an automated text merging tool such as [meld], [tkdiff], or [kdiff3] by following these steps:
630
+ .sp
631
+ .RS 4
632
+ .ie n \{\
633
+ \h'-04' 1.\h'+01'\c
634
+ .\}
635
+ .el \{\
636
+ .sp -1
637
+ .IP " 1." 4.2
638
+ .\}
639
+ Create a file named
640
+ merge2
641
+ containing the following text:
642
+ .sp
643
+ .if n \{\
644
+ .RS 4
645
+ .\}
646
+ .nf
647
+ #!/bin/sh
648
+ old=$1; new=$2; out=$3;
649
+ # meld "$new" "$out" # use meld
650
+ # tkdiff "$old" "$new" \-o "$out" # use tkdiff
651
+ # kdiff3 \-\-merge "$old" "$new" \-\-output "$out" # use kdiff3
652
+ .fi
653
+ .if n \{\
654
+ .RE
655
+ .\}
656
+ .RE
657
+ .sp
658
+ .RS 4
659
+ .ie n \{\
660
+ \h'-04' 2.\h'+01'\c
661
+ .\}
662
+ .el \{\
663
+ .sp -1
664
+ .IP " 2." 4.2
665
+ .\}
666
+ Uncomment the line corresponding to the tool you wish to use\&.
667
+ .RE
668
+ .sp
669
+ .RS 4
670
+ .ie n \{\
671
+ \h'-04' 3.\h'+01'\c
672
+ .\}
673
+ .el \{\
674
+ .sp -1
675
+ .IP " 3." 4.2
676
+ .\}
677
+ Make the file executable:
678
+ .sp
679
+ .if n \{\
680
+ .RS 4
681
+ .\}
682
+ .nf
683
+ chmod +x merge2
684
+ .fi
685
+ .if n \{\
686
+ .RE
687
+ .\}
688
+ .RE
689
+ .sp
690
+ .RS 4
691
+ .ie n \{\
692
+ \h'-04' 4.\h'+01'\c
693
+ .\}
694
+ .el \{\
695
+ .sp -1
696
+ .IP " 4." 4.2
697
+ .\}
698
+ Pass the file\(cqs path as the value of
699
+ \fIMERGER\fR:
700
+ .sp
701
+ .if n \{\
702
+ .RS 4
703
+ .\}
704
+ .nf
705
+ inochi init merger=path/to/merge2
706
+ .fi
707
+ .if n \{\
708
+ .RE
709
+ .\}
710
+ .RE
711
+ .sp
712
+ Now your chosen text merging tool will be launched to help you transfer your changes\&. When you are finished, save the merged file and exit the merging tool\&. If you do not want to transfer any changes, then simply exit the merging tool \fBwithout saving\fR any changes to the merged file!
713
+ .RE
714
+ .SS "inochi api"
715
+ .sp
716
+ Builds API documentation for the project\(cqs Ruby library using [YARD]\&. Ruby constructs marked with @private are omitted from the API documentation\&.
717
+ .SS "inochi man"
718
+ .sp
719
+ Renders the help manual\(cqs source files into:
720
+ .PP
721
+ man\&.txt
722
+ .RS 4
723
+ Input for
724
+ [AsciiDoc], rendered by
725
+ [Ember]\&.
726
+ .RE
727
+ .PP
728
+ man\&.html
729
+ .RS 4
730
+ HTML web page, rendered by
731
+ [AsciiDoc]\&.
732
+ .RE
733
+ .PP
734
+ man/man1/\fIPACKAGE\fR\&.1
735
+ .RS 4
736
+ UNIX manual page, rendered by
737
+ [AsciiDoc]\&.
738
+ .RE
739
+ .SS "inochi gem"
740
+ .sp
741
+ Builds a \fBgem\fR, which is a release package in [RubyGems] format:
742
+ .PP
743
+ \fIPACKAGE\fR\-\fIVERSION\fR\&.gem
744
+ .RS 4
745
+ The gem itself\&.
746
+ .RE
747
+ .PP
748
+ \fIPACKAGE\fR\-\fIVERSION\fR\&.gemspec
749
+ .RS 4
750
+ Ruby representation of the gem\(cqs specification\&.
751
+ .RE
752
+ .sp
753
+ The gem specification is pre\-initialized with information from the project\(cqs Ruby library and help manual\&. In particular:
754
+ .PP
755
+ gem\&.description
756
+ .RS 4
757
+ Plain text version of all content between the "ABOUT" heading and any subsequent heading\&.
758
+ .RE
759
+ .PP
760
+ gem\&.authors
761
+ .RS 4
762
+ Plain text version of all content between the "AUTHORS" heading and any subsequent heading\&.
763
+ .RE
764
+ .PP
765
+ gem\&.files
766
+ .RS 4
767
+ Only contains the project\(cqs
768
+ LICENSE
769
+ and
770
+ CREDITS
771
+ files, rendered help manual, Ruby library, shell command, and C extension\&.
772
+ .sp
773
+ All other files (such as the test suite and help manual source files) are omitted (1) to reduce the gem file size and (2) because they are really only needed during development\&.
774
+ .RE
775
+ .sp
776
+ The gem specification can be further customized through the :gem_spec_logic parameter defined in the project\(cqs configuration file\&.
777
+ .SS "inochi ann"
778
+ .sp
779
+ Builds release announcements which can be edited by hand before publishing:
780
+ .PP
781
+ ann\&.html
782
+ .RS 4
783
+ Web page version of the release announcement\&.
784
+ .RE
785
+ .PP
786
+ ann\&.txt
787
+ .RS 4
788
+ Plain text version of the release announcement; converted from the Web page version by
789
+ [Lynx]\&.
790
+ .RE
791
+ .PP
792
+ ann\&.xml
793
+ .RS 4
794
+ RSS feed version of the release announcement\&.
795
+ .RE
796
+ .SS "inochi pub:ann:ruby\-talk"
797
+ .sp
798
+ Announces the release on the [ruby-talk] mailing list\&.
799
+ .sp
800
+ It is recommended that you build, review, and edit the ann\&.txt file \fIby hand\fR before running this command because (1) the body of that file is published directly as the announcement message and (2) HTML to plain text conversion is not perfect\&.
801
+ .SS "inochi pub:web"
802
+ .sp
803
+ Publishes the help manual, API documentation, and RSS feed to project website using rsync(1) according to the :pub_web_* parameters defined in the project\(cqs configuration file\&.
804
+ .SH "PROJECTS"
805
+ .sp
806
+ A project instilled with Inochi is composed of a configuration file, a license, source code, documentation, and a Web presence; which are all explained below\&.
807
+ .SS "Configuration file"
808
+ .sp
809
+ A project\(cqs configuration file is a [YAML] document named inochi\&.conf that defines the following optional parameters used by some Inochi tasks:
810
+ .PP
811
+ :man_asciidoc_attributes
812
+ .RS 4
813
+ Attributes to pass to AsciiDoc when rendering the HTML manual page\&. See
814
+ "Backend Attributes" in the AsciiDoc manual
815
+ for a list of all attributes\&.
816
+ .RE
817
+ .PP
818
+ :pub_web_target
819
+ .RS 4
820
+ Location where the
821
+ \fBinochi pub:web\fR
822
+ command will upload files\&. This value can use any local/remote/protocol syntax supported by rsync(1)\&.
823
+ .RE
824
+ .PP
825
+ :pub_web_options
826
+ .RS 4
827
+ Options for rsync(1), which uploads files for the
828
+ \fBinochi pub:web\fR
829
+ command\&.
830
+ .RE
831
+ .PP
832
+ :pub_web_extras
833
+ .RS 4
834
+ Additional files for the
835
+ \fBinochi pub:web\fR
836
+ command to upload\&. The values listed here can use any local/remote/protocol syntax supported by rsync(1)\&.
837
+ .sp
838
+ Example:
839
+ .sp
840
+ .if n \{\
841
+ .RS 4
842
+ .\}
843
+ .nf
844
+ :pub_web_extras:
845
+ \- some/file
846
+ \- some_user@some_host:some/path
847
+ .fi
848
+ .if n \{\
849
+ .RE
850
+ .\}
851
+ .RE
852
+ .PP
853
+ :gem_spec_logic
854
+ .RS 4
855
+ Ruby code that will configure this project\(cqs RubyGem before it is built by the
856
+ \fBinochi gem\fR
857
+ command\&. This code has access to a local variable named
858
+ \fIgem\fR
859
+ which holds a
860
+ Gem::Specification
861
+ object representing this project\&.
862
+ .sp
863
+ Example:
864
+ .sp
865
+ .if n \{\
866
+ .RS 4
867
+ .\}
868
+ .nf
869
+ :gem_spec_logic: |
870
+ # show the Inochi\-provided specification for this project\'s gem
871
+ puts gem\&.to_ruby
872
+
873
+ # add files that are outside this project directory to the gem
874
+ gem\&.files += [\'some\', \'files\', \'in\', \'this\', \'directory\']
875
+
876
+ # omit some added files in this project\'s directory from the gem
877
+ gem\&.files \-= [\'lib/top_secret\&.rb\', \'bin/more_top_secret_stuff\']
878
+
879
+ # and so on\&.\&.\&. anything is possible! use your imagination!
880
+ .fi
881
+ .if n \{\
882
+ .RE
883
+ .\}
884
+ .RE
885
+ .SS "License file"
886
+ .sp
887
+ A project\(cqs license defines the legal conditions under which the project is developed and distributed\&. It is stored in a file named LICENSE at the root of the project directory\&.
888
+ .SS "Ruby library"
889
+ .sp
890
+ A project\(cqs Ruby library is composed of the following files:
891
+ .PP
892
+ lib/\fIPACKAGE\fR\&.rb
893
+ .RS 4
894
+ Defines the project\(cqs namespace (Ruby module or class) and registers sub\-libraries to be automatically loaded on demand (Kernel#autoload)\&.
895
+ .RE
896
+ .PP
897
+ lib/\fIPACKAGE\fR/inochi\&.rb
898
+ .RS 4
899
+ Defines project information in Ruby constants within the project\(cqs namespace (Ruby module or class) and establishes version constraints for gems this project depends on if RubyGems is available in the user\(cqs environment\&. Unsatisfied constraints are simply printed to the standard error stream; they do not raise a
900
+ Gem::LoadError
901
+ exception\&.
902
+ .RE
903
+ .SS "Test suite"
904
+ .sp
905
+ A project\(cqs test suite is composed of the following files:
906
+ .PP
907
+ test/runner
908
+ .RS 4
909
+ Executable Ruby script that hides the details of running the test suite\&.
910
+ .RE
911
+ .PP
912
+ test/helper\&.rb
913
+ .RS 4
914
+ Ruby source file that prepares the testing environment by loading a testing library and defining common knowledge and utility logic shared by the actual tests\&.
915
+ .RE
916
+ .PP
917
+ test/**/*_test\&.rb
918
+ .RS 4
919
+ Ruby source files that perform the actual testing\&.
920
+ .RE
921
+ .SS "Shell command"
922
+ .sp
923
+ A project\(cqs shell command is an executable Ruby source file in the bin/ directory named \fIPACKAGE\fR\&. It expects that the project\(cqs lib/ directory is already present in Ruby\(cqs $LOAD_PATH (see [HACKING] below)\&. Thankfully, this expectation is automatically met when the project is installed via RubyGems\&.
924
+ .SS "Help manual"
925
+ .sp
926
+ A project\(cqs help manual is a monolithic [eRuby] template that is (1) processed by [Ember] with its shorthand notation, hierarchical unindentation, and missing <% end %> inference features enabled, and (2) composed of the following source files:
927
+ .PP
928
+ MANUAL
929
+ .RS 4
930
+ Primary source file of the help manual that (1) defines common knowledge and utility logic and (2) divides its content into the following files for easier editing and maintenance\&.
931
+ .RE
932
+ .PP
933
+ SYNOPSIS
934
+ .RS 4
935
+ Describes how the project\(cqs shell command can be invoked\&.
936
+ .RE
937
+ .PP
938
+ README
939
+ .RS 4
940
+ Introduces the project and its Web presence\&.
941
+ .RE
942
+ .PP
943
+ INSTALL
944
+ .RS 4
945
+ Instructions on installing, upgrading, and removing the project\&.
946
+ .RE
947
+ .PP
948
+ USAGE
949
+ .RS 4
950
+ Explains how to use the project in detail\&.
951
+ .RE
952
+ .PP
953
+ HACKING
954
+ .RS 4
955
+ Instructs fellow software developers on running, testing, and hacking the project\(cqs source code\&.
956
+ .RE
957
+ .PP
958
+ HISTORY
959
+ .RS 4
960
+ Records notes about current and past releases of the project in terms of incompatible changes, new features, bug fixes, and housekeeping activities\&.
961
+ .RE
962
+ .PP
963
+ CREDITS
964
+ .RS 4
965
+ Attributes all developers and contributors whose efforts have made the project what it is today\&.
966
+ .RE
967
+ .PP
968
+ BEYOND
969
+ .RS 4
970
+ Refers to related commands, help manuals, and topics beyond this project\&.
971
+ .RE
972
+ .SS "Web presence"
973
+ .sp
974
+ A project\(cqs a Web presence is composed, at minimum, of the following:
975
+ .PP
976
+ Project website
977
+ .RS 4
978
+ Where the help manual, API documentation, and RSS feed can be accessed (hopefully) permanently\&.
979
+ .RE
980
+ .PP
981
+ Code repository
982
+ .RS 4
983
+ Where fellow software developers can obtain the latest source code\&.
984
+ .RE
985
+ .PP
986
+ Issue tracker
987
+ .RS 4
988
+ Where users can contribute patches, request features, and get help\&.
989
+ .RE
990
+ .sp
991
+ You may choose to omit some or all of these components by simply not mentioning them in the "Resources" section of the help manual\(cqs README source file\&.
992
+ .SH "HACKING"
993
+ .SS "Prerequisites"
994
+ .sp
995
+ Install Ruby libraries necessary for development:
996
+ .sp
997
+ .if n \{\
998
+ .RS 4
999
+ .\}
1000
+ .nf
1001
+ gem install inochi \-\-development
1002
+ .fi
1003
+ .if n \{\
1004
+ .RE
1005
+ .\}
1006
+ .SS "Infrastructure"
1007
+ .sp
1008
+ [Inochi] serves as the project infrastructure for Inochi\&. It handles tasks such as building this help manual and API documentation, and packaging, announcing, and publishing new releases\&. See its help manual and list of tasks to get started:
1009
+ .sp
1010
+ .if n \{\
1011
+ .RS 4
1012
+ .\}
1013
+ .nf
1014
+ inochi \-\-help # display help manual
1015
+ inochi \-\-tasks # list available tasks
1016
+ .fi
1017
+ .if n \{\
1018
+ .RE
1019
+ .\}
1020
+ .SS "$LOAD_PATH setup"
1021
+ .sp
1022
+ Ensure that the lib/ directory is listed in Ruby\(cqs $LOAD_PATH before you use any libraries therein or run any executables in the bin/ directory\&.
1023
+ .sp
1024
+ This can be achieved by passing an option to Ruby:
1025
+ .sp
1026
+ .if n \{\
1027
+ .RS 4
1028
+ .\}
1029
+ .nf
1030
+ ruby \-Ilib bin/inochi
1031
+ irb \-Ilib \-r inochi
1032
+ .fi
1033
+ .if n \{\
1034
+ .RE
1035
+ .\}
1036
+ .sp
1037
+ Or by setting the $RUBYLIB environment variable:
1038
+ .sp
1039
+ .if n \{\
1040
+ .RS 4
1041
+ .\}
1042
+ .nf
1043
+ export RUBYLIB=lib # bash, ksh, zsh
1044
+ setenv RUBYLIB lib # csh
1045
+ set \-x RUBYLIB lib # fish
1046
+
1047
+ ruby bin/inochi
1048
+ irb \-r inochi
1049
+ .fi
1050
+ .if n \{\
1051
+ .RE
1052
+ .\}
1053
+ .sp
1054
+ Or by running Ruby through the ruby\-wrapper tool\&.
1055
+ .SS "RubyGems setup"
1056
+ .sp
1057
+ If you use Ruby 1\&.8 or older, then ensure that RubyGems is activated before you use any libraries in the lib/ directory or run any executables in the bin/ directory\&.
1058
+ .sp
1059
+ This can be achieved by passing an option to Ruby:
1060
+ .sp
1061
+ .if n \{\
1062
+ .RS 4
1063
+ .\}
1064
+ .nf
1065
+ ruby \-rubygems bin/inochi
1066
+ irb \-rubygems \-r inochi
1067
+ .fi
1068
+ .if n \{\
1069
+ .RE
1070
+ .\}
1071
+ .sp
1072
+ Or by setting the $RUBYOPT environment variable:
1073
+ .sp
1074
+ .if n \{\
1075
+ .RS 4
1076
+ .\}
1077
+ .nf
1078
+ export RUBYOPT=\-rubygems # bash, ksh, zsh
1079
+ setenv RUBYOPT \-rubygems # csh
1080
+ set \-x RUBYOPT \-rubygems # fish
1081
+ .fi
1082
+ .if n \{\
1083
+ .RE
1084
+ .\}
1085
+ .SS "Running tests"
1086
+ .sp
1087
+ Simply execute the included test runner, which sets up Ruby\(cqs $LOAD_PATH for testing, loads the test/helper\&.rb file, and then evaluates all test/**/*_test\&.rb files:
1088
+ .sp
1089
+ .if n \{\
1090
+ .RS 4
1091
+ .\}
1092
+ .nf
1093
+ ruby test/runner
1094
+ .fi
1095
+ .if n \{\
1096
+ .RE
1097
+ .\}
1098
+ .sp
1099
+ Its exit status will indicate whether all tests have passed\&. It may also print additional pass/fail information depending on the testing library used in the test/helper\&.rb file\&.
1100
+ .SS "Contributing"
1101
+ .sp
1102
+ Fork this project on GitHub and send a pull request\&.
1103
+ .SH "HISTORY"
1104
+ .SS "Version 5\&.0\&.0 (2010\-08\-07)"
1105
+ .sp
1106
+ This release switches from [Ronn] to [AsciiDoc] for writing the help manual, reduces the file size of generated gem packages, and fixes some bugs\&.
1107
+ .PP
1108
+ \fBIncompatible changes\fR
1109
+ .sp
1110
+ .RS 4
1111
+ .ie n \{\
1112
+ \h'-04'\(bu\h'+03'\c
1113
+ .\}
1114
+ .el \{\
1115
+ .sp -1
1116
+ .IP \(bu 2.3
1117
+ .\}
1118
+ Use
1119
+ [AsciiDoc]
1120
+ instead of
1121
+ [Ronn]
1122
+ to render the help manual\&.
1123
+ .RE
1124
+ .sp
1125
+ .RS 4
1126
+ .ie n \{\
1127
+ \h'-04'\(bu\h'+03'\c
1128
+ .\}
1129
+ .el \{\
1130
+ .sp -1
1131
+ .IP \(bu 2.3
1132
+ .\}
1133
+ Rename the
1134
+ inochi\&.opts
1135
+ file to
1136
+ inochi\&.conf\&.
1137
+ .RE
1138
+ .sp
1139
+ .RS 4
1140
+ .ie n \{\
1141
+ \h'-04'\(bu\h'+03'\c
1142
+ .\}
1143
+ .el \{\
1144
+ .sp -1
1145
+ .IP \(bu 2.3
1146
+ .\}
1147
+ Do not include HTML manual in gem package\&. This reduces the gem file size and makes the project website the only official place to obtain the HTML manual\&.
1148
+ .RE
1149
+ .PP
1150
+ \fBBug fixes\fR
1151
+ .sp
1152
+ .RS 4
1153
+ .ie n \{\
1154
+ \h'-04'\(bu\h'+03'\c
1155
+ .\}
1156
+ .el \{\
1157
+ .sp -1
1158
+ .IP \(bu 2.3
1159
+ .\}
1160
+ Always load project info before non\-init tasks\&.
1161
+ .RE
1162
+ .sp
1163
+ .RS 4
1164
+ .ie n \{\
1165
+ \h'-04'\(bu\h'+03'\c
1166
+ .\}
1167
+ .el \{\
1168
+ .sp -1
1169
+ .IP \(bu 2.3
1170
+ .\}
1171
+ Another Ruby 1\&.9\&.2\-rc2 fix for Nokogiri usage\&.
1172
+ .RE
1173
+ .sp
1174
+ Housekeeping
1175
+ .sp
1176
+ .RS 4
1177
+ .ie n \{\
1178
+ \h'-04'\(bu\h'+03'\c
1179
+ .\}
1180
+ .el \{\
1181
+ .sp -1
1182
+ .IP \(bu 2.3
1183
+ .\}
1184
+ Use single quotes for string values in
1185
+ inochi\&.rb
1186
+ template\&.
1187
+ .RE
1188
+ .sp
1189
+ .RS 4
1190
+ .ie n \{\
1191
+ \h'-04'\(bu\h'+03'\c
1192
+ .\}
1193
+ .el \{\
1194
+ .sp -1
1195
+ .IP \(bu 2.3
1196
+ .\}
1197
+ fetch_nodes_between(): report errors and refactor\&.
1198
+ .RE
1199
+ .SS "Version 4\&.0\&.1 (2010\-07\-28)"
1200
+ .sp
1201
+ This release fixes a bug in gem version dependency establishment\&.
1202
+ .PP
1203
+ \fBBug fixes\fR
1204
+ .sp
1205
+ .RS 4
1206
+ .ie n \{\
1207
+ \h'-04'\(bu\h'+03'\c
1208
+ .\}
1209
+ .el \{\
1210
+ .sp -1
1211
+ .IP \(bu 2.3
1212
+ .\}
1213
+ Gem version dependencies were not being established in Ruby 1\&.8\&.7 and 1\&.9\&.2 because
1214
+ Kernel#gem
1215
+ is a private method
1216
+ in those Ruby versions\&.
1217
+ .sp
1218
+ To propagate this fix into your projects, please reinitialize them with this version of Inochi\&.
1219
+ .RE
1220
+ .SS "Version 4\&.0\&.0 (2010\-07\-25)"
1221
+ .PP
1222
+ \fBIncompatible changes\fR
1223
+ .sp
1224
+ .RS 4
1225
+ .ie n \{\
1226
+ \h'-04'\(bu\h'+03'\c
1227
+ .\}
1228
+ .el \{\
1229
+ .sp -1
1230
+ .IP \(bu 2.3
1231
+ .\}
1232
+ Rename the "VERSIONS" section in the
1233
+ HISTORY
1234
+ file to "HISTORY"\&.
1235
+ .RE
1236
+ .PP
1237
+ \fBChanges you will see in upgraded or newly generated projects\fR
1238
+ .sp
1239
+ .RS 4
1240
+ .ie n \{\
1241
+ \h'-04'\(bu\h'+03'\c
1242
+ .\}
1243
+ .el \{\
1244
+ .sp -1
1245
+ .IP \(bu 2.3
1246
+ .\}
1247
+ Rename the
1248
+ FURTHER
1249
+ file to
1250
+ BEYOND\&.
1251
+ .RE
1252
+ .sp
1253
+ .RS 4
1254
+ .ie n \{\
1255
+ \h'-04'\(bu\h'+03'\c
1256
+ .\}
1257
+ .el \{\
1258
+ .sp -1
1259
+ .IP \(bu 2.3
1260
+ .\}
1261
+ Rename
1262
+ test/test_helper\&.rb
1263
+ to just
1264
+ test/helper\&.rb\&.
1265
+ .RE
1266
+ .sp
1267
+ .RS 4
1268
+ .ie n \{\
1269
+ \h'-04'\(bu\h'+03'\c
1270
+ .\}
1271
+ .el \{\
1272
+ .sp -1
1273
+ .IP \(bu 2.3
1274
+ .\}
1275
+ Store resource URLs in variables in
1276
+ MANUAL
1277
+ file for reuse\&.
1278
+ .RE
1279
+ .sp
1280
+ .RS 4
1281
+ .ie n \{\
1282
+ \h'-04'\(bu\h'+03'\c
1283
+ .\}
1284
+ .el \{\
1285
+ .sp -1
1286
+ .IP \(bu 2.3
1287
+ .\}
1288
+ Provide more precise link to ruby\-wrapper tool in
1289
+ HACKING
1290
+ file\&.
1291
+ .RE
1292
+ .PP
1293
+ \fBNew features\fR
1294
+ .sp
1295
+ .RS 4
1296
+ .ie n \{\
1297
+ \h'-04'\(bu\h'+03'\c
1298
+ .\}
1299
+ .el \{\
1300
+ .sp -1
1301
+ .IP \(bu 2.3
1302
+ .\}
1303
+ Ensure that project version matches release notes before building a gem\&. This helps to prevent the problem where you sometimes forget to update both the release notes and the project information file simultaneously\&.
1304
+ .RE
1305
+ .sp
1306
+ .RS 4
1307
+ .ie n \{\
1308
+ \h'-04'\(bu\h'+03'\c
1309
+ .\}
1310
+ .el \{\
1311
+ .sp -1
1312
+ .IP \(bu 2.3
1313
+ .\}
1314
+ Display announcement message to user (and make them confirm it) before publishing to ruby\-talk\&. This helps to prevent you from appearing inept and having to apologize later for your publishing blunders\&.
1315
+ .RE
1316
+ .sp
1317
+ .RS 4
1318
+ .ie n \{\
1319
+ \h'-04'\(bu\h'+03'\c
1320
+ .\}
1321
+ .el \{\
1322
+ .sp -1
1323
+ .IP \(bu 2.3
1324
+ .\}
1325
+ Add
1326
+ \-d
1327
+ (to enable
1328
+ $DEBUG) and
1329
+ \-v
1330
+ (to enable
1331
+ $VERBOSE) command\-line options to the generated
1332
+ test/runner
1333
+ script\&.
1334
+ .RE
1335
+ .PP
1336
+ \fBBug fixes\fR
1337
+ .sp
1338
+ .RS 4
1339
+ .ie n \{\
1340
+ \h'-04'\(bu\h'+03'\c
1341
+ .\}
1342
+ .el \{\
1343
+ .sp -1
1344
+ .IP \(bu 2.3
1345
+ .\}
1346
+ Various compatibility fixes for Ruby 1\&.9\&.2\-rc2\&.
1347
+ .RE
1348
+ .sp
1349
+ .RS 4
1350
+ .ie n \{\
1351
+ \h'-04'\(bu\h'+03'\c
1352
+ .\}
1353
+ .el \{\
1354
+ .sp -1
1355
+ .IP \(bu 2.3
1356
+ .\}
1357
+ Prefix
1358
+ test/runner
1359
+ command with "ruby" for Windows users\&.
1360
+ .RE
1361
+ .sp
1362
+ .RS 4
1363
+ .ie n \{\
1364
+ \h'-04'\(bu\h'+03'\c
1365
+ .\}
1366
+ .el \{\
1367
+ .sp -1
1368
+ .IP \(bu 2.3
1369
+ .\}
1370
+
1371
+ Ember::WEBSITE
1372
+ was always being emitted in
1373
+ README
1374
+ file\&.
1375
+ .RE
1376
+ .PP
1377
+ \fBHousekeeping\fR
1378
+ .sp
1379
+ .RS 4
1380
+ .ie n \{\
1381
+ \h'-04'\(bu\h'+03'\c
1382
+ .\}
1383
+ .el \{\
1384
+ .sp -1
1385
+ .IP \(bu 2.3
1386
+ .\}
1387
+ Add version constraints for YARD and Mechanize dependencies\&.
1388
+ .RE
1389
+ .sp
1390
+ .RS 4
1391
+ .ie n \{\
1392
+ \h'-04'\(bu\h'+03'\c
1393
+ .\}
1394
+ .el \{\
1395
+ .sp -1
1396
+ .IP \(bu 2.3
1397
+ .\}
1398
+ Upgrade from Dfect 1\&.1\&.0 to Detest 3\&.1\&.0 for unit testing\&.
1399
+ .RE
1400
+ .sp
1401
+ .RS 4
1402
+ .ie n \{\
1403
+ \h'-04'\(bu\h'+03'\c
1404
+ .\}
1405
+ .el \{\
1406
+ .sp -1
1407
+ .IP \(bu 2.3
1408
+ .\}
1409
+ Upgrade to Ronn 0\&.7\&.0 for generating this user manual\&.
1410
+ .RE
1411
+ .SS "Version 3\&.0\&.0 (2010\-04\-27)"
1412
+ .PP
1413
+ \fBIncompatible changes\fR
1414
+ .sp
1415
+ .RS 4
1416
+ .ie n \{\
1417
+ \h'-04'\(bu\h'+03'\c
1418
+ .\}
1419
+ .el \{\
1420
+ .sp -1
1421
+ .IP \(bu 2.3
1422
+ .\}
1423
+ The
1424
+ require()
1425
+ class method is no longer emitted on your project\(cqs namespace\&. Instead, gem version constraints are established up front when your project\(cqs Ruby library is first loaded\&.
1426
+ .RE
1427
+ .sp
1428
+ .RS 4
1429
+ .ie n \{\
1430
+ \h'-04'\(bu\h'+03'\c
1431
+ .\}
1432
+ .el \{\
1433
+ .sp -1
1434
+ .IP \(bu 2.3
1435
+ .\}
1436
+ Author names are now fetched from the "AUTHORS" section, not "CREDITS"\&.
1437
+ .RE
1438
+ .sp
1439
+ .RS 4
1440
+ .ie n \{\
1441
+ \h'-04'\(bu\h'+03'\c
1442
+ .\}
1443
+ .el \{\
1444
+ .sp -1
1445
+ .IP \(bu 2.3
1446
+ .\}
1447
+ Project information is now placed in the "NAME" section, not "ABOUT"\&.
1448
+ .RE
1449
+ .PP
1450
+ \fBBug fixes\fR
1451
+ .sp
1452
+ .RS 4
1453
+ .ie n \{\
1454
+ \h'-04'\(bu\h'+03'\c
1455
+ .\}
1456
+ .el \{\
1457
+ .sp -1
1458
+ .IP \(bu 2.3
1459
+ .\}
1460
+ Reflect current Inochi version in gem constraint\&.
1461
+ .RE
1462
+ .sp
1463
+ .RS 4
1464
+ .ie n \{\
1465
+ \h'-04'\(bu\h'+03'\c
1466
+ .\}
1467
+ .el \{\
1468
+ .sp -1
1469
+ .IP \(bu 2.3
1470
+ .\}
1471
+ Forgot to list
1472
+ [Ember]
1473
+ as a runtime gem dependency\&.
1474
+ .RE
1475
+ .PP
1476
+ \fBHousekeeping\fR
1477
+ .sp
1478
+ .RS 4
1479
+ .ie n \{\
1480
+ \h'-04'\(bu\h'+03'\c
1481
+ .\}
1482
+ .el \{\
1483
+ .sp -1
1484
+ .IP \(bu 2.3
1485
+ .\}
1486
+ Move all task documentation into new "TASKS" section\&.
1487
+ .RE
1488
+ .sp
1489
+ .RS 4
1490
+ .ie n \{\
1491
+ \h'-04'\(bu\h'+03'\c
1492
+ .\}
1493
+ .el \{\
1494
+ .sp -1
1495
+ .IP \(bu 2.3
1496
+ .\}
1497
+ Move TASKS & PROJECTS information into separate files\&.
1498
+ .RE
1499
+ .SS "Version 2\&.0\&.1 (2010\-04\-25)"
1500
+ .sp
1501
+ This release fixes some bugs and adds a simple tutorial to the help manual\&.
1502
+ .PP
1503
+ \fBBug fixes\fR
1504
+ .sp
1505
+ .RS 4
1506
+ .ie n \{\
1507
+ \h'-04'\(bu\h'+03'\c
1508
+ .\}
1509
+ .el \{\
1510
+ .sp -1
1511
+ .IP \(bu 2.3
1512
+ .\}
1513
+ Task files were not loaded in correct order\&. As a result, certain Inochi tasks would fail (depending on the sorting order of your filesystem) with the following cryptic error:
1514
+ .sp
1515
+ .if n \{\
1516
+ .RS 4
1517
+ .\}
1518
+ .nf
1519
+ inochi aborted!
1520
+ Don\'t know how to build task \'\'
1521
+ /usr/lib/ruby/gems/1\&.9\&.1/gems/rake\-0\&.8\&.7/lib/rake\&.rb:1728:in `[]\'
1522
+ (See full trace by running task with \-\-trace)
1523
+ .fi
1524
+ .if n \{\
1525
+ .RE
1526
+ .\}
1527
+ .RE
1528
+ .sp
1529
+ .RS 4
1530
+ .ie n \{\
1531
+ \h'-04'\(bu\h'+03'\c
1532
+ .\}
1533
+ .el \{\
1534
+ .sp -1
1535
+ .IP \(bu 2.3
1536
+ .\}
1537
+
1538
+ LICENSE
1539
+ file template lacked a "TODO" marker\&.
1540
+ .RE
1541
+ .sp
1542
+ .RS 4
1543
+ .ie n \{\
1544
+ \h'-04'\(bu\h'+03'\c
1545
+ .\}
1546
+ .el \{\
1547
+ .sp -1
1548
+ .IP \(bu 2.3
1549
+ .\}
1550
+ Forgot version number heading in announcement\&.
1551
+ .RE
1552
+ .PP
1553
+ \fBHousekeeping\fR
1554
+ .sp
1555
+ .RS 4
1556
+ .ie n \{\
1557
+ \h'-04'\(bu\h'+03'\c
1558
+ .\}
1559
+ .el \{\
1560
+ .sp -1
1561
+ .IP \(bu 2.3
1562
+ .\}
1563
+ Restored the simple WordCount tutorial from version 1\&.1\&.1\&.
1564
+ .RE
1565
+ .SS "Version 2\&.0\&.0 (2010\-04\-24)"
1566
+ .sp
1567
+ This release makes Inochi a development\-time dependency only, documents nearly everything in the help manual, renders the help manual as a UNIX manual page, simplifies the project infrastructure it provides, and removes needless cruft\&.
1568
+ .PP
1569
+ \fBIncompatible changes\fR
1570
+ .sp
1571
+ .RS 4
1572
+ .ie n \{\
1573
+ \h'-04'\(bu\h'+03'\c
1574
+ .\}
1575
+ .el \{\
1576
+ .sp -1
1577
+ .IP \(bu 2.3
1578
+ .\}
1579
+ Inochi is no longer a runtime dependency (gem or otherwise) for projects that use it\&. It also no longer runs tests, creates project namespaces, or provides libraries for internationalization, combinatorics, command\-line parsing, utility logic, or Rakefiles\&.
1580
+ .sp
1581
+ See
1582
+ [PROJECTS]
1583
+ to learn about the new Inochi infrastructure\&.
1584
+ .RE
1585
+ .sp
1586
+ .RS 4
1587
+ .ie n \{\
1588
+ \h'-04'\(bu\h'+03'\c
1589
+ .\}
1590
+ .el \{\
1591
+ .sp -1
1592
+ .IP \(bu 2.3
1593
+ .\}
1594
+ The help manual is now processed by
1595
+ [Ronn]
1596
+ instead of
1597
+ [ERBook]\&. As a result, you may only use plain
1598
+ [Markdown]
1599
+ and
1600
+ [eRuby]
1601
+ when writing it\&.
1602
+ .RE
1603
+ .sp
1604
+ .RS 4
1605
+ .ie n \{\
1606
+ \h'-04'\(bu\h'+03'\c
1607
+ .\}
1608
+ .el \{\
1609
+ .sp -1
1610
+ .IP \(bu 2.3
1611
+ .\}
1612
+ Announcement publishing tasks no longer read login information from the
1613
+ ~/\&.config/inochi/logins\&.yaml
1614
+ file and prompt you to enter that information manually instead\&. As a result, the forementioned file is no longer recognized or used by Inochi so you may safely delete it\&.
1615
+ .RE
1616
+ .PP
1617
+ \fBNew features\fR
1618
+ .sp
1619
+ .RS 4
1620
+ .ie n \{\
1621
+ \h'-04'\(bu\h'+03'\c
1622
+ .\}
1623
+ .el \{\
1624
+ .sp -1
1625
+ .IP \(bu 2.3
1626
+ .\}
1627
+ The help manual is now available as a UNIX manual page (thanks to
1628
+ [Ronn]) and is now divided into smaller files that can be read directly without needing a special viewer, and are named according to open\-source packaging conventions (such as README, HACKING, and LICENSE) so that they draw the attention of users unaccustomed to the organization of your project\&.
1629
+ .RE
1630
+ .sp
1631
+ .RS 4
1632
+ .ie n \{\
1633
+ \h'-04'\(bu\h'+03'\c
1634
+ .\}
1635
+ .el \{\
1636
+ .sp -1
1637
+ .IP \(bu 2.3
1638
+ .\}
1639
+ A
1640
+ require
1641
+ class method is now added to the project\(cqs namespace\&. This method verifies that the library or gem being required meets the dependency version constraints defined by the project\&.
1642
+ .RE
1643
+ .sp
1644
+ .RS 4
1645
+ .ie n \{\
1646
+ \h'-04'\(bu\h'+03'\c
1647
+ .\}
1648
+ .el \{\
1649
+ .sp -1
1650
+ .IP \(bu 2.3
1651
+ .\}
1652
+ A
1653
+ test/runner
1654
+ script is now generated\&. It provides a fast, self\-contained way to run your project\(cqs test suite\&.
1655
+ .RE
1656
+ .sp
1657
+ .RS 4
1658
+ .ie n \{\
1659
+ \h'-04'\(bu\h'+03'\c
1660
+ .\}
1661
+ .el \{\
1662
+ .sp -1
1663
+ .IP \(bu 2.3
1664
+ .\}
1665
+ Inochi is now a Rake application\&. A
1666
+ Rakefile
1667
+ is not necessary\&.
1668
+ .RE
1669
+ .PP
1670
+ \fBHousekeeping\fR
1671
+ .sp
1672
+ .RS 4
1673
+ .ie n \{\
1674
+ \h'-04'\(bu\h'+03'\c
1675
+ .\}
1676
+ .el \{\
1677
+ .sp -1
1678
+ .IP \(bu 2.3
1679
+ .\}
1680
+ Many KISS and YAGNI fueled iterations later, this is it! :\-)
1681
+ .RE
1682
+ .sp
1683
+ .RS 4
1684
+ .ie n \{\
1685
+ \h'-04'\(bu\h'+03'\c
1686
+ .\}
1687
+ .el \{\
1688
+ .sp -1
1689
+ .IP \(bu 2.3
1690
+ .\}
1691
+ Nearly every aspect of Inochi is now meticulously documented in the help manual to the best of my ability\&. If I missed something important, please notify me or contribute the correction yourself!
1692
+ .RE
1693
+ .SS "Version 1\&.1\&.1 (2009\-10\-03)"
1694
+ .sp
1695
+ This release improves Ruby 1\&.9 support and upgrades gem dependencies\&.
1696
+ .PP
1697
+ \fBBug fixes\fR
1698
+ .sp
1699
+ .RS 4
1700
+ .ie n \{\
1701
+ \h'-04'\(bu\h'+03'\c
1702
+ .\}
1703
+ .el \{\
1704
+ .sp -1
1705
+ .IP \(bu 2.3
1706
+ .\}
1707
+
1708
+ require()
1709
+ was unable to find project library in Ruby 1\&.9\&.2dev\&.
1710
+ .RE
1711
+ .sp
1712
+ .RS 4
1713
+ .ie n \{\
1714
+ \h'-04'\(bu\h'+03'\c
1715
+ .\}
1716
+ .el \{\
1717
+ .sp -1
1718
+ .IP \(bu 2.3
1719
+ .\}
1720
+ Ruby 1\&.9 warning about "shadowing outer variable"\&.
1721
+ .RE
1722
+ .sp
1723
+ .RS 4
1724
+ .ie n \{\
1725
+ \h'-04'\(bu\h'+03'\c
1726
+ .\}
1727
+ .el \{\
1728
+ .sp -1
1729
+ .IP \(bu 2.3
1730
+ .\}
1731
+ Ruby 1\&.9 error about "incompatible encoding regexp match"\&.
1732
+ .RE
1733
+ .PP
1734
+ \fBHousekeeping\fR
1735
+ .sp
1736
+ .RS 4
1737
+ .ie n \{\
1738
+ \h'-04'\(bu\h'+03'\c
1739
+ .\}
1740
+ .el \{\
1741
+ .sp -1
1742
+ .IP \(bu 2.3
1743
+ .\}
1744
+ The "spicycode\-rcov" project was officially renamed to "relevance\-rcov"\&.
1745
+ .RE
1746
+ .sp
1747
+ .RS 4
1748
+ .ie n \{\
1749
+ \h'-04'\(bu\h'+03'\c
1750
+ .\}
1751
+ .el \{\
1752
+ .sp -1
1753
+ .IP \(bu 2.3
1754
+ .\}
1755
+ Upgrade to RubyForge 2\&.x library for publishing gems\&.
1756
+ .RE
1757
+ .SS "Version 1\&.1\&.0 (2009\-09\-06)"
1758
+ .sp
1759
+ This release improves the user manual and scaffold generator output, injects more metadata into gems, adds support for Microsoft web browsers, and fixes some bugs\&.
1760
+ .PP
1761
+ \fBNew features\fR
1762
+ .sp
1763
+ .RS 4
1764
+ .ie n \{\
1765
+ \h'-04'\(bu\h'+03'\c
1766
+ .\}
1767
+ .el \{\
1768
+ .sp -1
1769
+ .IP \(bu 2.3
1770
+ .\}
1771
+ Add instructions for building gems without Inochi as a runtime dependency\&.
1772
+ .RE
1773
+ .sp
1774
+ .RS 4
1775
+ .ie n \{\
1776
+ \h'-04'\(bu\h'+03'\c
1777
+ .\}
1778
+ .el \{\
1779
+ .sp -1
1780
+ .IP \(bu 2.3
1781
+ .\}
1782
+ Put release notes in "description" field of gemspec, as
1783
+ suggested by Eric Hodel, so that subscribers of
1784
+ the RubyForge gems feed
1785
+ are aware of the changes in a published gem\&.
1786
+ .RE
1787
+ .sp
1788
+ .RS 4
1789
+ .ie n \{\
1790
+ \h'-04'\(bu\h'+03'\c
1791
+ .\}
1792
+ .el \{\
1793
+ .sp -1
1794
+ .IP \(bu 2.3
1795
+ .\}
1796
+ Set the "date" field in gemspec to project release date\&.
1797
+ .RE
1798
+ .sp
1799
+ .RS 4
1800
+ .ie n \{\
1801
+ \h'-04'\(bu\h'+03'\c
1802
+ .\}
1803
+ .el \{\
1804
+ .sp -1
1805
+ .IP \(bu 2.3
1806
+ .\}
1807
+ Change file extension of generated user manuals from \&.xhtml to \&.html to accomodate Microsoft web browsers\' inability to process the application/xhtml+xml mime type\&.
1808
+ .RE
1809
+ .PP
1810
+ \fBBug fixes\fR
1811
+ .sp
1812
+ .RS 4
1813
+ .ie n \{\
1814
+ \h'-04'\(bu\h'+03'\c
1815
+ .\}
1816
+ .el \{\
1817
+ .sp -1
1818
+ .IP \(bu 2.3
1819
+ .\}
1820
+ The sdoc library was necessary to run
1821
+ \fIrake test\fR\&.
1822
+ .RE
1823
+ .sp
1824
+ .RS 4
1825
+ .ie n \{\
1826
+ \h'-04'\(bu\h'+03'\c
1827
+ .\}
1828
+ .el \{\
1829
+ .sp -1
1830
+ .IP \(bu 2.3
1831
+ .\}
1832
+ Forgot to add
1833
+ :develop
1834
+ option to scaffold generator output\&.
1835
+ .RE
1836
+ .sp
1837
+ .RS 4
1838
+ .ie n \{\
1839
+ \h'-04'\(bu\h'+03'\c
1840
+ .\}
1841
+ .el \{\
1842
+ .sp -1
1843
+ .IP \(bu 2.3
1844
+ .\}
1845
+ Make "rake lang:dump" unconditionally overwrite the dump file\&.
1846
+ .RE
1847
+ .sp
1848
+ .RS 4
1849
+ .ie n \{\
1850
+ \h'-04'\(bu\h'+03'\c
1851
+ .\}
1852
+ .el \{\
1853
+ .sp -1
1854
+ .IP \(bu 2.3
1855
+ .\}
1856
+ Fix gem not being built and prevent Maruku errors for the dummy "WordCount" project in the user manual\&.
1857
+ .RE
1858
+ .sp
1859
+ .RS 4
1860
+ .ie n \{\
1861
+ \h'-04'\(bu\h'+03'\c
1862
+ .\}
1863
+ .el \{\
1864
+ .sp -1
1865
+ .IP \(bu 2.3
1866
+ .\}
1867
+ Use /usr/bin/env instead of /usr/bin/ruby to launch Ruby for better portability\&.
1868
+ .RE
1869
+ .PP
1870
+ \fBHousekeeping\fR
1871
+ .sp
1872
+ .RS 4
1873
+ .ie n \{\
1874
+ \h'-04'\(bu\h'+03'\c
1875
+ .\}
1876
+ .el \{\
1877
+ .sp -1
1878
+ .IP \(bu 2.3
1879
+ .\}
1880
+ Use simpler Copyright reminder at the top of every file\&.
1881
+ .RE
1882
+ .sp
1883
+ .RS 4
1884
+ .ie n \{\
1885
+ \h'-04'\(bu\h'+03'\c
1886
+ .\}
1887
+ .el \{\
1888
+ .sp -1
1889
+ .IP \(bu 2.3
1890
+ .\}
1891
+ Open source is for fun, so speak of "related works", not "competitors"\&.
1892
+ .RE
1893
+ .sp
1894
+ .RS 4
1895
+ .ie n \{\
1896
+ \h'-04'\(bu\h'+03'\c
1897
+ .\}
1898
+ .el \{\
1899
+ .sp -1
1900
+ .IP \(bu 2.3
1901
+ .\}
1902
+ Rename "Tutorial" to "General walkthrough" in user manual and add a "Specific topics" section for housing uncommon use cases\&.
1903
+ .RE
1904
+ .sp
1905
+ .RS 4
1906
+ .ie n \{\
1907
+ \h'-04'\(bu\h'+03'\c
1908
+ .\}
1909
+ .el \{\
1910
+ .sp -1
1911
+ .IP \(bu 2.3
1912
+ .\}
1913
+ Remove "logistics" section and redistribute its contents in more suitable locations in the user manual\&.
1914
+ .RE
1915
+ .SS "Version 1\&.0\&.0 (2009\-05\-03)"
1916
+ .sp
1917
+ This release allows your gems to not depend on Inochi, lets you choose which unit testing library to use, adds new utility libraries and rake tasks, and fixes some bugs\&.
1918
+ .PP
1919
+ \fBIncompatible changes\fR
1920
+ .sp
1921
+ .RS 4
1922
+ .ie n \{\
1923
+ \h'-04'\(bu\h'+03'\c
1924
+ .\}
1925
+ .el \{\
1926
+ .sp -1
1927
+ .IP \(bu 2.3
1928
+ .\}
1929
+ Your program is no longer halted by
1930
+ Inochi\&.init()
1931
+ and
1932
+ Inochi\&.rake()
1933
+ if gem dependencies are not satified\&. A warning is issued instead\&.
1934
+ .RE
1935
+ .sp
1936
+ .RS 4
1937
+ .ie n \{\
1938
+ \h'-04'\(bu\h'+03'\c
1939
+ .\}
1940
+ .el \{\
1941
+ .sp -1
1942
+ .IP \(bu 2.3
1943
+ .\}
1944
+ The
1945
+ project_summary
1946
+ and
1947
+ project_history
1948
+ nodes, which are provided by
1949
+ Inochi\&.book()
1950
+ to the user manual, have been renamed to
1951
+ project
1952
+ and
1953
+ history
1954
+ respectively\&.
1955
+ .RE
1956
+ .sp
1957
+ .RS 4
1958
+ .ie n \{\
1959
+ \h'-04'\(bu\h'+03'\c
1960
+ .\}
1961
+ .el \{\
1962
+ .sp -1
1963
+ .IP \(bu 2.3
1964
+ .\}
1965
+ ERBook 7\&.1\&.0 is now used for generating the user manual\&. This is a major step up from the previous version, and so it has incompatible changes\&. See its release notes for details\&.
1966
+ .RE
1967
+ .sp
1968
+ .RS 4
1969
+ .ie n \{\
1970
+ \h'-04'\(bu\h'+03'\c
1971
+ .\}
1972
+ .el \{\
1973
+ .sp -1
1974
+ .IP \(bu 2.3
1975
+ .\}
1976
+
1977
+ SDoc
1978
+ is now used to generate API documentation instead of
1979
+ YARD\&. If you link to particular classes or methods in the generated API documentation, be sure to update your link addresses!
1980
+ .RE
1981
+ .sp
1982
+ .RS 4
1983
+ .ie n \{\
1984
+ \h'-04'\(bu\h'+03'\c
1985
+ .\}
1986
+ .el \{\
1987
+ .sp -1
1988
+ .IP \(bu 2.3
1989
+ .\}
1990
+ Minitest is no longer the default testing library\&. You must specify which testing library you want to use via the
1991
+ :test_with
1992
+ option of the
1993
+ Inochi\&.rake()
1994
+ method\&. See the "Test execution" section for details\&.
1995
+ .RE
1996
+ .sp
1997
+ .RS 4
1998
+ .ie n \{\
1999
+ \h'-04'\(bu\h'+03'\c
2000
+ .\}
2001
+ .el \{\
2002
+ .sp -1
2003
+ .IP \(bu 2.3
2004
+ .\}
2005
+ The "pak" rake task, which is provided by
2006
+ Inochi\&.rake(), has been renamed to "gem"\&.
2007
+ .RE
2008
+ .PP
2009
+ \fBNew features\fR
2010
+ .sp
2011
+ .RS 4
2012
+ .ie n \{\
2013
+ \h'-04'\(bu\h'+03'\c
2014
+ .\}
2015
+ .el \{\
2016
+ .sp -1
2017
+ .IP \(bu 2.3
2018
+ .\}
2019
+ Add
2020
+ :inochi_consumer
2021
+ and
2022
+ :inochi_producer
2023
+ options to
2024
+ Inochi\&.rake()
2025
+ which allows you to
2026
+ \fIavoid\fR
2027
+ having Inochi as a runtime and development dependency, respectively, for your project\(cqs gem\&.
2028
+ .sp
2029
+ This is useful if you just want to use Inochi facilities for building a gem for a pure Ruby library that does not have any need for Inochi\(cqs runtime convenience facilities\&.
2030
+ .RE
2031
+ .sp
2032
+ .RS 4
2033
+ .ie n \{\
2034
+ \h'-04'\(bu\h'+03'\c
2035
+ .\}
2036
+ .el \{\
2037
+ .sp -1
2038
+ .IP \(bu 2.3
2039
+ .\}
2040
+ Add
2041
+ :develop
2042
+ option for
2043
+ Inochi\&.init()
2044
+ which lets you specify RubyGems as development dependencies in the same way as the
2045
+ :require
2046
+ option\&.
2047
+ .RE
2048
+ .sp
2049
+ .RS 4
2050
+ .ie n \{\
2051
+ \h'-04'\(bu\h'+03'\c
2052
+ .\}
2053
+ .el \{\
2054
+ .sp -1
2055
+ .IP \(bu 2.3
2056
+ .\}
2057
+ Add "lint" rake task which reports
2058
+ code quality statistics\&.
2059
+ .RE
2060
+ .sp
2061
+ .RS 4
2062
+ .ie n \{\
2063
+ \h'-04'\(bu\h'+03'\c
2064
+ .\}
2065
+ .el \{\
2066
+ .sp -1
2067
+ .IP \(bu 2.3
2068
+ .\}
2069
+ Add "test:cov" rake task which reports code coverage statistics\&.
2070
+ .RE
2071
+ .sp
2072
+ .RS 4
2073
+ .ie n \{\
2074
+ \h'-04'\(bu\h'+03'\c
2075
+ .\}
2076
+ .el \{\
2077
+ .sp -1
2078
+ .IP \(bu 2.3
2079
+ .\}
2080
+ Add "test:ruby" task which runs all tests with
2081
+ multiruby\&.
2082
+ .RE
2083
+ .sp
2084
+ .RS 4
2085
+ .ie n \{\
2086
+ \h'-04'\(bu\h'+03'\c
2087
+ .\}
2088
+ .el \{\
2089
+ .sp -1
2090
+ .IP \(bu 2.3
2091
+ .\}
2092
+ Add
2093
+ rake opts=
2094
+ environment variable, which lets you specify command\-line arguments directly to the Ruby interpreter, for all test* rake tasks\&.
2095
+ .RE
2096
+ .sp
2097
+ .RS 4
2098
+ .ie n \{\
2099
+ \h'-04'\(bu\h'+03'\c
2100
+ .\}
2101
+ .el \{\
2102
+ .sp -1
2103
+ .IP \(bu 2.3
2104
+ .\}
2105
+ Add
2106
+ inochi/util/combo
2107
+ combinatorics library for enumerations, permutations, and combinations which are all useful in exhaustive brute\-force unit testing\&.
2108
+ .RE
2109
+ .sp
2110
+ .RS 4
2111
+ .ie n \{\
2112
+ \h'-04'\(bu\h'+03'\c
2113
+ .\}
2114
+ .el \{\
2115
+ .sp -1
2116
+ .IP \(bu 2.3
2117
+ .\}
2118
+ Add
2119
+ inochi/util/tempdir
2120
+ library which really should be in the Ruby standard library\&.
2121
+ .RE
2122
+ .PP
2123
+ \fBBug fixes\fR
2124
+ .sp
2125
+ .RS 4
2126
+ .ie n \{\
2127
+ \h'-04'\(bu\h'+03'\c
2128
+ .\}
2129
+ .el \{\
2130
+ .sp -1
2131
+ .IP \(bu 2.3
2132
+ .\}
2133
+ The "enable email notification" checkbox was not activated properly when posting announcement to ruby\-talk mailing list via Ruby\-Forum\&.
2134
+ .RE
2135
+ .sp
2136
+ .RS 4
2137
+ .ie n \{\
2138
+ \h'-04'\(bu\h'+03'\c
2139
+ .\}
2140
+ .el \{\
2141
+ .sp -1
2142
+ .IP \(bu 2.3
2143
+ .\}
2144
+ Mark gems needed by
2145
+ Inochi\&.rake()
2146
+ as
2147
+ \fIdevelopment\fR
2148
+ dependencies\&.
2149
+ .sp
2150
+ Users must now run
2151
+ gem install Inochi \-\-development
2152
+ to install these dependencies\&. This also solves the recursive dependency problem between Inochi and ERBook\&.
2153
+ .RE
2154
+ .sp
2155
+ .RS 4
2156
+ .ie n \{\
2157
+ \h'-04'\(bu\h'+03'\c
2158
+ .\}
2159
+ .el \{\
2160
+ .sp -1
2161
+ .IP \(bu 2.3
2162
+ .\}
2163
+ Set executable in gem specification only if it exists\&.
2164
+ .RE
2165
+ .sp
2166
+ .RS 4
2167
+ .ie n \{\
2168
+ \h'-04'\(bu\h'+03'\c
2169
+ .\}
2170
+ .el \{\
2171
+ .sp -1
2172
+ .IP \(bu 2.3
2173
+ .\}
2174
+ Fix parsing of stack trace in Ruby 1\&.9\&.
2175
+ .RE
2176
+ .PP
2177
+ \fBHousekeeping\fR
2178
+ .sp
2179
+ .RS 4
2180
+ .ie n \{\
2181
+ \h'-04'\(bu\h'+03'\c
2182
+ .\}
2183
+ .el \{\
2184
+ .sp -1
2185
+ .IP \(bu 2.3
2186
+ .\}
2187
+ Write contributor names in CREDITS file instead of in the user manual\&.
2188
+ .RE
2189
+ .sp
2190
+ .RS 4
2191
+ .ie n \{\
2192
+ \h'-04'\(bu\h'+03'\c
2193
+ .\}
2194
+ .el \{\
2195
+ .sp -1
2196
+ .IP \(bu 2.3
2197
+ .\}
2198
+ Use completely lowercase name for Rakefile\&.
2199
+ .RE
2200
+ .sp
2201
+ .RS 4
2202
+ .ie n \{\
2203
+ \h'-04'\(bu\h'+03'\c
2204
+ .\}
2205
+ .el \{\
2206
+ .sp -1
2207
+ .IP \(bu 2.3
2208
+ .\}
2209
+ Add copyright statement at the top of every source file\&.
2210
+ .RE
2211
+ .SS "Version 0\&.3\&.0 (2009\-02\-12)"
2212
+ .sp
2213
+ This release adds support for language translations, improves the user interface, and fixes a show\-stopper bug for Windows users\&.
2214
+ .PP
2215
+ \fBNew features\fR
2216
+ .sp
2217
+ .RS 4
2218
+ .ie n \{\
2219
+ \h'-04'\(bu\h'+03'\c
2220
+ .\}
2221
+ .el \{\
2222
+ .sp -1
2223
+ .IP \(bu 2.3
2224
+ .\}
2225
+ Add support for language translations of phrases used in a project\&.
2226
+ .RE
2227
+ .sp
2228
+ .RS 4
2229
+ .ie n \{\
2230
+ \h'-04'\(bu\h'+03'\c
2231
+ .\}
2232
+ .el \{\
2233
+ .sp -1
2234
+ .IP \(bu 2.3
2235
+ .\}
2236
+ Add "lang:dump" Rake task for extracting language phrases from project\&.
2237
+ .RE
2238
+ .sp
2239
+ .RS 4
2240
+ .ie n \{\
2241
+ \h'-04'\(bu\h'+03'\c
2242
+ .\}
2243
+ .el \{\
2244
+ .sp -1
2245
+ .IP \(bu 2.3
2246
+ .\}
2247
+ Add "lang:conv" Rake task for translating dumped phrases into various languages using the BabelFish translation service\&.
2248
+ .RE
2249
+ .sp
2250
+ .RS 4
2251
+ .ie n \{\
2252
+ \h'-04'\(bu\h'+03'\c
2253
+ .\}
2254
+ .el \{\
2255
+ .sp -1
2256
+ .IP \(bu 2.3
2257
+ .\}
2258
+ Add
2259
+ \-\-locale
2260
+ option to a project\(cqs main executable for setting user\(cqs preferred language in spite of the user\(cqs locale environment\&.
2261
+ .RE
2262
+ .sp
2263
+ .RS 4
2264
+ .ie n \{\
2265
+ \h'-04'\(bu\h'+03'\c
2266
+ .\}
2267
+ .el \{\
2268
+ .sp -1
2269
+ .IP \(bu 2.3
2270
+ .\}
2271
+ Notify user when attempting to publish announcements in the "pub" Rake tasks\&.
2272
+ .RE
2273
+ .PP
2274
+ \fBBug fixes\fR
2275
+ .sp
2276
+ .RS 4
2277
+ .ie n \{\
2278
+ \h'-04'\(bu\h'+03'\c
2279
+ .\}
2280
+ .el \{\
2281
+ .sp -1
2282
+ .IP \(bu 2.3
2283
+ .\}
2284
+ In Windows,
2285
+ ENV[\'USERPROFILE\']
2286
+ gives the path to the user\(cqs home directory and
2287
+ ENV[\'HOME\']
2288
+ is not defined\&.
2289
+ .RE
2290
+ .sp
2291
+ .RS 4
2292
+ .ie n \{\
2293
+ \h'-04'\(bu\h'+03'\c
2294
+ .\}
2295
+ .el \{\
2296
+ .sp -1
2297
+ .IP \(bu 2.3
2298
+ .\}
2299
+ The only real solution to the circular gem dependency problem is:
2300
+ .sp
2301
+ .if n \{\
2302
+ .RS 4
2303
+ .\}
2304
+ .nf
2305
+ gem install \-\-force
2306
+ .fi
2307
+ .if n \{\
2308
+ .RE
2309
+ .\}
2310
+ .sp
2311
+ You should update the "Setup" section in your projects\' user manuals accordingly\&.
2312
+ .RE
2313
+ .PP
2314
+ \fBHousekeeping\fR
2315
+ .sp
2316
+ .RS 4
2317
+ .ie n \{\
2318
+ \h'-04'\(bu\h'+03'\c
2319
+ .\}
2320
+ .el \{\
2321
+ .sp -1
2322
+ .IP \(bu 2.3
2323
+ .\}
2324
+ Break the huge lib/inochi/inochi\&.rb library into smaller files\&.
2325
+ .RE
2326
+ .sp
2327
+ .RS 4
2328
+ .ie n \{\
2329
+ \h'-04'\(bu\h'+03'\c
2330
+ .\}
2331
+ .el \{\
2332
+ .sp -1
2333
+ .IP \(bu 2.3
2334
+ .\}
2335
+ Instead of adding methods to singleton classes directly, define modules and extend to them so that YARDoc documents the methods appropriately\&.
2336
+ .RE
2337
+ .sp
2338
+ .RS 4
2339
+ .ie n \{\
2340
+ \h'-04'\(bu\h'+03'\c
2341
+ .\}
2342
+ .el \{\
2343
+ .sp -1
2344
+ .IP \(bu 2.3
2345
+ .\}
2346
+ List all project contributors globally in the "Credits" section\&.
2347
+ .RE
2348
+ .sp
2349
+ .RS 4
2350
+ .ie n \{\
2351
+ \h'-04'\(bu\h'+03'\c
2352
+ .\}
2353
+ .el \{\
2354
+ .sp -1
2355
+ .IP \(bu 2.3
2356
+ .\}
2357
+ Remove "Contributor kudos" paragraph in release notes in favor of crediting contributors inline with each item in the release notes\&.
2358
+ .RE
2359
+ .sp
2360
+ .RS 4
2361
+ .ie n \{\
2362
+ \h'-04'\(bu\h'+03'\c
2363
+ .\}
2364
+ .el \{\
2365
+ .sp -1
2366
+ .IP \(bu 2.3
2367
+ .\}
2368
+ Mention that the project license is ISC for the reader\(cqs convenience\&.
2369
+ .RE
2370
+ .SS "Version 0\&.2\&.0 (2009\-01\-25)"
2371
+ .sp
2372
+ This release adds support for unit testing, improves the portability of Inochi and configurability of your projects, adds new content to the user manual, and fixes some bugs\&.
2373
+ .PP
2374
+ \fBNew features\fR
2375
+ .sp
2376
+ .RS 4
2377
+ .ie n \{\
2378
+ \h'-04'\(bu\h'+03'\c
2379
+ .\}
2380
+ .el \{\
2381
+ .sp -1
2382
+ .IP \(bu 2.3
2383
+ .\}
2384
+ Added support for unit testing via the
2385
+ minitest
2386
+ library\&.
2387
+ .RE
2388
+ .sp
2389
+ .RS 4
2390
+ .ie n \{\
2391
+ \h'-04'\(bu\h'+03'\c
2392
+ .\}
2393
+ .el \{\
2394
+ .sp -1
2395
+ .IP \(bu 2.3
2396
+ .\}
2397
+ The scaffold generator now emits a default unit test for the main project library\&.
2398
+ .RE
2399
+ .sp
2400
+ .RS 4
2401
+ .ie n \{\
2402
+ \h'-04'\(bu\h'+03'\c
2403
+ .\}
2404
+ .el \{\
2405
+ .sp -1
2406
+ .IP \(bu 2.3
2407
+ .\}
2408
+ Added optional ProgramName parameter to the scaffold generator\&. This allows you to specify reasonable program names when your project module has a strange capitalization:
2409
+ .sp
2410
+ .if n \{\
2411
+ .RS 4
2412
+ .\}
2413
+ .nf
2414
+ $ inochi ERBook
2415
+ create er_book/LICENSE
2416
+
2417
+ $ inochi ERBook erbook
2418
+ create erbook/LICENSE
2419
+
2420
+ $ inochi ERBook foobar
2421
+ create foobar/LICENSE
2422
+ .fi
2423
+ .if n \{\
2424
+ .RE
2425
+ .\}
2426
+ .RE
2427
+ .sp
2428
+ .RS 4
2429
+ .ie n \{\
2430
+ \h'-04'\(bu\h'+03'\c
2431
+ .\}
2432
+ .el \{\
2433
+ .sp -1
2434
+ .IP \(bu 2.3
2435
+ .\}
2436
+ Allow project authors to be specified via
2437
+ Inochi\&.init :YourProject, :authors => [[\'name\', \'mail\']]
2438
+ (thanks to Florian Gilcher)
2439
+ .RE
2440
+ .PP
2441
+ \fBBug fixes\fR
2442
+ .sp
2443
+ .RS 4
2444
+ .ie n \{\
2445
+ \h'-04'\(bu\h'+03'\c
2446
+ .\}
2447
+ .el \{\
2448
+ .sp -1
2449
+ .IP \(bu 2.3
2450
+ .\}
2451
+ Run on both JRuby and normal Ruby in multiple versions and with different executable names on Windows\&. (thanks to Florian Gilcher)
2452
+ .RE
2453
+ .sp
2454
+ .RS 4
2455
+ .ie n \{\
2456
+ \h'-04'\(bu\h'+03'\c
2457
+ .\}
2458
+ .el \{\
2459
+ .sp -1
2460
+ .IP \(bu 2.3
2461
+ .\}
2462
+ Use
2463
+ Gem::RubyGemsVersion
2464
+ instead of a shell command to determine rubygems version for generation of setup\&.erb\&. (thanks to Florian Gilcher)
2465
+ .RE
2466
+ .sp
2467
+ .RS 4
2468
+ .ie n \{\
2469
+ \h'-04'\(bu\h'+03'\c
2470
+ .\}
2471
+ .el \{\
2472
+ .sp -1
2473
+ .IP \(bu 2.3
2474
+ .\}
2475
+ Add blank lines between all list items, not just multi\-line ones, in the plain\-text version of the release announcement for improved readability\&.
2476
+ .RE
2477
+ .sp
2478
+ .RS 4
2479
+ .ie n \{\
2480
+ \h'-04'\(bu\h'+03'\c
2481
+ .\}
2482
+ .el \{\
2483
+ .sp -1
2484
+ .IP \(bu 2.3
2485
+ .\}
2486
+ Omit LaTeX\-style heading numbers from release announcements\&. They caused confusion, especially in plain\-text announcements, when trying to determine which version of a project was released\&.
2487
+ .RE
2488
+ .PP
2489
+ \fBHousekeeping\fR
2490
+ .sp
2491
+ .RS 4
2492
+ .ie n \{\
2493
+ \h'-04'\(bu\h'+03'\c
2494
+ .\}
2495
+ .el \{\
2496
+ .sp -1
2497
+ .IP \(bu 2.3
2498
+ .\}
2499
+ Added unit tests for utility methods provided by the
2500
+ Inochi
2501
+ module: project name calculation and CamelCase to snake_case conversion\&.
2502
+ .RE
2503
+ .SS "Version 0\&.1\&.0 (2009\-01\-13)"
2504
+ .sp
2505
+ This release reattempts to fix the circular dependency problem that occurred when installing either Inochi or ERBook\&.
2506
+ .PP
2507
+ \fBNew features\fR
2508
+ .sp
2509
+ .RS 4
2510
+ .ie n \{\
2511
+ \h'-04'\(bu\h'+03'\c
2512
+ .\}
2513
+ .el \{\
2514
+ .sp -1
2515
+ .IP \(bu 2.3
2516
+ .\}
2517
+
2518
+ Inochi\&.init()
2519
+ now adds
2520
+ #major(),
2521
+ #series(), and
2522
+ #requirement()
2523
+ instance methods to a project\(cqs
2524
+ VERSION
2525
+ constant\&.
2526
+ .RE
2527
+ .PP
2528
+ \fBBug fixes\fR
2529
+ .sp
2530
+ .RS 4
2531
+ .ie n \{\
2532
+ \h'-04'\(bu\h'+03'\c
2533
+ .\}
2534
+ .el \{\
2535
+ .sp -1
2536
+ .IP \(bu 2.3
2537
+ .\}
2538
+ Solved circular dependency problem by making inochi gem not dependent on erbook gem\&. However, ERBook is still required during runtime and is supplied on the
2539
+ gem install
2540
+ command for
2541
+ Inochi\&.
2542
+ .sp
2543
+ The "Installing" section has been updated accordingly\&.
2544
+ .RE
2545
+ .sp
2546
+ .RS 4
2547
+ .ie n \{\
2548
+ \h'-04'\(bu\h'+03'\c
2549
+ .\}
2550
+ .el \{\
2551
+ .sp -1
2552
+ .IP \(bu 2.3
2553
+ .\}
2554
+ Add forgotten Rake dependency for
2555
+ Inochi
2556
+ gem\&.
2557
+ .RE
2558
+ .SS "Version 0\&.0\&.1 (2009\-01\-13)"
2559
+ .sp
2560
+ This release fixes some show\-stopper bugs\&.
2561
+ .PP
2562
+ \fBBug fixes\fR
2563
+ .sp
2564
+ .RS 4
2565
+ .ie n \{\
2566
+ \h'-04'\(bu\h'+03'\c
2567
+ .\}
2568
+ .el \{\
2569
+ .sp -1
2570
+ .IP \(bu 2.3
2571
+ .\}
2572
+ The name of the project library was
2573
+ being determined incorrectly\&. (thanks to Florian Gilcher)
2574
+ .RE
2575
+ .sp
2576
+ .RS 4
2577
+ .ie n \{\
2578
+ \h'-04'\(bu\h'+03'\c
2579
+ .\}
2580
+ .el \{\
2581
+ .sp -1
2582
+ .IP \(bu 2.3
2583
+ .\}
2584
+ There was a
2585
+ circular dependency problem
2586
+ when installing the
2587
+ Inochi
2588
+ gem\&. (thanks to Florian Gilcher)
2589
+ .sp
2590
+ The solution is to specify the
2591
+ \-\-force
2592
+ option when installing the gem\&. The "Installing" section has been updated accordingly\&.
2593
+ .RE
2594
+ .sp
2595
+ .RS 4
2596
+ .ie n \{\
2597
+ \h'-04'\(bu\h'+03'\c
2598
+ .\}
2599
+ .el \{\
2600
+ .sp -1
2601
+ .IP \(bu 2.3
2602
+ .\}
2603
+ Generated project scaffolds now check against the major version of the yInochi` gem, to avoid runtime version conflicts\&.
2604
+ .RE
2605
+ .PP
2606
+ \fBHousekeeping\fR
2607
+ .sp
2608
+ .RS 4
2609
+ .ie n \{\
2610
+ \h'-04'\(bu\h'+03'\c
2611
+ .\}
2612
+ .el \{\
2613
+ .sp -1
2614
+ .IP \(bu 2.3
2615
+ .\}
2616
+ Only add project libraries to
2617
+ $LOAD_PATH
2618
+ if not already there\&.
2619
+ .RE
2620
+ .SS "Version 0\&.0\&.0 (2009\-01\-13)"
2621
+ .sp
2622
+ This is the first release of Inochi\&. Enjoy!
2623
+ .SH "AUTHORS"
2624
+ .sp
2625
+ Suraj N\&. Kurapati
2626
+ .SS "Credits"
2627
+ .sp
2628
+ Florian Gilcher, Peileppe Production
2629
+ .sp
2630
+ The "inochi\&.png" image and its "inochi\&.svg" source utilize the "3 flowers" graphic[1], which was created and released into the public domain by Peileppe Production[2] on June 25, 2008\&.
2631
+ .sp
2632
+ .RS 4
2633
+ .ie n \{\
2634
+ \h'-04' 1.\h'+01'\c
2635
+ .\}
2636
+ .el \{\
2637
+ .sp -1
2638
+ .IP " 1." 4.2
2639
+ .\}
2640
+
2641
+ http://www\&.openclipart\&.org/detail/17456
2642
+ .RE
2643
+ .sp
2644
+ .RS 4
2645
+ .ie n \{\
2646
+ \h'-04' 2.\h'+01'\c
2647
+ .\}
2648
+ .el \{\
2649
+ .sp -1
2650
+ .IP " 2." 4.2
2651
+ .\}
2652
+
2653
+ http://www\&.openclipart\&.org/user\-detail/Peileppe
2654
+ .RE
2655
+ .SS "License"
2656
+ .sp
2657
+ (the ISC license)
2658
+ .sp
2659
+ Copyright 2008 Suraj N\&. Kurapati <sunaku@gmail\&.com>
2660
+ .sp
2661
+ Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies\&.
2662
+ .sp
2663
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\&. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE\&.
2664
+ .SH "SEE ALSO"
2665
+ .sp
2666
+ rake(1), rsync(1), asciidoc(1), a2x(1), [Ember]
2667
+ .SS "References"
2668
+ .TS
2669
+ tab(:);
2670
+ lt lt
2671
+ lt lt
2672
+ lt lt
2673
+ lt lt
2674
+ lt lt
2675
+ lt lt
2676
+ lt lt
2677
+ lt lt
2678
+ lt lt
2679
+ lt lt
2680
+ lt lt
2681
+ lt lt
2682
+ lt lt
2683
+ lt lt
2684
+ lt lt
2685
+ lt lt
2686
+ lt lt.
2687
+ T{
2688
+ .sp
2689
+ AsciiDoc
2690
+ T}:T{
2691
+ .sp
2692
+ http://www\&.methods\&.co\&.nz/asciidoc/
2693
+ T}
2694
+ T{
2695
+ .sp
2696
+ Ember
2697
+ T}:T{
2698
+ .sp
2699
+ http://snk\&.tuxfamily\&.org/lib/ember/
2700
+ T}
2701
+ T{
2702
+ .sp
2703
+ ERBook
2704
+ T}:T{
2705
+ .sp
2706
+ http://snk\&.tuxfamily\&.org/lib/erbook/
2707
+ T}
2708
+ T{
2709
+ .sp
2710
+ eRuby
2711
+ T}:T{
2712
+ .sp
2713
+ http://en\&.wikipedia\&.org/wiki/ERuby
2714
+ T}
2715
+ T{
2716
+ .sp
2717
+ Inochi
2718
+ T}:T{
2719
+ .sp
2720
+ http://snk\&.tuxfamily\&.org/lib/inochi/
2721
+ T}
2722
+ T{
2723
+ .sp
2724
+ kdiff3
2725
+ T}:T{
2726
+ .sp
2727
+ http://kdiff3\&.sourceforge\&.net
2728
+ T}
2729
+ T{
2730
+ .sp
2731
+ Lynx
2732
+ T}:T{
2733
+ .sp
2734
+ http://lynx\&.isc\&.org
2735
+ T}
2736
+ T{
2737
+ .sp
2738
+ Markdown
2739
+ T}:T{
2740
+ .sp
2741
+ http://daringfireball\&.net/projects/markdown
2742
+ T}
2743
+ T{
2744
+ .sp
2745
+ meld
2746
+ T}:T{
2747
+ .sp
2748
+ http://meld\&.sourceforge\&.net
2749
+ T}
2750
+ T{
2751
+ .sp
2752
+ RAA
2753
+ T}:T{
2754
+ .sp
2755
+ http://raa\&.ruby\-lang\&.org
2756
+ T}
2757
+ T{
2758
+ .sp
2759
+ Ronn
2760
+ T}:T{
2761
+ .sp
2762
+ http://github\&.com/rtomayko/ronn
2763
+ T}
2764
+ T{
2765
+ .sp
2766
+ RubyGems
2767
+ T}:T{
2768
+ .sp
2769
+ http://rubygems\&.org
2770
+ T}
2771
+ T{
2772
+ .sp
2773
+ Ruby
2774
+ T}:T{
2775
+ .sp
2776
+ http://ruby\-lang\&.org
2777
+ T}
2778
+ T{
2779
+ .sp
2780
+ ruby\-talk
2781
+ T}:T{
2782
+ .sp
2783
+ http://www\&.ruby\-lang\&.org/en/community/mailing\-lists/
2784
+ T}
2785
+ T{
2786
+ .sp
2787
+ tkdiff
2788
+ T}:T{
2789
+ .sp
2790
+ http://tkdiff\&.sourceforge\&.net
2791
+ T}
2792
+ T{
2793
+ .sp
2794
+ YAML
2795
+ T}:T{
2796
+ .sp
2797
+ http://www\&.yaml\&.org/YAML_for_ruby\&.html
2798
+ T}
2799
+ T{
2800
+ .sp
2801
+ YARD
2802
+ T}:T{
2803
+ .sp
2804
+ http://yardoc\&.org/more
2805
+ T}
2806
+ .TE
2807
+ .sp 1