inochi 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,18 +1,63 @@
1
1
  <% chapter "History", "history" do %>
2
2
  <% project_history do %>
3
+ <% section "Version 0.2.0 (2009-01-25)" do %>
4
+ 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.
5
+
6
+ <% paragraph "Contributor kudos" do %>
7
+ Florian Gilcher patched **Inochi** to:
8
+
9
+ * Run on both JRuby and normal Ruby in multiple versions and with different executable names on Windows.
10
+
11
+ * Allow project authors to be specified by hand instead of always relying on the license file to be in expected form, because his license template doesn't follow that form.
12
+ <% end %>
13
+
14
+ <% paragraph "New features" do %>
15
+ * Added support for unit testing via the [minitest](http://rubyforge.org/projects/bfts/) library. See <%= xref "Test your project" %> for documentation.
16
+
17
+ Also, in related news, the scaffold generator now emits a default unit test for the main project library.
18
+
19
+ * Added optional ProgramName parameter to the scaffold generator. This allows you to specify reasonable program names when your project module has a strange capitalization:
20
+
21
+ > inochi ERBook
22
+ create er_book/LICENSE
23
+
24
+ > inochi ERBook erbook
25
+ create erbook/LICENSE
26
+
27
+ > inochi ERBook foobar
28
+ create foobar/LICENSE
29
+
30
+ * Allow project authors to be specified via
31
+
32
+ `Inochi.init :YourProject, :authors => ...`
33
+ <% end %>
34
+
35
+ <% paragraph "Bug fixes" do %>
36
+ * Use `Gem::RubyGemsVersion` instead of a shell command to determine rubygems version for generation of <tt>setup.erb</tt>. (Florian Gilcher)
37
+
38
+ * Add blank lines between all list items, not just multi-line ones, in the plain-text version of the relase announcement for improved readability.
39
+
40
+ * 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.
41
+ <% end %>
42
+
43
+ <% paragraph "Housekeeping" do %>
44
+ * Added unit tests for utility methods provided by the **Inochi** module: project name calculation and CamelCase to snake\_case conversion.
45
+ <% end %>
46
+ <% end %>
47
+
3
48
  <% section "Version 0.1.0 (2009-01-13)" do %>
4
- This release reattempts to fix the [circular dependency problem](http://www.ruby-forum.com/topic/176173#771281) that occurred when installing either **<%= $project %>** or **<%= ERBook::PROJECT %>**.
49
+ This release reattempts to fix the [circular dependency problem](http://www.ruby-forum.com/topic/176173#771281) that occurred when installing either **Inochi** or **ERBook**.
5
50
 
6
51
  <% paragraph "New features" do %>
7
- * `Inochi.init()` now adds `#major()`, `#series()`, and `#requirement()` instance methods to a project's `VERSION` constant.
52
+ * `**Inochi**.init()` now adds `#major()`, `#series()`, and `#requirement()` instance methods to a project's `VERSION` constant.
8
53
  <% end %>
9
54
 
10
55
  <% paragraph "Bug fixes" do %>
11
- * Solved circular dependency problem by making inochi gem not dependent on erbook gem. However, **<%= ERBook::PROJECT %>** is still required during runtime and is supplied on the `gem install` command for **<%= $project %>**.
56
+ * 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 `gem install` command for **Inochi**.
12
57
 
13
58
  <%= xref "Installation" %> has been updated accordingly.
14
59
 
15
- * Add forgotten Rake dependency for **<%= $project %>** gem.
60
+ * Add forgotten Rake dependency for **Inochi** gem.
16
61
  <% end %>
17
62
  <% end %>
18
63
 
@@ -20,17 +65,17 @@
20
65
  This release fixes some show-stopper bugs.
21
66
 
22
67
  <% paragraph "Contributor kudos" do %>
23
- * Florian Gilcher tried the first release of **<%= $project %>** and reported bugs.
68
+ * Florian Gilcher tried the first release of **Inochi** and reported bugs.
24
69
  <% end %>
25
70
 
26
71
  <% paragraph "Bug fixes" do %>
27
72
  * Florian Gilcher reported that the name of the project library was [being determined incorrectly](http://www.ruby-forum.com/topic/176173#771351).
28
73
 
29
- * Florian Gilcher reported that there was a [circular dependency problem](http://www.ruby-forum.com/topic/176173#771281) when installing the **<%= $project %>** gem.
74
+ * Florian Gilcher reported that there was a [circular dependency problem](http://www.ruby-forum.com/topic/176173#771281) when installing the **Inochi** gem.
30
75
 
31
76
  The solution is to specify the <tt>--force</tt> option when installing the gem. <%= xref "Installation" %> has been updated accordingly.
32
77
 
33
- * Generated project scaffolds now check against the major version of the **<%= $project %>** gem, to avoid runtime version conflicts.
78
+ * Generated project scaffolds now check against the major version of the **Inochi** gem, to avoid runtime version conflicts.
34
79
  <% end %>
35
80
 
36
81
  <% paragraph "Housekeeping" do %>
@@ -39,7 +84,7 @@
39
84
  <% end %>
40
85
 
41
86
  <% section "Version 0.0.0 (2009-01-13)" do %>
42
- This is the first release of **<%= $project %>**.
87
+ This is the first release of **Inochi**.
43
88
 
44
89
  Happy birthday!
45
90
  <% end %>
@@ -14,11 +14,11 @@
14
14
  <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
15
15
  <meta name="generator" content="ERBook 6.0.1"/>
16
16
 
17
- <title>Inochi 0.1.0</title>
17
+ <title>Inochi 0.2.0</title>
18
18
 
19
19
  <meta name="author" content="Suraj N. Kurapati"/>
20
20
 
21
- <meta name="date" content="19 January 2009"/>
21
+ <meta name="date" content="25 January 2009"/>
22
22
 
23
23
  <link rel="alternate" type="application/rss+xml" href="http://snk.tuxfamily.org/lib/inochi/ann.xml"/>
24
24
 
@@ -642,13 +642,13 @@
642
642
 
643
643
  <div class="logo"><img src='inochi.png' alt='project logo' /></div>
644
644
 
645
- <h1 class="title">Inochi 0.1.0</h1>
645
+ <h1 class="title">Inochi 0.2.0</h1>
646
646
 
647
647
  <h2 class="subtitle">Gives life to RubyGems-based software</h2>
648
648
 
649
649
  <h3 class="authors"><a href="mailto:sunaku@gmail.com">Suraj N. Kurapati</a></h3>
650
650
 
651
- <h3 class="date">19 January 2009</h3>
651
+ <h3 class="date">25 January 2009</h3>
652
652
 
653
653
  </div>
654
654
 
@@ -663,7 +663,7 @@
663
663
  <a name="Contents"/><div class="nav" id="Contents"><a title="Reverse jump to listing" href="#rev:Contents">&equiv;</a>&#x25B3;&#x25BD;<a title="Jump to this segment" href="#Contents">&#x25CE;</a></div>
664
664
  <h1 class="title">Contents</h1>
665
665
  <ul>
666
- <li>1&nbsp;&nbsp;<a id="rev:Introduction" href="#Introduction">Introduction</a><ul><li><a id="rev:Etymology" href="#Etymology">Etymology</a></li><li>1.1&nbsp;&nbsp;<a id="rev:Logistics" href="#Logistics">Logistics</a><ul><li><a id="rev:Version-numbers" href="#Version-numbers">Version numbers</a></li></ul></li><li>1.2&nbsp;&nbsp;<a id="rev:License" href="#License">License</a></li><li>1.3&nbsp;&nbsp;<a id="rev:Credits" href="#Credits">Credits</a></li></ul></li><li>2&nbsp;&nbsp;<a id="rev:Setup" href="#Setup">Setup</a><ul><li>2.1&nbsp;&nbsp;<a id="rev:Requirements" href="#Requirements">Requirements</a></li><li>2.2&nbsp;&nbsp;<a id="rev:Installation" href="#Installation">Installation</a></li><li>2.3&nbsp;&nbsp;<a id="rev:Manifest" href="#Manifest">Manifest</a></li></ul></li><li>3&nbsp;&nbsp;<a id="rev:Usage" href="#Usage">Usage</a><ul><li>3.1&nbsp;&nbsp;<a id="rev:Command-line-interface" href="#Command-line-interface">Command-line interface</a></li><li>3.2&nbsp;&nbsp;<a id="rev:Ruby-library-interface" href="#Ruby-library-interface">Ruby library interface</a></li><li>3.3&nbsp;&nbsp;<a id="rev:Tutorial" href="#Tutorial">Tutorial</a><ul><li>3.3.1&nbsp;&nbsp;<a id="rev:Have-a-brilliant-idea" href="#Have-a-brilliant-idea">Have a brilliant idea</a></li><li>3.3.2&nbsp;&nbsp;<a id="rev:Generate-your-project" href="#Generate-your-project">Generate your project</a></li><li>3.3.3&nbsp;&nbsp;<a id="rev:Configure-your-project" href="#Configure-your-project">Configure your project</a><ul><li>3.3.3.1&nbsp;&nbsp;<a id="rev:Project-information" href="#Project-information">Project information</a></li><li>3.3.3.2&nbsp;&nbsp;<a id="rev:Project-executable" href="#Project-executable">Project executable</a></li><li>3.3.3.3&nbsp;&nbsp;<a id="rev:Rake-tasks" href="#Rake-tasks">Rake tasks</a></li><li>3.3.3.4&nbsp;&nbsp;<a id="rev:User-manual" href="#User-manual">User manual</a><ul><li><a id="rev:doc-index.erb" href="#doc-index.erb"><tt>doc/index.erb</tt></a></li><li><a id="rev:doc-intro.erb" href="#doc-intro.erb"><tt>doc/intro.erb</tt></a></li><li><a id="rev:doc-setup.erb" href="#doc-setup.erb"><tt>doc/setup.erb</tt></a></li><li><a id="rev:doc-theory.erb" href="#doc-theory.erb"><tt>doc/theory.erb</tt></a></li><li><a id="rev:doc-usage.erb" href="#doc-usage.erb"><tt>doc/usage.erb</tt></a></li><li><a id="rev:doc-history.erb" href="#doc-history.erb"><tt>doc/history.erb</tt></a></li></ul></li></ul></li><li>3.3.4&nbsp;&nbsp;<a id="rev:Implement-your-project" href="#Implement-your-project">Implement your project</a><ul><li><a id="rev:Goodbye-LOAD_PATH-hello-require" href="#Goodbye-LOAD_PATH-hello-require">Goodbye <code class="code"><span style="color:#d70;font-weight:bold">$LOAD_PATH</span></code>, hello <code class="code">require()</code></a></li></ul></li><li>3.3.5&nbsp;&nbsp;<a id="rev:Test-your-project" href="#Test-your-project">Test your project</a></li><li>3.3.6&nbsp;&nbsp;<a id="rev:Publish-your-project" href="#Publish-your-project">Publish your project</a><ul><li>3.3.6.1&nbsp;&nbsp;<a id="rev:Build-a-RubyGem" href="#Build-a-RubyGem">Build a RubyGem</a></li><li>3.3.6.2&nbsp;&nbsp;<a id="rev:Publish-a-RubyGem" href="#Publish-a-RubyGem">Publish a RubyGem</a></li><li>3.3.6.3&nbsp;&nbsp;<a id="rev:Announce-a-release" href="#Announce-a-release">Announce a release</a><ul><li><a id="rev:Login-information" href="#Login-information">Login information</a></li><li>3.3.6.3.1&nbsp;&nbsp;<a id="rev:Manual-release-announcement" href="#Manual-release-announcement">Manual release announcement</a></li></ul></li><li>3.3.6.4&nbsp;&nbsp;<a id="rev:Publish-the-documentation" href="#Publish-the-documentation">Publish the documentation</a></li></ul></li></ul></li></ul></li><li>4&nbsp;&nbsp;<a id="rev:history" href="#history">History</a><ul><li>4.1&nbsp;&nbsp;<a id="rev:Version-0.1.0-2009-01-13" href="#Version-0.1.0-2009-01-13">Version 0.1.0 (2009-01-13)</a><ul><li><a id="rev:New-features" href="#New-features">New features</a></li><li><a id="rev:Bug-fixes" href="#Bug-fixes">Bug fixes</a></li></ul></li><li>4.1&nbsp;&nbsp;<a id="rev:Version-0.0.1-2009-01-13" href="#Version-0.0.1-2009-01-13">Version 0.0.1 (2009-01-13)</a><ul><li><a id="rev:Contributor-kudos" href="#Contributor-kudos">Contributor kudos</a></li><li><a id="rev:Bug-fixes-608680498" href="#Bug-fixes-608680498">Bug fixes</a></li><li><a id="rev:Housekeeping" href="#Housekeeping">Housekeeping</a></li></ul></li><li>4.1&nbsp;&nbsp;<a id="rev:Version-0.0.0-2009-01-13" href="#Version-0.0.0-2009-01-13">Version 0.0.0 (2009-01-13)</a></li></ul></li>
666
+ <li>1&nbsp;&nbsp;<a id="rev:Introduction" href="#Introduction">Introduction</a><ul><li><a id="rev:Etymology" href="#Etymology">Etymology</a></li><li>1.1&nbsp;&nbsp;<a id="rev:Logistics" href="#Logistics">Logistics</a><ul><li><a id="rev:Version-numbers" href="#Version-numbers">Version numbers</a></li></ul></li><li>1.2&nbsp;&nbsp;<a id="rev:License" href="#License">License</a></li><li>1.3&nbsp;&nbsp;<a id="rev:Credits" href="#Credits">Credits</a></li></ul></li><li>2&nbsp;&nbsp;<a id="rev:Setup" href="#Setup">Setup</a><ul><li>2.1&nbsp;&nbsp;<a id="rev:Requirements" href="#Requirements">Requirements</a></li><li>2.2&nbsp;&nbsp;<a id="rev:Installation" href="#Installation">Installation</a></li><li>2.3&nbsp;&nbsp;<a id="rev:Manifest" href="#Manifest">Manifest</a></li></ul></li><li>3&nbsp;&nbsp;<a id="rev:Usage" href="#Usage">Usage</a><ul><li>3.1&nbsp;&nbsp;<a id="rev:Command-line-interface" href="#Command-line-interface">Command-line interface</a></li><li>3.2&nbsp;&nbsp;<a id="rev:Ruby-library-interface" href="#Ruby-library-interface">Ruby library interface</a></li><li>3.3&nbsp;&nbsp;<a id="rev:Tutorial" href="#Tutorial">Tutorial</a><ul><li>3.3.1&nbsp;&nbsp;<a id="rev:Have-a-brilliant-idea" href="#Have-a-brilliant-idea">Have a brilliant idea</a></li><li>3.3.2&nbsp;&nbsp;<a id="rev:Generate-your-project" href="#Generate-your-project">Generate your project</a><ul><li><a id="rev:View-Rake-tasks" href="#View-Rake-tasks">View Rake tasks</a></li><li><a id="rev:Run-unit-tests" href="#Run-unit-tests">Run unit tests</a></li><li><a id="rev:Run-project-executable" href="#Run-project-executable">Run project executable</a></li><li><a id="rev:Show-user-manual" href="#Show-user-manual">Show user manual</a></li></ul></li><li>3.3.3&nbsp;&nbsp;<a id="rev:Configure-your-project" href="#Configure-your-project">Configure your project</a><ul><li>3.3.3.1&nbsp;&nbsp;<a id="rev:Project-information" href="#Project-information">Project information</a></li><li>3.3.3.2&nbsp;&nbsp;<a id="rev:Project-executable" href="#Project-executable">Project executable</a></li><li>3.3.3.3&nbsp;&nbsp;<a id="rev:Rake-tasks" href="#Rake-tasks">Rake tasks</a></li><li>3.3.3.4&nbsp;&nbsp;<a id="rev:User-manual" href="#User-manual">User manual</a><ul><li><a id="rev:doc-index.erb" href="#doc-index.erb"><tt>doc/index.erb</tt></a></li><li><a id="rev:doc-intro.erb" href="#doc-intro.erb"><tt>doc/intro.erb</tt></a></li><li><a id="rev:doc-setup.erb" href="#doc-setup.erb"><tt>doc/setup.erb</tt></a></li><li><a id="rev:doc-theory.erb" href="#doc-theory.erb"><tt>doc/theory.erb</tt></a></li><li><a id="rev:doc-usage.erb" href="#doc-usage.erb"><tt>doc/usage.erb</tt></a></li><li><a id="rev:doc-history.erb" href="#doc-history.erb"><tt>doc/history.erb</tt></a></li></ul></li></ul></li><li>3.3.4&nbsp;&nbsp;<a id="rev:Implement-your-project" href="#Implement-your-project">Implement your project</a><ul><li><a id="rev:Goodbye-LOAD_PATH-hello-require" href="#Goodbye-LOAD_PATH-hello-require">Goodbye <code class="code"><span style="color:#d70;font-weight:bold">$LOAD_PATH</span></code>, hello <code class="code">require()</code></a></li></ul></li><li>3.3.5&nbsp;&nbsp;<a id="rev:Test-your-project" href="#Test-your-project">Test your project</a><ul><li><a id="rev:Units-and-tests" href="#Units-and-tests">Units and tests</a></li><li><a id="rev:Test-execution" href="#Test-execution">Test execution</a></li><li><a id="rev:Helper-libraries" href="#Helper-libraries">Helper libraries</a></li></ul></li><li>3.3.6&nbsp;&nbsp;<a id="rev:Publish-your-project" href="#Publish-your-project">Publish your project</a><ul><li>3.3.6.1&nbsp;&nbsp;<a id="rev:Build-a-RubyGem" href="#Build-a-RubyGem">Build a RubyGem</a></li><li>3.3.6.2&nbsp;&nbsp;<a id="rev:Publish-a-RubyGem" href="#Publish-a-RubyGem">Publish a RubyGem</a></li><li>3.3.6.3&nbsp;&nbsp;<a id="rev:Announce-a-release" href="#Announce-a-release">Announce a release</a><ul><li><a id="rev:Login-information" href="#Login-information">Login information</a></li><li>3.3.6.3.1&nbsp;&nbsp;<a id="rev:Manual-release-announcement" href="#Manual-release-announcement">Manual release announcement</a></li></ul></li><li>3.3.6.4&nbsp;&nbsp;<a id="rev:Publish-the-documentation" href="#Publish-the-documentation">Publish the documentation</a></li></ul></li></ul></li></ul></li><li>4&nbsp;&nbsp;<a id="rev:history" href="#history">History</a><ul><li>4.1&nbsp;&nbsp;<a id="rev:Version-0.2.0-2009-01-25" href="#Version-0.2.0-2009-01-25">Version 0.2.0 (2009-01-25)</a><ul><li><a id="rev:Contributor-kudos" href="#Contributor-kudos">Contributor kudos</a></li><li><a id="rev:New-features" href="#New-features">New features</a></li><li><a id="rev:Bug-fixes" href="#Bug-fixes">Bug fixes</a></li><li><a id="rev:Housekeeping" href="#Housekeeping">Housekeeping</a></li></ul></li><li>4.1&nbsp;&nbsp;<a id="rev:Version-0.1.0-2009-01-13" href="#Version-0.1.0-2009-01-13">Version 0.1.0 (2009-01-13)</a><ul><li><a id="rev:New-features-608879868" href="#New-features-608879868">New features</a></li><li><a id="rev:Bug-fixes-608886358" href="#Bug-fixes-608886358">Bug fixes</a></li></ul></li><li>4.1&nbsp;&nbsp;<a id="rev:Version-0.0.1-2009-01-13" href="#Version-0.0.1-2009-01-13">Version 0.0.1 (2009-01-13)</a><ul><li><a id="rev:Contributor-kudos-608900438" href="#Contributor-kudos-608900438">Contributor kudos</a></li><li><a id="rev:Bug-fixes-608905168" href="#Bug-fixes-608905168">Bug fixes</a></li><li><a id="rev:Housekeeping-608918928" href="#Housekeeping-608918928">Housekeeping</a></li></ul></li><li>4.1&nbsp;&nbsp;<a id="rev:Version-0.0.0-2009-01-13" href="#Version-0.0.0-2009-01-13">Version 0.0.0 (2009-01-13)</a></li></ul></li>
667
667
 
668
668
  </ul>
669
669
  </div>
@@ -818,8 +818,6 @@
818
818
  <p>The &#8220;inochi.png&#8221; image and its &#8220;inochi.svg&#8221; source utilize the <a href='http://openclipart.org/media/files/Peileppe/8978'>&#8220;3 flowers&#8221;</a> graphic, which was created and released into the public domain by <a href='http://openclipart.org/media/people/Peileppe'>Peileppe Production</a> on June 25, 2008.</p></div>
819
819
  </div></p></div>
820
820
  </div>
821
-
822
-
823
821
  <div class="chapter">
824
822
  <a name="Setup"/><div class="nav" id="Setup"><a title="Reverse jump to listing" href="#rev:Setup">&equiv;</a><a title="Jump to previous segment" href="#Credits">&#x25B3;</a><a title="Jump to next segment" href="#Requirements">&#x25BD;</a><a title="Jump to this segment" href="#Setup">&#x25CE;</a></div>
825
823
  <h1 class="title">
@@ -854,8 +852,8 @@
854
852
  <p>If the installation was successful, you will see output like this:</p>
855
853
 
856
854
  <p><pre>project: Inochi
857
- version: 0.1.0
858
- release: 2009-01-19
855
+ version: 0.2.0
856
+ release: 2009-01-25
859
857
  website: http://snk.tuxfamily.org/lib/inochi
860
858
  install: /home/sun/src/inochi</pre></p>
861
859
 
@@ -925,7 +923,13 @@ install: /home/sun/src/inochi</pre></p>
925
923
 
926
924
  <p><pre>Inochi - Gives life to RubyGems-based software
927
925
 
928
- Progress indicators:
926
+ Generates a project scaffold using the given information.
927
+
928
+ Existing files are backed up and NOT overwritten. It is your
929
+ responsibility to merge changes between the existing files and
930
+ the newly generated files. See the --merge option for details.
931
+
932
+ This tool announces its progress as it runs, using these indicators:
929
933
 
930
934
  create: A file is being created because it does not exist.
931
935
 
@@ -939,7 +943,19 @@ Progress indicators:
939
943
 
940
944
  Usage:
941
945
 
942
- inochi [Option...] ModuleName
946
+ inochi [Options] ProjectName [ProgramName]
947
+
948
+
949
+ ProjectName: Name of your project, which will be normalized
950
+ into the naame of a Ruby module that will serve
951
+ as a namespace for all code in your project.
952
+
953
+ ProgramName: (Optional) Name of the main project executable,
954
+ which also serves as the name of the generated
955
+ project directory and the main project library.
956
+
957
+
958
+ Options:
943
959
 
944
960
  --merger, -m &lt;s&gt;: A command that invokes a text merging tool with three
945
961
  arguments: (1) old file, (2) new file, (3) output file.
@@ -955,7 +971,7 @@ Usage:
955
971
  <a name="Merging-files-with-kdiff3"/><div class="nav" id="Merging-files-with-kdiff3"><a title="Reverse jump to listing" href="#rev:Merging-files-with-kdiff3">&equiv;</a><a title="Jump to previous segment" href="#Command-line-interface">&#x25B3;</a><a title="Jump to next segment" href="#Ruby-library-interface">&#x25BD;</a><a title="Jump to this segment" href="#Merging-files-with-kdiff3">&#x25CE;</a></div>
956
972
  <p class="title">Tip 1.&nbsp;&nbsp;Merging files with <strong>kdiff3</strong></p>
957
973
  <div class="content">
958
- <img class="icon" src="&icon_tip;" alt="tip"/>
974
+ <img class="icon" alt="tip" src="&icon_tip;"/>
959
975
  <p>Instead of merging files by hand, you can transfer wanted changes between files semi-automatically using <a href='http://kdiff3.sourceforge.net'>kdiff3</a>. Simply follow these instructions:</p>
960
976
 
961
977
  <ol>
@@ -973,7 +989,7 @@ shift
973
989
  output_file=$1
974
990
  shift
975
991
 
976
- kdiff3 --auto &quot;$old_file&quot; &quot;$new_file&quot; --output &quot;$output_file&quot;</pre>
992
+ kdiff3 --merge &quot;$old_file&quot; &quot;$new_file&quot; --output &quot;$output_file&quot;</pre>
977
993
  </li>
978
994
 
979
995
  <li>
@@ -1072,7 +1088,7 @@ kdiff3 --auto &quot;$old_file&quot; &quot;$new_file&quot; --output &quot;$output
1072
1088
 
1073
1089
  <p><em>However</em>, you must go to work the next morning, so there isn&#8217;t much time. What can you do? Let&#8217;s see how <strong>Inochi</strong> can help us meet this challenge.</p></div>
1074
1090
  </div> <div class="section">
1075
- <a name="Generate-your-project"/><div class="nav" id="Generate-your-project"><a title="Reverse jump to listing" href="#rev:Generate-your-project">&equiv;</a><a title="Jump to previous segment" href="#Have-a-brilliant-idea">&#x25B3;</a><a title="Jump to next segment" href="#Configure-your-project">&#x25BD;</a><a title="Jump to this segment" href="#Generate-your-project">&#x25CE;</a></div>
1091
+ <a name="Generate-your-project"/><div class="nav" id="Generate-your-project"><a title="Reverse jump to listing" href="#rev:Generate-your-project">&equiv;</a><a title="Jump to previous segment" href="#Have-a-brilliant-idea">&#x25B3;</a><a title="Jump to next segment" href="#View-Rake-tasks">&#x25BD;</a><a title="Jump to this segment" href="#Generate-your-project">&#x25CE;</a></div>
1076
1092
  <h3 class="title">
1077
1093
  3.3.2&nbsp;&nbsp;Generate your project
1078
1094
  </h3>
@@ -1083,6 +1099,7 @@ kdiff3 --auto &quot;$old_file&quot; &quot;$new_file&quot; --output &quot;$output
1083
1099
  create word_count/Rakefile
1084
1100
  create word_count/bin/word_count
1085
1101
  create word_count/lib/word_count.rb
1102
+ create word_count/test/word_count.rb
1086
1103
  create word_count/doc/index.erb
1087
1104
  create word_count/doc/intro.erb
1088
1105
  create word_count/doc/setup.erb
@@ -1095,10 +1112,11 @@ kdiff3 --auto &quot;$old_file&quot; &quot;$new_file&quot; --output &quot;$output
1095
1112
 
1096
1113
  <p><pre># cd word_count</pre></p>
1097
1114
 
1098
- <p>View the available Rake tasks:</p>
1099
-
1100
- <p><pre># rake -T
1101
- (in /tmp/Inochi20090119-28736-efadjc-0/word_count)
1115
+ <p><div class="paragraph">
1116
+ <a name="View-Rake-tasks"/><div class="nav" id="View-Rake-tasks"><a title="Reverse jump to listing" href="#rev:View-Rake-tasks">&equiv;</a><a title="Jump to previous segment" href="#Generate-your-project">&#x25B3;</a><a title="Jump to next segment" href="#Run-unit-tests">&#x25BD;</a><a title="Jump to this segment" href="#View-Rake-tasks">&#x25CE;</a></div>
1117
+ <p class="title">View Rake tasks</p>
1118
+ <div class="content"><p><pre># rake -T
1119
+ (in /tmp/Inochi20090125-24483-1xmgxqy-0/word_count)
1102
1120
  rake ann # Build all release announcements.
1103
1121
  rake ann:feed # Build RSS announcement: doc/ann.xml
1104
1122
  rake ann:html # Build HTML announcement: ANN.html
@@ -1117,12 +1135,25 @@ rake pub:ann:raa # Announce to RAA (Ruby Application Archive).
1117
1135
  rake pub:ann:talk # Announce to ruby-talk mailing list.
1118
1136
  rake pub:doc # Publish documentation to project website.
1119
1137
  rake pub:pak # Publish release packages to RubyForge.
1120
- </pre></p>
1121
-
1122
- <p>Try the main project executable:</p>
1123
-
1124
- <p><pre># ruby bin/word_count
1125
- Command-line options: {:help=&gt;false, :manual=&gt;false, :version=&gt;false}
1138
+ rake test # Run all unit tests.
1139
+ </pre></p></div>
1140
+ </div> <div class="paragraph">
1141
+ <a name="Run-unit-tests"/><div class="nav" id="Run-unit-tests"><a title="Reverse jump to listing" href="#rev:Run-unit-tests">&equiv;</a><a title="Jump to previous segment" href="#View-Rake-tasks">&#x25B3;</a><a title="Jump to next segment" href="#Run-project-executable">&#x25BD;</a><a title="Jump to this segment" href="#Run-unit-tests">&#x25CE;</a></div>
1142
+ <p class="title">Run unit tests</p>
1143
+ <div class="content"><p><pre># rake test
1144
+ (in /tmp/Inochi20090125-24483-1xmgxqy-0/word_count)
1145
+ Loaded suite word_count
1146
+ Started
1147
+ .
1148
+ Finished in 0.001064 seconds.
1149
+
1150
+ 1 tests, 23 assertions, 0 failures, 0 errors, 0 skips
1151
+ </pre></p></div>
1152
+ </div> <div class="paragraph">
1153
+ <a name="Run-project-executable"/><div class="nav" id="Run-project-executable"><a title="Reverse jump to listing" href="#rev:Run-project-executable">&equiv;</a><a title="Jump to previous segment" href="#Run-unit-tests">&#x25B3;</a><a title="Jump to next segment" href="#Show-user-manual">&#x25BD;</a><a title="Jump to this segment" href="#Run-project-executable">&#x25CE;</a></div>
1154
+ <p class="title">Run project executable</p>
1155
+ <div class="content"><p><pre># ruby bin/word_count
1156
+ Command-line options: {:manual=&gt;false, :version=&gt;false, :help=&gt;false}
1126
1157
  Command-line arguments: []
1127
1158
  </pre></p>
1128
1159
 
@@ -1133,9 +1164,20 @@ WordCount - TODO: put a single line description of your project here.
1133
1164
 
1134
1165
  TODO: Explain the command-line usage of this program here.
1135
1166
 
1167
+
1136
1168
  Usage:
1137
1169
 
1138
- word_count [Option...] Arg1 Arg2 Arg3...
1170
+ word_count [Options] Param1 Param2 Param3...
1171
+
1172
+
1173
+ Param1: Description for the first parameter.
1174
+
1175
+ Param2: Description for the second parameter.
1176
+
1177
+ Param3: Description for the third parameter.
1178
+
1179
+
1180
+ Options:
1139
1181
 
1140
1182
  --manual, -m: Show the user manual
1141
1183
  --version, -v: Print version and exit
@@ -1147,20 +1189,25 @@ Usage:
1147
1189
  <p><pre># ruby bin/word_count --version
1148
1190
  project: WordCount
1149
1191
  version: 0.0.0
1150
- release: 2009-01-19
1192
+ release: 2009-01-25
1151
1193
  website: http://word_count.rubyforge.org
1152
- install: /tmp/Inochi20090119-28736-efadjc-0/word_count
1153
- </pre></p>
1194
+ install: /tmp/Inochi20090125-24483-1xmgxqy-0/word_count
1195
+ </pre></p></div>
1196
+ </div> <div class="paragraph">
1197
+ <a name="Show-user-manual"/><div class="nav" id="Show-user-manual"><a title="Reverse jump to listing" href="#rev:Show-user-manual">&equiv;</a><a title="Jump to previous segment" href="#Run-project-executable">&#x25B3;</a><a title="Jump to next segment" href="#Configure-your-project">&#x25BD;</a><a title="Jump to this segment" href="#Show-user-manual">&#x25CE;</a></div>
1198
+ <p class="title">Show user manual</p>
1199
+ <div class="content"><p>Build the user manual (please disregard any &#8220;unclosed span&#8221; warnings):</p>
1154
1200
 
1155
- <p>See the user manual:</p>
1201
+ <p><pre># rake doc:man</pre></p>
1156
1202
 
1157
- <p><pre># rake doc:man 2&gt;/dev/null
1203
+ <p>Launch the user manual:</p>
1158
1204
 
1159
- # ruby bin/word_count --manual</pre></p>
1205
+ <p><pre># ruby bin/word_count --manual</pre></p>
1160
1206
 
1161
1207
  <p>The manual will now appear in your default web browser.</p></div>
1208
+ </div></p></div>
1162
1209
  </div> <div class="section">
1163
- <a name="Configure-your-project"/><div class="nav" id="Configure-your-project"><a title="Reverse jump to listing" href="#rev:Configure-your-project">&equiv;</a><a title="Jump to previous segment" href="#Generate-your-project">&#x25B3;</a><a title="Jump to next segment" href="#Project-information">&#x25BD;</a><a title="Jump to this segment" href="#Configure-your-project">&#x25CE;</a></div>
1210
+ <a name="Configure-your-project"/><div class="nav" id="Configure-your-project"><a title="Reverse jump to listing" href="#rev:Configure-your-project">&equiv;</a><a title="Jump to previous segment" href="#Show-user-manual">&#x25B3;</a><a title="Jump to next segment" href="#Project-information">&#x25BD;</a><a title="Jump to this segment" href="#Configure-your-project">&#x25CE;</a></div>
1164
1211
  <h3 class="title">
1165
1212
  3.3.3&nbsp;&nbsp;Configure your project
1166
1213
  </h3>
@@ -1197,7 +1244,7 @@ require <span style="background-color:#fff0f0;color:#D20"><span style="color:#71
1197
1244
  <span style="color:#036;font-weight:bold">Inochi</span>.init <span style="color:#A60">:WordCount</span>,
1198
1245
  <span style="color:#A60">:project</span> =&gt; <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">WordCount</span><span style="color:#710">'</span></span>,
1199
1246
  <span style="color:#A60">:version</span> =&gt; <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">0.0.0</span><span style="color:#710">'</span></span>,
1200
- <span style="color:#A60">:release</span> =&gt; <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">2009-01-19</span><span style="color:#710">'</span></span>,
1247
+ <span style="color:#A60">:release</span> =&gt; <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">2009-01-25</span><span style="color:#710">'</span></span>,
1201
1248
  <span style="color:#A60">:website</span> =&gt; <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">http://word_count.rubyforge.org</span><span style="color:#710">'</span></span>,
1202
1249
  <span style="color:#A60">:tagline</span> =&gt; <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">TODO: put a single line description of your project here.</span><span style="color:#710">'</span></span>,
1203
1250
  <span style="color:#A60">:require</span> =&gt; {
@@ -1223,9 +1270,20 @@ require <span style="background-color:#fff0f0;color:#D20"><span style="color:#71
1223
1270
  <span style="color:#666">#</span>
1224
1271
  <span style="color:#666"># TODO: Explain the command-line usage of this program here.</span>
1225
1272
  <span style="color:#666">#</span>
1273
+ <span style="color:#666">#</span>
1226
1274
  <span style="color:#666"># Usage:</span>
1227
1275
  <span style="color:#666">#</span>
1228
- <span style="color:#666"># word_count [Option...] Arg1 Arg2 Arg3...</span>
1276
+ <span style="color:#666"># word_count [Options] Param1 Param2 Param3...</span>
1277
+ <span style="color:#666">#</span>
1278
+ <span style="color:#666">#</span>
1279
+ <span style="color:#666"># Param1: Description for the first parameter.</span>
1280
+ <span style="color:#666">#</span>
1281
+ <span style="color:#666"># Param2: Description for the second parameter.</span>
1282
+ <span style="color:#666">#</span>
1283
+ <span style="color:#666"># Param3: Description for the third parameter.</span>
1284
+ <span style="color:#666">#</span>
1285
+ <span style="color:#666">#</span>
1286
+ <span style="color:#666"># Options:</span>
1229
1287
  <span style="color:#666">#</span>
1230
1288
 
1231
1289
  require <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">rubygems</span><span style="color:#710">'</span></span>
@@ -1292,7 +1350,7 @@ require <span style="background-color:#fff0f0;color:#D20"><span style="color:#71
1292
1350
  <span style="background:#eee"><span style="font-weight:bold;color:#888">&lt;%</span> project_summary <span style="color:#080;font-weight:bold">do</span> <span style="font-weight:bold;color:#888">%&gt;</span></span>
1293
1351
  <span style="color:#F00;background-color:#FAA">&gt;</span> TODO: explain the purpose of your project
1294
1352
 
1295
- ****<span style="background:#eee"><span style="font-weight:bold;color:#888">&lt;%=</span> <span style="color:#d70;font-weight:bold">$project</span> <span style="font-weight:bold;color:#888">%&gt;</span></span>**** is a __________ that __________.
1353
+ **<span style="background:#eee"><span style="font-weight:bold;color:#888">&lt;%=</span> <span style="color:#d70;font-weight:bold">$project</span> <span style="font-weight:bold;color:#888">%&gt;</span></span>** is a __________ that __________.
1296
1354
  <span style="background:#eee"><span style="font-weight:bold;color:#888">&lt;%</span> <span style="color:#080;font-weight:bold">end</span> <span style="font-weight:bold;color:#888">%&gt;</span></span>
1297
1355
 
1298
1356
  <span style="color:#F00;background-color:#FAA">&gt;</span> TODO: explain why your project is important
@@ -1379,9 +1437,9 @@ require <span style="background-color:#fff0f0;color:#D20"><span style="color:#71
1379
1437
  <span style="background:#eee"><span style="font-weight:bold;color:#888">&lt;%</span> section <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">&quot;</span><span style="">Requirements</span><span style="color:#710">&quot;</span></span> <span style="color:#080;font-weight:bold">do</span> <span style="font-weight:bold;color:#888">%&gt;</span></span>
1380
1438
  Your system needs the following software to run **<span style="background:#eee"><span style="font-weight:bold;color:#888">&lt;%=</span> <span style="color:#d70;font-weight:bold">$project</span> <span style="font-weight:bold;color:#888">%&gt;</span></span>**.
1381
1439
 
1382
- | Software | Description | Notes |
1383
- | -------- | ----------- | ----- |
1384
- | [Ruby](http://ruby-lang.org) | Ruby language interpreter | Version 1.8.7 is required. |
1440
+ | Software | Description | Notes |
1441
+ | -------- | ----------- | ----- |
1442
+ | [Ruby](http://ruby-lang.org) | Ruby language interpreter | Version 1.8.7 is required. |
1385
1443
  | [RubyGems](http://rubygems.org) | Ruby packaging system | Version 1.3.1 is required. |
1386
1444
  <span style="background:#eee"><span style="font-weight:bold;color:#888">&lt;%</span> <span style="color:#080;font-weight:bold">end</span> <span style="font-weight:bold;color:#888">%&gt;</span></span>
1387
1445
 
@@ -1450,7 +1508,7 @@ require <span style="background-color:#fff0f0;color:#D20"><span style="color:#71
1450
1508
 
1451
1509
  You will see this output:
1452
1510
 
1453
- <span style="color:#070">&lt;pre&gt;</span><span style="background:#eee"><span style="font-weight:bold;color:#888">&lt;%=</span> verbatim <span style="background-color:#f0fff0;color:#2B2"><span style="color:#161">`</span><span style="">ruby bin/</span><span style="background:#eee"><span style="font-weight:bold;color:#888">#{</span><span style="color:#d70;font-weight:bold">$program</span><span style="font-weight:bold;color:#888">}</span></span><span style=""> --help</span><span style="color:#161">`</span></span> <span style="font-weight:bold;color:#888">%&gt;</span></span><span style="color:#070">&lt;/pre&gt;</span>
1511
+ <span style="color:#070">&lt;pre&gt;</span><span style="background:#eee"><span style="font-weight:bold;color:#888">&lt;%=</span> verbatim <span style="background-color:#f0fff0;color:#2B2"><span style="color:#161">`</span><span style="">ruby bin/</span><span style="background:#eee"><span style="font-weight:bold;color:#888">#{</span><span style="color:#d70;font-weight:bold">$program_name</span><span style="font-weight:bold;color:#888">}</span></span><span style=""> --help</span><span style="color:#161">`</span></span> <span style="font-weight:bold;color:#888">%&gt;</span></span><span style="color:#070">&lt;/pre&gt;</span>
1454
1512
 
1455
1513
  <span style="color:#F00;background-color:#FAA">&gt;</span> TODO: explain the command-line arguments
1456
1514
  <span style="background:#eee"><span style="font-weight:bold;color:#888">&lt;%</span> <span style="color:#080;font-weight:bold">end</span> <span style="font-weight:bold;color:#888">%&gt;</span></span>
@@ -1479,7 +1537,7 @@ require <span style="background-color:#fff0f0;color:#D20"><span style="color:#71
1479
1537
  <span style="color:#F00;background-color:#FAA">&gt;</span> TODO: put release notes for your project
1480
1538
  <span style="color:#F00;background-color:#FAA">&gt;</span> here -- newest first, oldest last.
1481
1539
 
1482
- <span style="background:#eee"><span style="font-weight:bold;color:#888">&lt;%</span> section <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">&quot;</span><span style="">Version 0.0.0 (2009-01-19)</span><span style="color:#710">&quot;</span></span> <span style="color:#080;font-weight:bold">do</span> <span style="font-weight:bold;color:#888">%&gt;</span></span>
1540
+ <span style="background:#eee"><span style="font-weight:bold;color:#888">&lt;%</span> section <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">&quot;</span><span style="">Version 0.0.0 (2009-01-25)</span><span style="color:#710">&quot;</span></span> <span style="color:#080;font-weight:bold">do</span> <span style="font-weight:bold;color:#888">%&gt;</span></span>
1483
1541
  <span style="color:#F00;background-color:#FAA">&gt;</span> TODO: write a short summary of the changes in this release
1484
1542
 
1485
1543
  This release changes __________, adds __________, and fixes __________.
@@ -1546,7 +1604,7 @@ require <span style="background-color:#fff0f0;color:#D20"><span style="color:#71
1546
1604
  <h3 class="title">
1547
1605
  3.3.4&nbsp;&nbsp;Implement your project
1548
1606
  </h3>
1549
- <div class="content"><p>Add the following code to the bottom of the main project library:</p>
1607
+ <div class="content"><p>Add the following code to the bottom of <tt>lib/word_count.rb</tt>, the main project library:</p>
1550
1608
 
1551
1609
  <p><pre class="code"><span style="color:#080;font-weight:bold">module</span> <span style="color:#B06;font-weight:bold">WordCount</span>
1552
1610
  <span style="color:#666"># Returns the number of words in the given input.</span>
@@ -1556,13 +1614,45 @@ require <span style="background-color:#fff0f0;color:#D20"><span style="color:#71
1556
1614
  <span style="color:#080;font-weight:bold">end</span>
1557
1615
  </pre></p>
1558
1616
 
1559
- <p>Add the following code to the bottom of the main project executable:</p>
1617
+ <p>Add the following code to the bottom of <tt>bin/word_count</tt>, the main project executable:</p>
1560
1618
 
1561
1619
  <p><pre class="code">input = <span style="color:#038;font-weight:bold">ARGF</span>.read
1562
1620
  total = <span style="color:#036;font-weight:bold">WordCount</span>.count(input)
1563
1621
  puts <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">&quot;</span><span style="">There are </span><span style="background:#eee"><span style="font-weight:bold;color:#888">#{</span>total<span style="font-weight:bold;color:#888">}</span></span><span style=""> words in the input.</span><span style="color:#710">&quot;</span></span>
1564
1622
  </pre></p>
1565
1623
 
1624
+ <p>Add the following code to the bottom of <tt>test/word_count.rb</tt>, a unit test for the main project library:</p>
1625
+
1626
+ <p><pre class="code">describe <span style="color:#036;font-weight:bold">WordCount</span> <span style="color:#080;font-weight:bold">do</span>
1627
+ it <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">handles empty input</span><span style="color:#710">'</span></span> <span style="color:#080;font-weight:bold">do</span>
1628
+ <span style="color:#036;font-weight:bold">WordCount</span>.count(<span style="color:#038;font-weight:bold">nil</span>).must_equal(<span style="color:#00D;font-weight:bold">0</span>)
1629
+ <span style="color:#036;font-weight:bold">WordCount</span>.count(<span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="color:#710">'</span></span>).must_equal(<span style="color:#00D;font-weight:bold">0</span>)
1630
+ <span style="color:#036;font-weight:bold">WordCount</span>.count(<span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style=""> </span><span style="color:#710">'</span></span>).must_equal(<span style="color:#00D;font-weight:bold">0</span>)
1631
+ <span style="color:#080;font-weight:bold">end</span>
1632
+
1633
+ it <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">handles single words</span><span style="color:#710">'</span></span> <span style="color:#080;font-weight:bold">do</span>
1634
+ <span style="color:#036;font-weight:bold">WordCount</span>.count(<span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">a</span><span style="color:#710">'</span></span>).must_equal(<span style="color:#00D;font-weight:bold">1</span>)
1635
+ <span style="color:#036;font-weight:bold">WordCount</span>.count(<span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">foo</span><span style="color:#710">'</span></span>).must_equal(<span style="color:#00D;font-weight:bold">1</span>)
1636
+ <span style="color:#036;font-weight:bold">WordCount</span>.count(<span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">bar</span><span style="color:#710">'</span></span>).must_equal(<span style="color:#00D;font-weight:bold">1</span>)
1637
+ <span style="color:#080;font-weight:bold">end</span>
1638
+
1639
+ it <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">handles multiple words</span><span style="color:#710">'</span></span> <span style="color:#080;font-weight:bold">do</span>
1640
+ <span style="color:#036;font-weight:bold">WordCount</span>.count(<span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">a b</span><span style="color:#710">'</span></span>).must_equal(<span style="color:#00D;font-weight:bold">2</span>)
1641
+ <span style="color:#036;font-weight:bold">WordCount</span>.count(<span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">a-b</span><span style="color:#710">'</span></span>).must_equal(<span style="color:#00D;font-weight:bold">2</span>)
1642
+ <span style="color:#036;font-weight:bold">WordCount</span>.count(<span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">a/b</span><span style="color:#710">'</span></span>).must_equal(<span style="color:#00D;font-weight:bold">2</span>)
1643
+ <span style="color:#080;font-weight:bold">end</span>
1644
+
1645
+ it <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">ignores punctuation and space</span><span style="color:#710">'</span></span> <span style="color:#080;font-weight:bold">do</span>
1646
+ <span style="color:#036;font-weight:bold">WordCount</span>.count(<span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">!</span><span style="color:#710">'</span></span>).must_equal(<span style="color:#00D;font-weight:bold">0</span>)
1647
+ <span style="color:#036;font-weight:bold">WordCount</span>.count(<span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">! @ # % #!@#</span><span style="color:#710">'</span></span>).must_equal(<span style="color:#00D;font-weight:bold">0</span>)
1648
+ <span style="color:#036;font-weight:bold">WordCount</span>.count(<span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style=""> !</span><span style="color:#710">'</span></span>).must_equal(<span style="color:#00D;font-weight:bold">0</span>)
1649
+ <span style="color:#036;font-weight:bold">WordCount</span>.count(<span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">! </span><span style="color:#710">'</span></span>).must_equal(<span style="color:#00D;font-weight:bold">0</span>)
1650
+ <span style="color:#036;font-weight:bold">WordCount</span>.count(<span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style=""> ! </span><span style="color:#710">'</span></span>).must_equal(<span style="color:#00D;font-weight:bold">0</span>)
1651
+ <span style="color:#036;font-weight:bold">WordCount</span>.count(<span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style=""> ! </span><span style="color:#710">'</span></span>).must_equal(<span style="color:#00D;font-weight:bold">0</span>)
1652
+ <span style="color:#080;font-weight:bold">end</span>
1653
+ <span style="color:#080;font-weight:bold">end</span>
1654
+ </pre></p>
1655
+
1566
1656
  <p><div class="paragraph">
1567
1657
  <a name="Goodbye-LOAD_PATH-hello-require"/><div class="nav" id="Goodbye-LOAD_PATH-hello-require"><a title="Reverse jump to listing" href="#rev:Goodbye-LOAD_PATH-hello-require">&equiv;</a><a title="Jump to previous segment" href="#Implement-your-project">&#x25B3;</a><a title="Jump to next segment" href="#Test-your-project">&#x25BD;</a><a title="Jump to this segment" href="#Goodbye-LOAD_PATH-hello-require">&#x25CE;</a></div>
1568
1658
  <p class="title">Goodbye <code class="code"><span style="color:#d70;font-weight:bold">$LOAD_PATH</span></code>, hello <code class="code">require()</code></p>
@@ -1578,19 +1668,58 @@ puts <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">
1578
1668
  <p>Regardless of whether a sub-library is used within your project itself or from within an external application, we always <code class="code">require()</code> the sub-library using the same canonical path.</p></div>
1579
1669
  </div></p></div>
1580
1670
  </div> <div class="section">
1581
- <a name="Test-your-project"/><div class="nav" id="Test-your-project"><a title="Reverse jump to listing" href="#rev:Test-your-project">&equiv;</a><a title="Jump to previous segment" href="#Goodbye-LOAD_PATH-hello-require">&#x25B3;</a><a title="Jump to next segment" href="#Publish-your-project">&#x25BD;</a><a title="Jump to this segment" href="#Test-your-project">&#x25CE;</a></div>
1671
+ <a name="Test-your-project"/><div class="nav" id="Test-your-project"><a title="Reverse jump to listing" href="#rev:Test-your-project">&equiv;</a><a title="Jump to previous segment" href="#Goodbye-LOAD_PATH-hello-require">&#x25B3;</a><a title="Jump to next segment" href="#Units-and-tests">&#x25BD;</a><a title="Jump to this segment" href="#Test-your-project">&#x25CE;</a></div>
1582
1672
  <h3 class="title">
1583
1673
  3.3.5&nbsp;&nbsp;Test your project
1584
1674
  </h3>
1585
- <div class="content"><blockquote>
1586
- <p>TODO: show how to write a unit test for the code</p>
1587
- </blockquote>
1675
+ <div class="content"><p>To reduce the amount of code you have to write, <strong>Inochi</strong> defines the following convention for unit tests.</p>
1588
1676
 
1589
- <blockquote>
1590
- <p>TODO: integrate minitest tasks into Inochi.rake()</p>
1591
- </blockquote></div>
1677
+ <p><div class="paragraph">
1678
+ <a name="Units-and-tests"/><div class="nav" id="Units-and-tests"><a title="Reverse jump to listing" href="#rev:Units-and-tests">&equiv;</a><a title="Jump to previous segment" href="#Test-your-project">&#x25B3;</a><a title="Jump to next segment" href="#Test-execution">&#x25BD;</a><a title="Jump to this segment" href="#Units-and-tests">&#x25CE;</a></div>
1679
+ <p class="title">Units and tests</p>
1680
+ <div class="content"><p>Every Ruby source file in your project&#8217;s <tt>lib/</tt> directory is considered to be a <strong>unit</strong>. Likewise, every Ruby source file in your project&#8217;s <tt>test/</tt> is considered to be a <strong>test</strong>.</p>
1681
+
1682
+ <p>As a result, your project&#8217;s <tt>test/</tt> directory structure <em>mirrors</em> the structure of your project&#8217;s <tt>lib/</tt> directory. For example, if your project has a <tt>lib/foo/bar.rb</tt> unit, then <tt>test/foo/bar.rb</tt> would be its the corresponding test.</p></div>
1683
+ </div> <div class="paragraph">
1684
+ <a name="Test-execution"/><div class="nav" id="Test-execution"><a title="Reverse jump to listing" href="#rev:Test-execution">&equiv;</a><a title="Jump to previous segment" href="#Units-and-tests">&#x25B3;</a><a title="Jump to next segment" href="#Helper-libraries">&#x25BD;</a><a title="Jump to this segment" href="#Test-execution">&#x25CE;</a></div>
1685
+ <p class="title">Test execution</p>
1686
+ <div class="content"><p><pre>rake test</pre></p>
1687
+
1688
+ <p>The above command begins the testing process, during which:</p>
1689
+
1690
+ <ul>
1691
+ <li>
1692
+ <p>Tests which lack corresponding units are <em>skipped</em> and not executed. A message specifying which test file was skipped is printed to the standard error stream whenever this occurs.</p>
1693
+ </li>
1694
+
1695
+ <li>
1696
+ <p>Before a test is executed, its corresponding unit is automatically loaded into the Ruby environment using <code class="code">require()</code>.</p>
1697
+ </li>
1698
+ </ul>
1699
+
1700
+ <p>As for the details of test execution:</p>
1701
+
1702
+ <ul>
1703
+ <li>
1704
+ <p>Tests are executed by the <a href='http://rubyforge.org/projects/bfts/'>minitest</a> library, which allows you to write unit tests in a combination of styles: traditional TDD, modern BDD, alternative rSpec BDD, and mock-based validation styles.</p>
1705
+ </li>
1706
+
1707
+ <li>
1708
+ <p>Within each test, test cases are executed in random order. This is the default behavior of the <a href='http://rubyforge.org/projects/bfts/'>minitest</a> library.</p>
1709
+ </li>
1710
+ </ul></div>
1711
+ </div> <div class="paragraph">
1712
+ <a name="Helper-libraries"/><div class="nav" id="Helper-libraries"><a title="Reverse jump to listing" href="#rev:Helper-libraries">&equiv;</a><a title="Jump to previous segment" href="#Test-execution">&#x25B3;</a><a title="Jump to next segment" href="#Publish-your-project">&#x25BD;</a><a title="Jump to this segment" href="#Helper-libraries">&#x25CE;</a></div>
1713
+ <p class="title">Helper libraries</p>
1714
+ <div class="content"><p>Your project&#8217;s main directory is added to Ruby&#8217;s load path. So if your tests have helper libraries stored in your project&#8217;s <tt>test/</tt> directory, you can load them into your tests by adding a &#8220;test/&#8221; prefix.</p>
1715
+
1716
+ <p>For example, if your <tt>test/foo/bar.rb</tt> test has a <tt>test/foo/qux.rb</tt> helper library, then you would write the following code inside the test to load the helper library:</p>
1717
+
1718
+ <p><pre class="code">require <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">test/foo/qux</span><span style="color:#710">'</span></span>
1719
+ </pre></p></div>
1720
+ </div></p></div>
1592
1721
  </div> <div class="section">
1593
- <a name="Publish-your-project"/><div class="nav" id="Publish-your-project"><a title="Reverse jump to listing" href="#rev:Publish-your-project">&equiv;</a><a title="Jump to previous segment" href="#Test-your-project">&#x25B3;</a><a title="Jump to next segment" href="#Build-a-RubyGem">&#x25BD;</a><a title="Jump to this segment" href="#Publish-your-project">&#x25CE;</a></div>
1722
+ <a name="Publish-your-project"/><div class="nav" id="Publish-your-project"><a title="Reverse jump to listing" href="#rev:Publish-your-project">&equiv;</a><a title="Jump to previous segment" href="#Helper-libraries">&#x25B3;</a><a title="Jump to next segment" href="#Build-a-RubyGem">&#x25BD;</a><a title="Jump to this segment" href="#Publish-your-project">&#x25CE;</a></div>
1594
1723
  <h3 class="title">
1595
1724
  3.3.6&nbsp;&nbsp;Publish your project
1596
1725
  </h3>
@@ -1606,8 +1735,14 @@ puts <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">
1606
1735
  <div class="content"><p>Build a RubyGem by running:</p>
1607
1736
 
1608
1737
  <p><pre># rake pak
1609
- (in /tmp/Inochi20090119-28736-efadjc-0/word_count)
1610
- (in /tmp/Inochi20090119-28736-efadjc-0/word_count)
1738
+ (in /tmp/Inochi20090125-24483-1xmgxqy-0/word_count)
1739
+ (in /tmp/Inochi20090125-24483-1xmgxqy-0/word_count)
1740
+ Loaded suite word_count
1741
+ Started
1742
+ .
1743
+ Finished in 0.001073 seconds.
1744
+
1745
+ 1 tests, 23 assertions, 0 failures, 0 errors, 0 skips
1611
1746
  Successfully built RubyGem
1612
1747
  Name: word_count
1613
1748
  Version: 0.0.0
@@ -1628,7 +1763,7 @@ puts <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">
1628
1763
  <span style="color:#808">bindir</span>: <span style="background-color:#fff0f0;color:#D20">bin</span>
1629
1764
  <span style="color:#808">cert_chain</span>: <span style="background-color:#fff0f0;color:#D20">[]</span>
1630
1765
 
1631
- <span style="color:#808">date</span>: <span style="background-color:#fff0f0;color:#D20">2009-01-19 00:00:00 -08:00</span>
1766
+ <span style="color:#808">date</span>: <span style="background-color:#fff0f0;color:#D20">2009-01-25 00:00:00 -08:00</span>
1632
1767
  <span style="color:#808">default_executable</span>:
1633
1768
  <span style="color:#808">dependencies</span>:
1634
1769
  - <span style="color:#339;font-weight:bold">!ruby/object</span>:<span style="color:#B06;font-weight:bold">Gem::Dependency</span>
@@ -1652,6 +1787,8 @@ puts <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">
1652
1787
  <span style="color:#808">files</span>:
1653
1788
  - <span style="background-color:#fff0f0;color:#D20">lib</span>
1654
1789
  - <span style="background-color:#fff0f0;color:#D20">lib/word_count.rb</span>
1790
+ - <span style="background-color:#fff0f0;color:#D20">test</span>
1791
+ - <span style="background-color:#fff0f0;color:#D20">test/word_count.rb</span>
1655
1792
  - <span style="background-color:#fff0f0;color:#D20">bin</span>
1656
1793
  - <span style="background-color:#fff0f0;color:#D20">bin/word_count</span>
1657
1794
  - <span style="background-color:#fff0f0;color:#D20">Rakefile</span>
@@ -1747,7 +1884,7 @@ puts <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">
1747
1884
  <div class="content"><p>Build release announcements by running:</p>
1748
1885
 
1749
1886
  <p><pre># rake ann
1750
- (in /tmp/Inochi20090119-28736-efadjc-0/word_count)
1887
+ (in /tmp/Inochi20090125-24483-1xmgxqy-0/word_count)
1751
1888
  </pre></p>
1752
1889
 
1753
1890
  <p>This produces the following files in your project directory:</p>
@@ -1776,31 +1913,104 @@ puts <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">
1776
1913
  </div></p></div>
1777
1914
  </div></p></div>
1778
1915
  </div><div class="chapter">
1779
- <a name="history"/><div class="nav" id="history"><a title="Reverse jump to listing" href="#rev:history">&equiv;</a><a title="Jump to previous segment" href="#Publish-the-documentation">&#x25B3;</a><a title="Jump to next segment" href="#Version-0.1.0-2009-01-13">&#x25BD;</a><a title="Jump to this segment" href="#history">&#x25CE;</a></div>
1916
+ <a name="history"/><div class="nav" id="history"><a title="Reverse jump to listing" href="#rev:history">&equiv;</a><a title="Jump to previous segment" href="#Publish-the-documentation">&#x25B3;</a><a title="Jump to next segment" href="#Version-0.2.0-2009-01-25">&#x25BD;</a><a title="Jump to this segment" href="#history">&#x25CE;</a></div>
1780
1917
  <h1 class="title">
1781
1918
  Chapter&nbsp;4
1782
1919
  <br/>
1783
1920
  <big>History</big>
1784
1921
  </h1>
1785
1922
  <div class="content"><p><p><div class="section">
1786
- <a name="Version-0.1.0-2009-01-13"/><div class="nav" id="Version-0.1.0-2009-01-13"><a title="Reverse jump to listing" href="#rev:Version-0.1.0-2009-01-13">&equiv;</a><a title="Jump to previous segment" href="#history">&#x25B3;</a><a title="Jump to next segment" href="#New-features">&#x25BD;</a><a title="Jump to this segment" href="#Version-0.1.0-2009-01-13">&#x25CE;</a></div>
1923
+ <a name="Version-0.2.0-2009-01-25"/><div class="nav" id="Version-0.2.0-2009-01-25"><a title="Reverse jump to listing" href="#rev:Version-0.2.0-2009-01-25">&equiv;</a><a title="Jump to previous segment" href="#history">&#x25B3;</a><a title="Jump to next segment" href="#Contributor-kudos">&#x25BD;</a><a title="Jump to this segment" href="#Version-0.2.0-2009-01-25">&#x25CE;</a></div>
1924
+ <h2 class="title">
1925
+ 4.1&nbsp;&nbsp;Version 0.2.0 (2009-01-25)
1926
+ </h2>
1927
+ <div class="content"><p>This release adds support for unit testing, improves the portability of <strong>Inochi</strong> and configurability of your projects, adds new content to the user manual, and fixes some bugs.</p>
1928
+
1929
+ <p><div class="paragraph">
1930
+ <a name="Contributor-kudos"/><div class="nav" id="Contributor-kudos"><a title="Reverse jump to listing" href="#rev:Contributor-kudos">&equiv;</a><a title="Jump to previous segment" href="#Version-0.2.0-2009-01-25">&#x25B3;</a><a title="Jump to next segment" href="#New-features">&#x25BD;</a><a title="Jump to this segment" href="#Contributor-kudos">&#x25CE;</a></div>
1931
+ <p class="title">Contributor kudos</p>
1932
+ <div class="content"><p>Florian Gilcher patched <strong>Inochi</strong> to:</p>
1933
+
1934
+ <ul>
1935
+ <li>
1936
+ <p>Run on both JRuby and normal Ruby in multiple versions and with different executable names on Windows.</p>
1937
+ </li>
1938
+
1939
+ <li>
1940
+ <p>Allow project authors to be specified by hand instead of always relying on the license file to be in expected form, because his license template doesn&#8217;t follow that form.</p>
1941
+ </li>
1942
+ </ul></div>
1943
+ </div> <div class="paragraph">
1944
+ <a name="New-features"/><div class="nav" id="New-features"><a title="Reverse jump to listing" href="#rev:New-features">&equiv;</a><a title="Jump to previous segment" href="#Contributor-kudos">&#x25B3;</a><a title="Jump to next segment" href="#Bug-fixes">&#x25BD;</a><a title="Jump to this segment" href="#New-features">&#x25CE;</a></div>
1945
+ <p class="title">New features</p>
1946
+ <div class="content"><ul>
1947
+ <li>
1948
+ <p>Added support for unit testing via the <a href='http://rubyforge.org/projects/bfts/'>minitest</a> library. See <a class="xref" href="#Test-your-project">Section 3.3.5. Test your project</a> for documentation.</p>
1949
+
1950
+ <p>Also, in related news, the scaffold generator now emits a default unit test for the main project library.</p>
1951
+ </li>
1952
+
1953
+ <li>
1954
+ <p>Added optional ProgramName parameter to the scaffold generator. This allows you to specify reasonable program names when your project module has a strange capitalization:</p>
1955
+
1956
+ <pre>&gt; inochi ERBook
1957
+ create er_book/LICENSE
1958
+
1959
+ &gt; inochi ERBook erbook
1960
+ create erbook/LICENSE
1961
+
1962
+ &gt; inochi ERBook foobar
1963
+ create foobar/LICENSE</pre>
1964
+ </li>
1965
+
1966
+ <li>
1967
+ <p>Allow project authors to be specified via</p>
1968
+
1969
+ <p><code class="code"><span style="color:#036;font-weight:bold">Inochi</span>.init <span style="color:#A60">:YourProject</span>, <span style="color:#A60">:authors</span> =&gt; ...</code></p>
1970
+ </li>
1971
+ </ul></div>
1972
+ </div> <div class="paragraph">
1973
+ <a name="Bug-fixes"/><div class="nav" id="Bug-fixes"><a title="Reverse jump to listing" href="#rev:Bug-fixes">&equiv;</a><a title="Jump to previous segment" href="#New-features">&#x25B3;</a><a title="Jump to next segment" href="#Housekeeping">&#x25BD;</a><a title="Jump to this segment" href="#Bug-fixes">&#x25CE;</a></div>
1974
+ <p class="title">Bug fixes</p>
1975
+ <div class="content"><ul>
1976
+ <li>
1977
+ <p>Use <code class="code"><span style="color:#036;font-weight:bold">Gem</span>::<span style="color:#036;font-weight:bold">RubyGemsVersion</span></code> instead of a shell command to determine rubygems version for generation of <tt>setup.erb</tt>. (Florian Gilcher)</p>
1978
+ </li>
1979
+
1980
+ <li>
1981
+ <p>Add blank lines between all list items, not just multi-line ones, in the plain-text version of the relase announcement for improved readability.</p>
1982
+ </li>
1983
+
1984
+ <li>
1985
+ <p>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.</p>
1986
+ </li>
1987
+ </ul></div>
1988
+ </div> <div class="paragraph">
1989
+ <a name="Housekeeping"/><div class="nav" id="Housekeeping"><a title="Reverse jump to listing" href="#rev:Housekeeping">&equiv;</a><a title="Jump to previous segment" href="#Bug-fixes">&#x25B3;</a><a title="Jump to next segment" href="#Version-0.1.0-2009-01-13">&#x25BD;</a><a title="Jump to this segment" href="#Housekeeping">&#x25CE;</a></div>
1990
+ <p class="title">Housekeeping</p>
1991
+ <div class="content"><ul>
1992
+ <li>Added unit tests for utility methods provided by the <strong>Inochi</strong> module: project name calculation and CamelCase to snake_case conversion.</li>
1993
+ </ul></div>
1994
+ </div></p></div>
1995
+ </div> <div class="section">
1996
+ <a name="Version-0.1.0-2009-01-13"/><div class="nav" id="Version-0.1.0-2009-01-13"><a title="Reverse jump to listing" href="#rev:Version-0.1.0-2009-01-13">&equiv;</a><a title="Jump to previous segment" href="#Housekeeping">&#x25B3;</a><a title="Jump to next segment" href="#New-features-608879868">&#x25BD;</a><a title="Jump to this segment" href="#Version-0.1.0-2009-01-13">&#x25CE;</a></div>
1787
1997
  <h2 class="title">
1788
1998
  4.1&nbsp;&nbsp;Version 0.1.0 (2009-01-13)
1789
1999
  </h2>
1790
2000
  <div class="content"><p>This release reattempts to fix the <a href='http://www.ruby-forum.com/topic/176173#771281'>circular dependency problem</a> that occurred when installing either <strong>Inochi</strong> or <strong>ERBook</strong>.</p>
1791
2001
 
1792
2002
  <p><div class="paragraph">
1793
- <a name="New-features"/><div class="nav" id="New-features"><a title="Reverse jump to listing" href="#rev:New-features">&equiv;</a><a title="Jump to previous segment" href="#Version-0.1.0-2009-01-13">&#x25B3;</a><a title="Jump to next segment" href="#Bug-fixes">&#x25BD;</a><a title="Jump to this segment" href="#New-features">&#x25CE;</a></div>
2003
+ <a name="New-features-608879868"/><div class="nav" id="New-features-608879868"><a title="Reverse jump to listing" href="#rev:New-features-608879868">&equiv;</a><a title="Jump to previous segment" href="#Version-0.1.0-2009-01-13">&#x25B3;</a><a title="Jump to next segment" href="#Bug-fixes-608886358">&#x25BD;</a><a title="Jump to this segment" href="#New-features-608879868">&#x25CE;</a></div>
1794
2004
  <p class="title">New features</p>
1795
2005
  <div class="content"><ul>
1796
- <li><code class="code"><span style="color:#036;font-weight:bold">Inochi</span>.init()</code> now adds <code class="code"><span style="color:#666">#major()</span></code>, <code class="code"><span style="color:#666">#series()</span></code>, and <code class="code"><span style="color:#666">#requirement()</span></code> instance methods to a project&#8217;s <code class="code"><span style="color:#036;font-weight:bold">VERSION</span></code> constant.</li>
2006
+ <li><code class="code">**<span style="color:#036;font-weight:bold">Inochi</span>**.init()</code> now adds <code class="code"><span style="color:#666">#major()</span></code>, <code class="code"><span style="color:#666">#series()</span></code>, and <code class="code"><span style="color:#666">#requirement()</span></code> instance methods to a project&#8217;s <code class="code"><span style="color:#036;font-weight:bold">VERSION</span></code> constant.</li>
1797
2007
  </ul></div>
1798
2008
  </div> <div class="paragraph">
1799
- <a name="Bug-fixes"/><div class="nav" id="Bug-fixes"><a title="Reverse jump to listing" href="#rev:Bug-fixes">&equiv;</a><a title="Jump to previous segment" href="#New-features">&#x25B3;</a><a title="Jump to next segment" href="#Version-0.0.1-2009-01-13">&#x25BD;</a><a title="Jump to this segment" href="#Bug-fixes">&#x25CE;</a></div>
2009
+ <a name="Bug-fixes-608886358"/><div class="nav" id="Bug-fixes-608886358"><a title="Reverse jump to listing" href="#rev:Bug-fixes-608886358">&equiv;</a><a title="Jump to previous segment" href="#New-features-608879868">&#x25B3;</a><a title="Jump to next segment" href="#Version-0.0.1-2009-01-13">&#x25BD;</a><a title="Jump to this segment" href="#Bug-fixes-608886358">&#x25CE;</a></div>
1800
2010
  <p class="title">Bug fixes</p>
1801
2011
  <div class="content"><ul>
1802
2012
  <li>
1803
- <p>Solved circular dependency problem by making inochi gem not dependent on erbook gem. However, <strong>ERBook</strong> is still required during runtime and is supplied on the <code class="code">gem install</code> command for <strong>Inochi</strong>.</p>
2013
+ <p>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 <code class="code">gem install</code> command for <strong>Inochi</strong>.</p>
1804
2014
 
1805
2015
  <p><a class="xref" href="#Installation">Section 2.2. Installation</a> has been updated accordingly.</p>
1806
2016
  </li>
@@ -1811,20 +2021,20 @@ puts <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">
1811
2021
  </ul></div>
1812
2022
  </div></p></div>
1813
2023
  </div> <div class="section">
1814
- <a name="Version-0.0.1-2009-01-13"/><div class="nav" id="Version-0.0.1-2009-01-13"><a title="Reverse jump to listing" href="#rev:Version-0.0.1-2009-01-13">&equiv;</a><a title="Jump to previous segment" href="#Bug-fixes">&#x25B3;</a><a title="Jump to next segment" href="#Contributor-kudos">&#x25BD;</a><a title="Jump to this segment" href="#Version-0.0.1-2009-01-13">&#x25CE;</a></div>
2024
+ <a name="Version-0.0.1-2009-01-13"/><div class="nav" id="Version-0.0.1-2009-01-13"><a title="Reverse jump to listing" href="#rev:Version-0.0.1-2009-01-13">&equiv;</a><a title="Jump to previous segment" href="#Bug-fixes-608886358">&#x25B3;</a><a title="Jump to next segment" href="#Contributor-kudos-608900438">&#x25BD;</a><a title="Jump to this segment" href="#Version-0.0.1-2009-01-13">&#x25CE;</a></div>
1815
2025
  <h2 class="title">
1816
2026
  4.1&nbsp;&nbsp;Version 0.0.1 (2009-01-13)
1817
2027
  </h2>
1818
2028
  <div class="content"><p>This release fixes some show-stopper bugs.</p>
1819
2029
 
1820
2030
  <p><div class="paragraph">
1821
- <a name="Contributor-kudos"/><div class="nav" id="Contributor-kudos"><a title="Reverse jump to listing" href="#rev:Contributor-kudos">&equiv;</a><a title="Jump to previous segment" href="#Version-0.0.1-2009-01-13">&#x25B3;</a><a title="Jump to next segment" href="#Bug-fixes-608680498">&#x25BD;</a><a title="Jump to this segment" href="#Contributor-kudos">&#x25CE;</a></div>
2031
+ <a name="Contributor-kudos-608900438"/><div class="nav" id="Contributor-kudos-608900438"><a title="Reverse jump to listing" href="#rev:Contributor-kudos-608900438">&equiv;</a><a title="Jump to previous segment" href="#Version-0.0.1-2009-01-13">&#x25B3;</a><a title="Jump to next segment" href="#Bug-fixes-608905168">&#x25BD;</a><a title="Jump to this segment" href="#Contributor-kudos-608900438">&#x25CE;</a></div>
1822
2032
  <p class="title">Contributor kudos</p>
1823
2033
  <div class="content"><ul>
1824
2034
  <li>Florian Gilcher tried the first release of <strong>Inochi</strong> and reported bugs.</li>
1825
2035
  </ul></div>
1826
2036
  </div> <div class="paragraph">
1827
- <a name="Bug-fixes-608680498"/><div class="nav" id="Bug-fixes-608680498"><a title="Reverse jump to listing" href="#rev:Bug-fixes-608680498">&equiv;</a><a title="Jump to previous segment" href="#Contributor-kudos">&#x25B3;</a><a title="Jump to next segment" href="#Housekeeping">&#x25BD;</a><a title="Jump to this segment" href="#Bug-fixes-608680498">&#x25CE;</a></div>
2037
+ <a name="Bug-fixes-608905168"/><div class="nav" id="Bug-fixes-608905168"><a title="Reverse jump to listing" href="#rev:Bug-fixes-608905168">&equiv;</a><a title="Jump to previous segment" href="#Contributor-kudos-608900438">&#x25B3;</a><a title="Jump to next segment" href="#Housekeeping-608918928">&#x25BD;</a><a title="Jump to this segment" href="#Bug-fixes-608905168">&#x25CE;</a></div>
1828
2038
  <p class="title">Bug fixes</p>
1829
2039
  <div class="content"><ul>
1830
2040
  <li>
@@ -1842,14 +2052,14 @@ puts <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">
1842
2052
  </li>
1843
2053
  </ul></div>
1844
2054
  </div> <div class="paragraph">
1845
- <a name="Housekeeping"/><div class="nav" id="Housekeeping"><a title="Reverse jump to listing" href="#rev:Housekeeping">&equiv;</a><a title="Jump to previous segment" href="#Bug-fixes-608680498">&#x25B3;</a><a title="Jump to next segment" href="#Version-0.0.0-2009-01-13">&#x25BD;</a><a title="Jump to this segment" href="#Housekeeping">&#x25CE;</a></div>
2055
+ <a name="Housekeeping-608918928"/><div class="nav" id="Housekeeping-608918928"><a title="Reverse jump to listing" href="#rev:Housekeeping-608918928">&equiv;</a><a title="Jump to previous segment" href="#Bug-fixes-608905168">&#x25B3;</a><a title="Jump to next segment" href="#Version-0.0.0-2009-01-13">&#x25BD;</a><a title="Jump to this segment" href="#Housekeeping-608918928">&#x25CE;</a></div>
1846
2056
  <p class="title">Housekeeping</p>
1847
2057
  <div class="content"><ul>
1848
2058
  <li>Only add project libraries to <code class="code"><span style="color:#d70;font-weight:bold">$LOAD_PATH</span></code> if not already there.</li>
1849
2059
  </ul></div>
1850
2060
  </div></p></div>
1851
2061
  </div> <div class="section">
1852
- <a name="Version-0.0.0-2009-01-13"/><div class="nav" id="Version-0.0.0-2009-01-13"><a title="Reverse jump to listing" href="#rev:Version-0.0.0-2009-01-13">&equiv;</a><a title="Jump to previous segment" href="#Housekeeping">&#x25B3;</a>&#x25BD;<a title="Jump to this segment" href="#Version-0.0.0-2009-01-13">&#x25CE;</a></div>
2062
+ <a name="Version-0.0.0-2009-01-13"/><div class="nav" id="Version-0.0.0-2009-01-13"><a title="Reverse jump to listing" href="#rev:Version-0.0.0-2009-01-13">&equiv;</a><a title="Jump to previous segment" href="#Housekeeping-608918928">&#x25B3;</a>&#x25BD;<a title="Jump to this segment" href="#Version-0.0.0-2009-01-13">&#x25CE;</a></div>
1853
2063
  <h2 class="title">
1854
2064
  4.1&nbsp;&nbsp;Version 0.0.0 (2009-01-13)
1855
2065
  </h2>
@@ -1867,16 +2077,16 @@ puts <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">
1867
2077
 
1868
2078
  <div id="footer">
1869
2079
 
1870
- Generated by <a href="http://snk.tuxfamily.org/lib/erbook/">ERBook 6.0.1</a> on Mon Jan 19 12:55:48 -0800 2009.
2080
+ Generated by <a href="http://snk.tuxfamily.org/lib/erbook/">ERBook 6.0.1</a> on Sun Jan 25 10:26:44 -0800 2009.
1871
2081
 
1872
2082
  <div id="footer-credits">
1873
2083
  <p>
1874
- <img class="icon" src="&icon_caution;" alt="caution"/>
1875
- <img class="icon" src="&icon_tip;" alt="tip"/>
1876
- <img class="icon" src="&icon_important;" alt="important"/>
1877
- <img class="icon" src="&icon_note;" alt="note"/>
1878
- <img class="icon" src="&icon_warning;" alt="warning"/>
1879
- <img class="icon" src="&icon_quote;" alt="quote"/>
2084
+ <img class="icon" alt="caution" src="&icon_caution;"/>
2085
+ <img class="icon" alt="tip" src="&icon_tip;"/>
2086
+ <img class="icon" alt="important" src="&icon_important;"/>
2087
+ <img class="icon" alt="note" src="&icon_note;"/>
2088
+ <img class="icon" alt="warning" src="&icon_warning;"/>
2089
+ <img class="icon" alt="quote" src="&icon_quote;"/>
1880
2090
 
1881
2091
  <br/>
1882
2092
 
@@ -1884,7 +2094,7 @@ puts <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">
1884
2094
  </p>
1885
2095
 
1886
2096
  <p>
1887
- <img class="icon" src="&icon_link;" alt="link"/>
2097
+ <img class="icon" alt="link" src="&icon_link;"/>
1888
2098
 
1889
2099
  <br/>
1890
2100