inochi 0.3.0 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- data/CREDITS +1 -0
- data/bin/inochi +112 -104
- data/doc/api/classes/Array.html +370 -0
- data/doc/api/classes/File.html +110 -0
- data/doc/api/classes/Inochi.html +1493 -0
- data/doc/api/classes/Inochi/Manual.html +157 -0
- data/doc/api/classes/Inochi/Phrases.html +331 -0
- data/doc/api/classes/Inochi/Version.html +190 -0
- data/doc/api/classes/TempDir.html +164 -0
- data/doc/api/created.rid +1 -0
- data/doc/api/css/main.css +263 -0
- data/doc/api/css/panel.css +383 -0
- data/doc/api/css/reset.css +53 -0
- data/doc/api/files/CREDITS.html +61 -0
- data/doc/api/files/LICENSE.html +76 -0
- data/doc/api/files/lib/inochi/book_rb.html +96 -0
- data/doc/api/files/lib/inochi/init_rb.html +78 -0
- data/doc/api/files/lib/inochi/main_rb.html +52 -0
- data/doc/api/files/lib/inochi/rake_rb.html +52 -0
- data/doc/api/files/lib/inochi/test/bacon_rb.html +67 -0
- data/doc/api/files/lib/inochi/test/context_rb.html +69 -0
- data/doc/api/files/lib/inochi/test/dfect_rb.html +67 -0
- data/doc/api/files/lib/inochi/test/matchy_rb.html +69 -0
- data/doc/api/files/lib/inochi/test/minitest_rb.html +71 -0
- data/doc/api/files/lib/inochi/test/mocha_rb.html +67 -0
- data/doc/api/files/lib/inochi/test/rspec_rb.html +67 -0
- data/doc/api/files/lib/inochi/test/shoulda_rb.html +67 -0
- data/doc/api/files/lib/inochi/test/test_spec_rb.html +67 -0
- data/doc/api/files/lib/inochi/test/test_unit_rb.html +67 -0
- data/doc/api/files/lib/inochi/util/combo_rb.html +59 -0
- data/doc/api/files/lib/inochi/util/tempdir_rb.html +68 -0
- data/doc/api/files/lib/inochi/util_rb.html +59 -0
- data/doc/api/files/lib/inochi_rb.html +78 -0
- data/doc/api/i/arrows.png +0 -0
- data/doc/api/i/results_bg.png +0 -0
- data/doc/api/i/tree_bg.png +0 -0
- data/doc/api/index.html +14 -18
- data/doc/api/js/jquery-1.3.2.min.js +19 -0
- data/doc/api/js/jquery-effect.js +593 -0
- data/doc/api/js/main.js +22 -0
- data/doc/api/js/searchdoc.js +605 -0
- data/doc/api/panel/index.html +63 -0
- data/doc/api/panel/search_index.js +1 -0
- data/doc/api/panel/tree.js +1 -0
- data/doc/history.erb +75 -34
- data/doc/index.erb +10 -5
- data/doc/index.xhtml +806 -1145
- data/doc/intro.erb +33 -27
- data/doc/setup.erb +16 -15
- data/doc/usage.erb +86 -137
- data/lib/inochi.rb +25 -13
- data/lib/inochi/book.rb +13 -6
- data/lib/inochi/init.rb +41 -24
- data/lib/inochi/main.rb +17 -7
- data/lib/inochi/rake.rb +200 -59
- data/lib/inochi/test/bacon.rb +3 -0
- data/lib/inochi/test/context.rb +4 -0
- data/lib/inochi/test/dfect.rb +3 -0
- data/lib/inochi/test/matchy.rb +4 -0
- data/lib/inochi/test/minitest.rb +7 -0
- data/lib/inochi/test/mocha.rb +3 -0
- data/lib/inochi/test/rspec.rb +3 -0
- data/lib/inochi/test/shoulda.rb +3 -0
- data/lib/inochi/test/test_spec.rb +3 -0
- data/lib/inochi/test/test_unit.rb +3 -0
- data/lib/inochi/util.rb +23 -1
- data/lib/inochi/util/combo.rb +191 -0
- data/lib/inochi/util/tempdir.rb +29 -0
- data/rakefile +12 -0
- data/test/inochi.rb +5 -0
- metadata +119 -45
- data/Rakefile +0 -6
- data/doc/api/Inochi.html +0 -2574
- data/doc/api/Inochi/Manual.html +0 -230
- data/doc/api/Inochi/Phrases.html +0 -409
- data/doc/api/Inochi/Version.html +0 -222
- data/doc/api/all-methods.html +0 -180
- data/doc/api/all-namespaces.html +0 -28
- data/doc/api/app.js +0 -18
- data/doc/api/jquery.js +0 -11
- data/doc/api/readme.html +0 -38
- data/doc/api/style.css +0 -68
- data/doc/api/syntax_highlight.css +0 -21
- data/doc/theory.erb +0 -3
@@ -0,0 +1,63 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
|
3
|
+
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
|
4
|
+
|
5
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
|
6
|
+
<head>
|
7
|
+
<title>layout</title>
|
8
|
+
<link rel="stylesheet" href="../css/reset.css" type="text/css" media="screen" charset="utf-8" />
|
9
|
+
<link rel="stylesheet" href="../css/panel.css" type="text/css" media="screen" charset="utf-8" />
|
10
|
+
<script src="search_index.js" type="text/javascript" charset="utf-8"></script>
|
11
|
+
<script src="tree.js" type="text/javascript" charset="utf-8"></script>
|
12
|
+
<script src="../js/jquery-1.3.2.min.js" type="text/javascript" charset="utf-8"></script>
|
13
|
+
<script src="../js/searchdoc.js" type="text/javascript" charset="utf-8"></script>
|
14
|
+
<script type="text/javascript" charset="utf-8">
|
15
|
+
//<![CDATA[
|
16
|
+
function placeholder() {
|
17
|
+
if (jQuery.browser.safari) return;
|
18
|
+
$('#search-label').click(function() {
|
19
|
+
$('#search').focus();
|
20
|
+
$('#search-label').hide();
|
21
|
+
});
|
22
|
+
|
23
|
+
$('#search').focus(function() {
|
24
|
+
$('#search-label').hide();
|
25
|
+
});
|
26
|
+
$('#search').blur(function() {
|
27
|
+
this.value == '' && $('#search-label').show()
|
28
|
+
});
|
29
|
+
|
30
|
+
$('#search')[0].value == '' && $('#search-label').show();
|
31
|
+
|
32
|
+
setInterval(function() { $('#search')[0].value != '' && $('#search-label').hide() }, 100)
|
33
|
+
}
|
34
|
+
$(function() {
|
35
|
+
placeholder();
|
36
|
+
new Searchdoc.Panel($('#panel'), search_data, tree, top.frames[1]);
|
37
|
+
$('#search').focus();
|
38
|
+
})
|
39
|
+
//]]>
|
40
|
+
</script>
|
41
|
+
</head>
|
42
|
+
<body>
|
43
|
+
<div class="panel panel_tree" id="panel">
|
44
|
+
<div class="header">
|
45
|
+
<div>
|
46
|
+
<label for="search" id="search-label" style="display: none">Search</label>
|
47
|
+
<table>
|
48
|
+
<tr><td>
|
49
|
+
<input type="Search" placeholder="Search" autosave="searchdoc" results="10" id="search" autocomplete="off"/>
|
50
|
+
</td></tr>
|
51
|
+
</table></div>
|
52
|
+
</div>
|
53
|
+
<div class="tree">
|
54
|
+
<ul>
|
55
|
+
</ul>
|
56
|
+
</div>
|
57
|
+
<div class="result">
|
58
|
+
<ul>
|
59
|
+
</ul>
|
60
|
+
</div>
|
61
|
+
</div>
|
62
|
+
</body>
|
63
|
+
</html>
|
@@ -0,0 +1 @@
|
|
1
|
+
var search_data = {"index":{"info":[["Array","lib\/inochi\/util\/combo.rb","classes\/Array.html"," < Object"," ",1],["File","lib\/inochi\/util.rb","classes\/File.html"," < IO","",1],["Inochi","lib\/inochi\/init.rb","classes\/Inochi.html",""," ",1],["Manual","Inochi","classes\/Inochi\/Manual.html","","",1],["Phrases","Inochi","classes\/Inochi\/Phrases.html"," < Object","Interface to translations of human text used in a project. ",1],["Version","Inochi","classes\/Inochi\/Version.html","","",1],["TempDir","lib\/inochi\/util\/tempdir.rb","classes\/TempDir.html"," < Object","",1],["[]","Inochi::Phrases","classes\/Inochi\/Phrases.html#M000029","(phrase, *words)","Translates the given phrase into the target locale (see #locale and #locale=) and then substitutes the",2],["book","Inochi","classes\/Inochi.html#M000011","(project_symbol, book_template)","Provides a common configuration for the project's user manual: * Assigns the title, subtitle, date, and",2],["close","TempDir","classes\/TempDir.html#M000009","()","",2],["combination","Array","classes\/Array.html#M000002","(sample_size = self.length, &sampler)","Returns all possible combinations made from sample_size number of items from this list. ==== Parameters",2],["combinations","Array","classes\/Array.html#M000003","(&sampler)","Returns all possible combinations of all possible lengths. ==== Parameters [sampler] If given, each combination",2],["enumeration","Array","classes\/Array.html#M000000","(sample_size = self.length, &sampler)","Returns all possible enumerations made from sample_size number of items from this list. ==== Parameters",2],["enumerations","Array","classes\/Array.html#M000001","(&sampler)","Returns all possible enumerations of all possible lengths. ==== Parameters [sampler] If given, each enumeration",2],["history","Inochi::Manual","classes\/Inochi\/Manual.html#M000013","()","Contains release notes for all project releases. ",2],["init","Inochi","classes\/Inochi.html#M000022","(project_symbol, project_config = {})","Establishes your project in Ruby's runtime environment by defining the project module (which serves as",2],["locale=","Inochi::Phrases","classes\/Inochi\/Phrases.html#M000027","(locale)","",2],["main","Inochi","classes\/Inochi.html#M000010","(project_symbol, *trollop_args, &trollop_config)","Provides a common configuration for the main project executable: * The program description (the sequence",2],["major","Inochi::Version","classes\/Inochi\/Version.html#M000023","()","Returns the major number in this version. ",2],["method_missing","Inochi::Phrases","classes\/Inochi\/Phrases.html#M000030","(meth, *args)","Provides access to translations in any language, regardless of the target locale (see #locale and #locale=).",2],["new","Inochi::Phrases","classes\/Inochi\/Phrases.html#M000026","(project_install_dir)","",2],["new","TempDir","classes\/TempDir.html#M000006","(basename = nil, dirname = nil)","",2],["permutation","Array","classes\/Array.html#M000004","(sample_size = self.length, &sampler)","Returns all possible permutations made from sample_size number of items from this list. ==== Parameters",2],["permutations","Array","classes\/Array.html#M000005","(&sampler)","Returns all possible permutations of all possible lengths. ==== Parameters [sampler] If given, each permutation",2],["phrases","Inochi::Phrases","classes\/Inochi\/Phrases.html#M000028","()","Returns all phrases that underwent (or attempted) translation via this object. ",2],["project","Inochi::Manual","classes\/Inochi\/Manual.html#M000012","()","Defines a brief summary of this project. ",2],["rake","Inochi","classes\/Inochi.html#M000014","(project_symbol, options = {})","Provides Rake tasks for packaging, publishing, and announcing your project. * An AUTHORS constant (which",2],["requirement","Inochi::Version","classes\/Inochi\/Version.html#M000025","()","Returns a Gem::Requirement expression. ",2],["series","Inochi::Version","classes\/Inochi\/Version.html#M000024","()","Returns a string describing any version with the current major number. ",2],["write","File","classes\/File.html#M000021","(path, content)","Writes the given content to the given file. ",2],["CREDITS","files\/CREDITS.html","files\/CREDITS.html","","* Florian Gilcher ",3],["LICENSE","files\/LICENSE.html","files\/LICENSE.html","","(the ISC license) Copyright 2008 Suraj N. Kurapati <sunaku@gmail.com> Permission to use, copy, modify,",3],["inochi.rb","files\/lib\/inochi_rb.html","files\/lib\/inochi_rb.html",""," ",3],["book.rb","files\/lib\/inochi\/book_rb.html","files\/lib\/inochi\/book_rb.html",""," ",3],["init.rb","files\/lib\/inochi\/init_rb.html","files\/lib\/inochi\/init_rb.html",""," ",3],["main.rb","files\/lib\/inochi\/main_rb.html","files\/lib\/inochi\/main_rb.html",""," ",3],["rake.rb","files\/lib\/inochi\/rake_rb.html","files\/lib\/inochi\/rake_rb.html",""," ",3],["bacon.rb","files\/lib\/inochi\/test\/bacon_rb.html","files\/lib\/inochi\/test\/bacon_rb.html","","Integration for the [Bacon library](http:\/\/github.com\/chneukirchen\/bacon). ",3],["context.rb","files\/lib\/inochi\/test\/context_rb.html","files\/lib\/inochi\/test\/context_rb.html","","Integration for the [Context library](http:\/\/github.com\/jeremymcanally\/context). ",3],["dfect.rb","files\/lib\/inochi\/test\/dfect_rb.html","files\/lib\/inochi\/test\/dfect_rb.html","","Integration for the [Dfect library](http:\/\/snk.tuxfamily.org\/lib\/dfect\/). ",3],["matchy.rb","files\/lib\/inochi\/test\/matchy_rb.html","files\/lib\/inochi\/test\/matchy_rb.html","","Integration for the [Matchy library](http:\/\/github.com\/jeremymcanally\/matchy) ",3],["minitest.rb","files\/lib\/inochi\/test\/minitest_rb.html","files\/lib\/inochi\/test\/minitest_rb.html","","Integration for the [Minitest library](http:\/\/blog.zenspider.com\/minitest\/). ",3],["mocha.rb","files\/lib\/inochi\/test\/mocha_rb.html","files\/lib\/inochi\/test\/mocha_rb.html","","Integration for the [Mocha library](http:\/\/mocha.rubyforge.org). ",3],["rspec.rb","files\/lib\/inochi\/test\/rspec_rb.html","files\/lib\/inochi\/test\/rspec_rb.html","","Integration for the [RSpec library](http:\/\/rspec.info). ",3],["shoulda.rb","files\/lib\/inochi\/test\/shoulda_rb.html","files\/lib\/inochi\/test\/shoulda_rb.html","","Integration for the [Shoulda library](http:\/\/thoughtbot.com\/projects\/shoulda\/). ",3],["test_spec.rb","files\/lib\/inochi\/test\/test_spec_rb.html","files\/lib\/inochi\/test\/test_spec_rb.html","","Integration for the [test\/spec library](http:\/\/chneukirchen.org\/repos\/testspec\/README). ",3],["test_unit.rb","files\/lib\/inochi\/test\/test_unit_rb.html","files\/lib\/inochi\/test\/test_unit_rb.html","","Integration for the [Test::Unit library](http:\/\/test-unit.rubyforge.org). ",3],["util.rb","files\/lib\/inochi\/util_rb.html","files\/lib\/inochi\/util_rb.html",""," ",3],["combo.rb","files\/lib\/inochi\/util\/combo_rb.html","files\/lib\/inochi\/util\/combo_rb.html",""," ",3],["tempdir.rb","files\/lib\/inochi\/util\/tempdir_rb.html","files\/lib\/inochi\/util\/tempdir_rb.html",""," ",3]],"longSearchIndex":["combo.rb","util.rb","init.rb","inochi","inochi","inochi","tempdir.rb","phrases","inochi","tempdir","array","array","array","array","manual","inochi","phrases","inochi","version","phrases","phrases","tempdir","array","array","phrases","manual","inochi","version","version","file","files\/credits.html","files\/license.html","files\/lib\/inochi_rb.html","files\/lib\/inochi\/book_rb.html","files\/lib\/inochi\/init_rb.html","files\/lib\/inochi\/main_rb.html","files\/lib\/inochi\/rake_rb.html","files\/lib\/inochi\/test\/bacon_rb.html","files\/lib\/inochi\/test\/context_rb.html","files\/lib\/inochi\/test\/dfect_rb.html","files\/lib\/inochi\/test\/matchy_rb.html","files\/lib\/inochi\/test\/minitest_rb.html","files\/lib\/inochi\/test\/mocha_rb.html","files\/lib\/inochi\/test\/rspec_rb.html","files\/lib\/inochi\/test\/shoulda_rb.html","files\/lib\/inochi\/test\/test_spec_rb.html","files\/lib\/inochi\/test\/test_unit_rb.html","files\/lib\/inochi\/util_rb.html","files\/lib\/inochi\/util\/combo_rb.html","files\/lib\/inochi\/util\/tempdir_rb.html"],"searchIndex":["array","file","inochi","manual","phrases","version","tempdir","[]()","book()","close()","combination()","combinations()","enumeration()","enumerations()","history()","init()","locale=()","main()","major()","method_missing()","new()","new()","permutation()","permutations()","phrases()","project()","rake()","requirement()","series()","write()","credits","license","inochi.rb","book.rb","init.rb","main.rb","rake.rb","bacon.rb","context.rb","dfect.rb","matchy.rb","minitest.rb","mocha.rb","rspec.rb","shoulda.rb","test_spec.rb","test_unit.rb","util.rb","combo.rb","tempdir.rb"]}}
|
@@ -0,0 +1 @@
|
|
1
|
+
var tree = [["Array","classes\/Array.html"," < Object",[]],["File","classes\/File.html"," < IO",[]],["Inochi","classes\/Inochi.html","",[["Manual","classes\/Inochi\/Manual.html","",[]],["Phrases","classes\/Inochi\/Phrases.html"," < Object",[]],["Version","classes\/Inochi\/Version.html","",[]]]],["TempDir","classes\/TempDir.html"," < Object",[]]]
|
data/doc/history.erb
CHANGED
@@ -1,9 +1,67 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
1
|
+
%#--
|
2
|
+
%# Copyright 2009 Suraj N. Kurapati
|
3
|
+
%# See the LICENSE file for details.
|
4
|
+
%#++
|
5
|
+
|
6
|
+
%|chapter "History"
|
7
|
+
%|history
|
8
|
+
%|section "Version 1.0.0 (2009-05-03)"
|
9
|
+
This release allows your gems to not depend on <%= $project %>, lets you choose which unit testing library to use, adds new utility libraries and rake tasks, and fixes some bugs.
|
10
|
+
|
11
|
+
%|paragraph "Incompatible changes"
|
12
|
+
* Your program is no longer halted by `Inochi.init()` and `Inochi.rake()` if gem dependencies are not satified. A warning is issued instead.
|
13
|
+
|
14
|
+
* The `project_summary` and `project_history` nodes, which are provided by `Inochi.book()` to the user manual, have been renamed to `project` and "history" respectively.
|
15
|
+
|
16
|
+
* <%= ERBook::DISPLAY %> 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.
|
17
|
+
|
18
|
+
* [SDoc](http://github.com/voloko/sdoc/tree/master) is now used to generate API documentation instead of [YARD](http://yard.rubyforge.org). If you link to particular classes or methods in the generated API documentation, be sure to update your link addresses!
|
19
|
+
|
20
|
+
* Minitest is no longer the default testing library. You must specify which testing library you want to use via the `:test_with` option of the `Inochi.rake()` method. See <%= xref "Test execution" %> for details.
|
21
|
+
|
22
|
+
* The "pak" rake task, which is provided by `Inochi.rake()`, has been renamed to "gem".
|
23
|
+
|
24
|
+
%|paragraph "New features"
|
25
|
+
* Add `:inochi_consumer` and `:inochi_producer` options to `Inochi.rake()` which allows you to *avoid* having Inochi as a runtime and development dependency, respectively, for your project's gem.
|
26
|
+
|
27
|
+
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's runtime convenience facilities.
|
28
|
+
|
29
|
+
* Add `:develop` option for `Inochi.init()` which lets you specify RubyGems as development dependencies in the same way as the `:require` option.
|
30
|
+
|
31
|
+
* Add "lint" rake task which reports [code quality statistics](http://www.infoq.com/news/2008/11/static-analysis-tool-roundup).
|
32
|
+
|
33
|
+
* Add "test:cov" rake task which reports code coverage statistics.
|
34
|
+
|
35
|
+
* Add "test:ruby" task which runs all tests with [multiruby](http://www.infoq.com/news/2008/02/multiruby-testing).
|
36
|
+
|
37
|
+
* Add 'rake opts=' environment variable, which lets you specify command-line arguments directly to the Ruby interpreter, for all test* rake tasks.
|
38
|
+
|
39
|
+
* Add <tt>inochi/util/combo</tt> combinatorics library for enumerations, permutations, and combinations which are all useful in exhaustive brute-force unit testing.
|
40
|
+
|
41
|
+
* Add <tt>inochi/util/tempdir</tt> library which really should be in the Ruby standard library.
|
42
|
+
|
43
|
+
%|paragraph "Bug fixes"
|
44
|
+
* The "enable email notification" checkbox was not activated properly when posting announcement to ruby-talk mailing list via Ruby-Forum.
|
45
|
+
|
46
|
+
* Mark gems needed by `Inochi.rake()` as *development* dependencies.
|
47
|
+
|
48
|
+
A user would now have to install Inochi using <pre>gem install --development</pre> to install all these gems. This also solves the recursive dependency problem between Inochi and ERBook.
|
49
|
+
|
50
|
+
* Set executable in gem specification only if it exists.
|
51
|
+
|
52
|
+
* Fix parsing of stack trace in Ruby 1.9.
|
53
|
+
|
54
|
+
%|paragraph "Housekeeping"
|
55
|
+
* Write contributor names in <tt>CREDITS</tt> file instead of in the user manual.
|
56
|
+
|
57
|
+
* Use completely lowercase name for <tt>Rakefile</tt>.
|
58
|
+
|
59
|
+
* Add copyright statement at the top of every source file.
|
60
|
+
|
61
|
+
%|section "Version 0.3.0 (2009-02-12)"
|
4
62
|
This release adds support for <%= xref "Translate your project", "language translations / internationalization / multilingualization" %>, improves the user interface, and fixes a show-stopper bug for Windows users.
|
5
63
|
|
6
|
-
|
64
|
+
%|paragraph "New features"
|
7
65
|
* Add support for <%= xref "Translate your project", "language translations" %> of phrases used in a project.
|
8
66
|
|
9
67
|
* Add "lang:dump" Rake task for extracting language phrases from project.
|
@@ -13,9 +71,8 @@
|
|
13
71
|
* Add <tt>--locale</tt> option to a project's main executable for setting user's preferred language in spite of the user's locale environment.
|
14
72
|
|
15
73
|
* Notify user when attempting to publish announcements in the "pub" Rake tasks.
|
16
|
-
<% end %>
|
17
74
|
|
18
|
-
|
75
|
+
%|paragraph "Bug fixes"
|
19
76
|
* In Windows, `ENV['USERPROFILE']` gives the path to the user's home directory and `ENV['HOME']` is not defined.
|
20
77
|
|
21
78
|
* The only real solution to the circular gem dependency problem is:
|
@@ -23,9 +80,8 @@
|
|
23
80
|
gem install --force
|
24
81
|
|
25
82
|
You should update <%= xref "Setup" %> in your projects' user manuals accordingly.
|
26
|
-
<% end %>
|
27
83
|
|
28
|
-
|
84
|
+
%|paragraph "Housekeeping"
|
29
85
|
* Break the huge <tt>lib/inochi/inochi.rb</tt> library into smaller files.
|
30
86
|
|
31
87
|
* Instead of adding methods to singleton classes directly, define modules and extend to them so that YARDoc documents the methods appropriately.
|
@@ -35,13 +91,11 @@
|
|
35
91
|
* Remove "Contributor kudos" paragraph in release notes in favor of crediting contributors inline with each item in the release notes.
|
36
92
|
|
37
93
|
* Mention that the project license is ISC for the reader's convenience.
|
38
|
-
<% end %>
|
39
|
-
<% end %>
|
40
94
|
|
41
|
-
|
95
|
+
%|section "Version 0.2.0 (2009-01-25)"
|
42
96
|
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.
|
43
97
|
|
44
|
-
|
98
|
+
%|paragraph "New features"
|
45
99
|
* Added <%= xref "Test your project", "support for unit testing" %> via the [minitest](http://rubyforge.org/projects/bfts/) library.
|
46
100
|
|
47
101
|
* The scaffold generator now emits a default unit test for the main project library.
|
@@ -62,9 +116,8 @@
|
|
62
116
|
`Inochi.init :YourProject, :authors => [['name', 'mail']]`
|
63
117
|
|
64
118
|
(Florian Gilcher)
|
65
|
-
<% end %>
|
66
119
|
|
67
|
-
|
120
|
+
%|paragraph "Bug fixes"
|
68
121
|
* Run on both JRuby and normal Ruby in multiple versions and with different executable names on Windows. (Florian Gilcher)
|
69
122
|
|
70
123
|
* Use `Gem::RubyGemsVersion` instead of a shell command to determine rubygems version for generation of <tt>setup.erb</tt>. (Florian Gilcher)
|
@@ -72,33 +125,27 @@
|
|
72
125
|
* Add blank lines between all list items, not just multi-line ones, in the plain-text version of the relase announcement for improved readability.
|
73
126
|
|
74
127
|
* 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.
|
75
|
-
<% end %>
|
76
128
|
|
77
|
-
|
129
|
+
%|paragraph "Housekeeping"
|
78
130
|
* Added unit tests for utility methods provided by the **Inochi** module: project name calculation and CamelCase to snake\_case conversion.
|
79
|
-
<% end %>
|
80
|
-
<% end %>
|
81
131
|
|
82
|
-
|
132
|
+
%|section "Version 0.1.0 (2009-01-13)"
|
83
133
|
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**.
|
84
134
|
|
85
|
-
|
135
|
+
%|paragraph "New features"
|
86
136
|
* `Inochi.init()` now adds `#major()`, `#series()`, and `#requirement()` instance methods to a project's `VERSION` constant.
|
87
|
-
<% end %>
|
88
137
|
|
89
|
-
|
138
|
+
%|paragraph "Bug fixes"
|
90
139
|
* 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**.
|
91
140
|
|
92
141
|
<%= xref "Installation" %> has been updated accordingly.
|
93
142
|
|
94
143
|
* Add forgotten Rake dependency for **Inochi** gem.
|
95
|
-
<% end %>
|
96
|
-
<% end %>
|
97
144
|
|
98
|
-
|
145
|
+
%|section "Version 0.0.1 (2009-01-13)"
|
99
146
|
This release fixes some show-stopper bugs.
|
100
147
|
|
101
|
-
|
148
|
+
%|paragraph "Bug fixes"
|
102
149
|
* The name of the project library was [being determined incorrectly](http://www.ruby-forum.com/topic/176173#771351). (Florian Gilcher)
|
103
150
|
|
104
151
|
* There was a [circular dependency problem](http://www.ruby-forum.com/topic/176173#771281) when installing the **Inochi** gem. (Florian Gilcher)
|
@@ -106,17 +153,11 @@
|
|
106
153
|
The solution is to specify the <tt>--force</tt> option when installing the gem. <%= xref "Installation" %> has been updated accordingly.
|
107
154
|
|
108
155
|
* Generated project scaffolds now check against the major version of the **Inochi** gem, to avoid runtime version conflicts.
|
109
|
-
<% end %>
|
110
156
|
|
111
|
-
|
157
|
+
%|paragraph "Housekeeping"
|
112
158
|
* Only add project libraries to `$LOAD_PATH` if not already there.
|
113
|
-
<% end %>
|
114
|
-
<% end %>
|
115
159
|
|
116
|
-
|
160
|
+
%|section "Version 0.0.0 (2009-01-13)"
|
117
161
|
This is the first release of **Inochi**.
|
118
162
|
|
119
163
|
Happy birthday!
|
120
|
-
<% end %>
|
121
|
-
<% end %>
|
122
|
-
<% end %>
|
data/doc/index.erb
CHANGED
@@ -1,6 +1,11 @@
|
|
1
|
-
|
1
|
+
%#--
|
2
|
+
%# Copyright 2009 Suraj N. Kurapati
|
3
|
+
%# See the LICENSE file for details.
|
4
|
+
%#++
|
2
5
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
6
|
+
% Inochi.book :Inochi, self
|
7
|
+
|
8
|
+
%+ "intro.erb"
|
9
|
+
%+ "setup.erb"
|
10
|
+
%+ "usage.erb"
|
11
|
+
%+ "history.erb"
|
data/doc/index.xhtml
CHANGED
@@ -1,610 +1,46 @@
|
|
1
1
|
<?xml version="1.0" encoding="utf-8"?>
|
2
2
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
3
3
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" [
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
4
|
+
<!ENTITY icon_here_frag "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAIkSURBVDiNjZJNSxtRFIbfc+cjmZkkfjSCEFuQtghCwUWj0KXb/IQs3GlBKBQ3waWLoNBfIBSkJYI/ILsupIsuGrIqLQGRoEak6KLNmExzZ+aeLuJMZ4oLz+7e97nPORwuMTMeUvOVvTrAW0TUZua1brN2AgAUCVZeH9aZeUsToh2Eaq21Xz3593h3U9P1vcKjojPyPDV0+z0wL3abtYEAgOWNxmYmY7x5ufTMnCsVV4QQn8rrDSduT7STny46mm7AzheEputTAFYBQIxz2llceOxYVgZP5maEbZkxMF/ZnQVg64YR+8xM1gbwCgBEeb0xC8B27GwMTE7mbKIxAKCsG8YouQ/dNDUiEU9QzjnZFFDIWZqmaauRwDAzuf8EYFYvYsFEwUkB+ZyFMBwDADwAKpmzYoDIiwQeM6eAMFQggnd37ARSDpN54EsQqB0JOreDPynAHXgQQrRjQeBrKYGUklkdA4AOoDMcjlKA63oyCMLju+MpK2XfXF4kERPA10hwKv3A/vzl+71At1mTAFINkkUP+crzld0egFLiyu82a2Y0AZY3DnvMnAJa+1Uz7kJ0npuaLmUsG74coX9zfRVlOgBogs6fPy2VZooT6LtDfPtxdpWQgZkPPLe/JDTdGvb7koGjKBMAEITq4OLyxnNvPZxdXEtmPkK6PgS+/+739c9bX47eg7me2kF5vZElom0Ab4noo1Jqu7Vf/XXPLkS3WUv9mb/vR+THZPMfuQAAAABJRU5ErkJggg==">
|
5
|
+
<!ENTITY icon_caution "data:image/png;base64,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">
|
6
|
+
<!ENTITY icon_nav_here "data:image/png;base64,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">
|
7
|
+
<!ENTITY icon_nav_prev "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABHNCSVQICAgIfAhkiAAABGBJREFUWIXtlltsFVUUhr81e09Pe2pD0VjlFhBEqSRKWk2hpQQxVOIlpURMRNFEojHBS5ACTxIMxhgTjCTGB8ITweCDUQzhARMMUdLqg8QLaRQRpLS0tgV6oe3pOTN7+TDnlHJ6BzU+sJKVPZc96//W2mvPDNy067SFO8gp32KrbjSOd70PFvaZPb7kHCmv9V//zwEqNvuvzLx9/tpXn36bW/IK3i2vtSv+M4CKLbZySsGtu6qXPRvvDS6y+uHn8q31P1+yKXb3vw6w7E1m+Sbn0FOPbIhfuHKK42c+IzAJqpasLvBs8FXpNqZMFsBMdGLpDuImtHVrlr84LRa30tDyLU5DWrv/YMH0h8SaWH5be1P54uluf0MDOtG4E62A5PbaA8sXPTFn1p1zvIbW44AgIjgN+f7cIRYtWJxz17T5Zc1z7K6JisMEK1BRa98qnl3ywsqyNbknmo4wkOrDaZj2gGTQT0dvI0vve9I/23Tq/jtKEk2N9frTPwJQXmseL5o6Y/czVRvjv7bV051oHxQPNRg87h3opD/VQ9mClf5v505WzVzM0cY61zxe/DGXoGJr7N5YLP7p+lWb4i09p+ns/2vMYH9e+oXW3tM8urQmXz0Ol21l5nUDlG5jirrg6POr3sgPpI8LXb9fc18H++xqv6k6fm7+GpsLlSUrC321R0p3EJ80wNq1mJizX1ZXri8qmjpdTrefQFUjUVHEA2MEz4JnBTFKQAKVEEWpP3uQ2TPmmuK5D8zL7bUHABkNYMQeKHzMfvhg8bLqFSU1sZOt35AMo+BOApAQNSHOc6ikSLhuEmEPeA7PE8QDpwEtXWepXFhtW9ubZ9226IrfWOeOjaQ1jGxprVk3o2je3o01O/MQIRX24wgxnuHYmX0EDBC4JD2pDroTbTgNUUAdqCo1xdtQjY7VgQuV/Yc/7u8Z6FxX/354MFvPZl9wKp+0dJxn+94NEaHgVPG2v/QRYhRB6UpeoDe4jPhg8GBQUPCMsHvfO4iSwiMkgssT5IuREh4GULcrEAgGz0tfxo8V2CSegnFc7D9HQjuxOQKSjpcWd04RA6KEYWjvsX6iC0AMhAMkRlqCYQDZ9sMeUuWbAZRLA+dJaBfGFyS93lGGgjpFnOB5Ah5hyiYuf/ceXePFHxcgYylN0BO2YWxUZs+ApCugqrhQkFARb9SGvzGAvqATz4BnJIKwgpeugHOCSPQ+kMnpTxwg6frwbQy81FUIE6lJqFEjOh1jx98ggKIIggqRiDAI4DLCMmn9CQHYNEF6f0eZaiiEuOhWmL6mV1/MHT8SBwaItlQwUuCxAAzgD3Gs5FA1+zU8j2gHyLVNmAFzDlDkSjOFgANSWR6OB2CAnCzng707Ry3RCOYn2rFAXlrDEH13hKgqLjNxpCUTIJbOPAPgDxkzPjSwS2cWZGWbHDIm0+LJbLHRzMuCsENEM8JDv6ZuCMhQmIxoAMP/FSfTtJkSZo+kA2c8A5I5v2n/b/sb+uLjgZR8ftUAAAAASUVORK5CYII=">
|
8
|
+
<!ENTITY icon_tip "data:image/png;base64,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">
|
9
|
+
<!ENTITY icon_important "data:image/png;base64,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">
|
10
|
+
<!ENTITY icon_nav_list "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABHNCSVQICAgIfAhkiAAABSlJREFUWIXdl1lsVUUYx/8zc7a7daUroXQhlkpoQ4sVA8b6gilbIEIDggEiEiSRFwzEJ/pCXXjgQR8sAW0I0QQSicZIiC9IsClFFqlC6HorXW/Xe+/p7b3nnpnxobbpJW1pS+uD3+N3vpn/b2b+c853gP9rrNp1WZtNHVlo4ZLDl/YzkC+lhAMUZ+9Uv3MCIHK6eraQ4sXvX9ri0tVvD2wtMt4oyaZPvP1rE1bf93ff/f72dGMWbAcKj1xMNYTSeGh7cbxUFNhcQpE2Lvxwz1Sj4czfvn4vONU4ulAAGicni/LTjYR4Jxo7g2jzjSAzJQ5Ll3iUCDUqphu3IACF7150MUqPvr4mS2/sCkICEEKic3AUhfkZBlXJjkUF0HW6JTXJTVwOHYOmNZHv80eQlRYHSFLyQgCrdlXOeKUkIRtezklVff5ITH7U4vC4dAjO00sOVzvnASDJ8vJPz5ghPZSz+ZNg9uaq/VNOQkmypjMaifKYvC0kKBn3eaI6Z4DsTZ9/mBTvOHZ0TxnbVV7q1hXlfO6mqi3P1nEhvIFg2NbU2Ol0hcIM2yAgPHcI5pwA8rd95iFEnN5UVqS19piQTMHO8lJFEHIpb+OZ1Mm1DLjT1jVsexyxizQ0hkF/CJSSlitXKmK353kAYc4rUpPilbQlcXjQ5MOv9zvgdjuwesVSw1b4yRgAxut7B4KGxgjIpDdLSpyOx20+Swh5dTqdaQEo2I6VKzKNJ0+HwIWEkBJ1j7rx6ppcnVIcTdt4xjVeawmHyYVE1BYTZ+5xqFCpxMOmHoVSXJgzAICSrPREtHX7JxKdfSaYoiIj2UMczJ7kBVuldExY/Gu83FQXrtc2WlLImtvVe5vmBJC5tdIppUh3OjUEQ1bMM29PAMsyl6gScgMAFB+6WECkuOlxaLBsCQkgM8lAR++wbO0cClpW9PgMi5wawBg1VACghMJ65mqFLRuMMUooSwYAytgxl6EWFOSlcv9oFJpCkehScb22kQsujzyoOTg8Z4DWxFxTEvDASBhOI9bZDk1BYCRsQwovADCCbbvfKsS6wizW548gJU5HQ4tPhsJRJcevTWu+GQFwpYJT0BbfoIl4V+xL0O3Q0NfvtyXFnZLD1SrnMlNRGf78O4BwlCMlXofKxhcisucHAEAKcbW1vdfKSHZP5AgBDI2if9g0OHi9orscACAkgS3Geo5AKIqoJSVltPbuud0t8wagjF3wdvUpTo0izjm2C4yOeYJzAS2smLe/2BdglA72Do0gwaki2aMhErFQ+9ArbFvMaL7nArT+dKKJc1FT/0eztTI7GZQQcCEmrpniUFQAICBnb/7eEtaZBOwofrzxyLI5P3Xv/L662QDM2BFlb69MQFRvXlf8UlIUKmnvCWBtfhpu1TXADEUeS0LfznmltCnU3V0jBN9DKIsQKU7Xn9tbNVMfOGsAAMgpr9qpG9p3b64vUhraBpCe5IQ5PMzbO3xsNBL9yvvzxx8AQNmBb4wbNQfDsxGdHM/tB9rcK66GI1Glpb1HZiS70DUwgrycpWx9aQEIJdvG6+YjPiuAZaY3GwA0hSHBrcOKcjxo9kGAQgqZWVJSPeV3fsEAnl470UIJqbVsLobNsY4nagtwPnbE/tRux6ICAIAQ5Hirt0sKbiPJY8Dj1DDoN0FABpuvVQYWHcB77WQdF/JUw1/Nlko44gyK5raOMICzLyIOzOHPaLjpl1vuvFuir3/otW7fAOO2vLw8FP7I670hXhRizpFdVmn856KLFf8AcP0p5DnhnVEAAAAASUVORK5CYII=">
|
11
|
+
<!ENTITY icon_note "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAN1wAADdcBQiibeAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAmCSURBVGiB1ZltbJXlGcd/9/N+Tlssh1JahNEJaK2UFxFptqC2wGCSTWdM3DSQzWVDEzVxy4xfjNkHQ8xMnEEXviwZ62Rj6siWTcVBZeJA5yBQpOWlKNZSaEvpyyk95zwv970Pp+fY5/S0tFBkXsmTc67neu77+f/u6349Ryil+Cqbdq0FXKldEuClp+3nfvVz/eJLT9vPXQv/igFc13tqw4/ujLqu99S18C9lRr6br7zyyi2WZb2eSqUqpVSUlE5BSmW8/PLL6sv2bdtuTiaT9z/++ONN486AZVm/XLiw+qZlt98Wun/bsqUhf+nSJSF/ya2LQv6ixQtD/sJFC0L+guqqkF91S2XIr6y6idlfm1Vp2/Yz+XSOCiCEqDJMQ3ze+hm6bnC+sx9d1zl+vBlN1znf2Y+m6TQfa0LTvvCbmo6G/KNHj4T8Ix83hvzGI4dD/uHGQyG/peUElmUJIURlPp2jAkgpiwXg+R5FM9dRv3U/heXrkFJSWHZ32i/7NlJKCsrWUr91P9EZa5FSEildQ/3W/USmfwspJc701dRv3Y9dshopJda0VdRv3Y8VW4mUEjO2kvqt+zCm1iGlxCiu5fe/24defBeu6yHSkopHAxD51oEtW7bEb1++rLC5+ShBEKCU+uJCgWJCvlJD9/iinlw/o2O4b5omixct4fixkz2PPPJILB9A3kEspYzOmjWbxYuWjIiNtfBdjdjg4EWam44XjhYf0YU2b948xTTNoGRaSbjlR2mlqx0rLCxC0zR98+bNdj6AERkIgiDmOI6nlDK/7NbOF1NKYdt2KplMxoCzufERAKZpxiKRSDC8wnfeeWfUl06W0FxbtWpV9tloNOoPDg6OD0BKGYtEIqGXrV69etKFXio2vGs5jqOklOMbxJqmxaLRqBheSRAEo77sSoWOZkKI7DORSERomjY+AKVULBKJGMMB3n333Uum/XK35aOVq6ury2YiEonoSqnxAziOYw0HqKurG5fIyR68mU/Hccyes8cq19cVbQB84Fh9Q/xgXgDTNGfYtq0NBxivkMmGAGg73cTOV58xe9tPPvnwuodUxFX89cOd/vq6orX1DfG9IwB0XS+zbTs0kHbt2jVhiMwscrkQrS2H+ce2TfSdPc2Dd9xN1cL7TK29E9rbWWBXWk9o+95eX1c0Jd9KXGqaZghg5cqVExIyEaG51tL0IW9u2wRuijVrf4JXXIHR1oZoaIC2NjhzBtHbS+lcTT9jBNPzAUyzLCvUBy9HyETLHm98nze3bWKw7xy1NZXcOG8JUmq0BgGtpaVoRUWUfPwxnb5Pl+/RJ6QAIvkGcXFuBq4mxNEDu3lr2yaUN8BdyyuZO/d2hNBQ0sPrf43C0yvoqqjic9umdXCQ85akeT6plMUL9f+Mf5pvIZtiGAa5g3gyIZRSNH74Nm/9cRO2HrByeSUVFRWAQAYpEj2nSF44hZI+F/tn4V0/n3hPJ+1Vym+KKFcY4lXPU89A/r1QgWEY+L6fvbd79+4rhkg/Izlz8j+c/O/rlBRHufuOBcyeNRsA6Q+S6G4h1XcaJdMLZ0evT3tXG/65VznU9j5eofqN5/N8/c7+9kydofPAiy++GIlGo/ENGzborutOWOhosSDw+ehfb7Dzzy9QVjKFO5bdTHl5eTrmxklcOEmq73NQEqmgvduj5axLR5/GRVdQd89G2uMFsqd3wH722Wf94XWHMhCJRGK2bbtAZDLmc99z+aDhT+x6/dfMmTWdH3znG5ROL03HUr0kzp/AjbcDikAqWrt8TrWn6IgbSC1K3b2PsbzuAQqLrmP79u2u0KypQNeoAL7vxxzH8XMHb0NDw4Qh2k99RPO//0DlvNlsuL+WabFpAHiJbpLdx3EHOgBwfcVnnR4t7SnO9Qk0q5Ablt7Lgz/+BZqmZ+uzbdsfGBiIjQkwtI1QuTNQbW3tJVt7uB14bwcfHdnBxofvoTgaBQTuxXMkuk/gD3YDkHAVn55z+eRcis64QUnZXB7Y8DNuXnzXiNlvaD+kDMMYsR8akQHTNIWU8rJnoAN7d7DrtefZ+MSjRGfMI/HpPuInd+EnewGIJySnzrp81unRGRdU3LiUHz76JBU3LhkhOmNSShzHId+WOgSQTCZjlmWFdqIAe/bsGdcs03ZiH62H/sJPH12PXXAd0r2IXVZFz5E36BkIaDnr0trl09kXUF6xiOW191BYXM7p9j5Ot+8J1XXnnXeGYEzT1F3XHRsgCIKYZVlmLsCKFStGtMqwMvi+z4H3dtD1yXus+e59WJaBn+hBc+MoBUfaFM2nk1y4KKlaupq1teuZWjITwzDQdR3DMDAMA9M0s/UOFy+lxLZtw/f9sQE8z5tu27aR24UyhwshROiQ47ourutyaN/f2Pv3Lew9fJ7Dxzr4/pqv0xt36e4ZoOt8D6mUy7zFa6m5dR0FRVPxlUFvby+maWJZFqZpZr9blkVmIR0OY5qm6XnetDEBlFLllmWNaO29e/eS8xy+7+P7Pm0nPuD4B9soKCxkzTdvoOC6Ms755TglMWZ+bSpzIsWYzhR0XSdQOslkksw7hBAIIdA0LfuZ2cbkvs80TaGUKh8TwPf9UsuykFKGIGpqanLLZVPbffNcvvfQY3heGsjzPDzPy3at3Exqmoau6+i6jmmaGIaB4zg4joNhGKEsZ0xKyZCuGZcCKMnsRIf3QV3XRwBkYmUzK0JAmSsIguz3fK2t6zqapqFp2og6873Hsiw8z5s+JkAqlZqaycDlTKO5gsZTbjynvkwGXNedOiaA67pT8gFMBOJqxDIAqVRqxI+8IYBEIlE4lKoJn4evZiwDkEgkinKfyeZ748aNpuu6pmma2QzkXplKv+yYlBLTNEkmk86CBQus4QDZDDQ2Nl4/f/5817Isp7S0NDv3T6aNZzUfzXzfRwjhK6XmCCHOAoNKKWkACCEKqqurpwkhZEtLC42NjZOledKsuroaTdOU67olwACgCSEGDCGEBdiu6zq+75NMJkNL+v+LJRIJfN8nkUhEgAgQAK5BehzoPT098e7ubj2VSjFnzpxrKjafSSm5cOEC/f39KUAnrVsTgAkUAYU1NTUPx2KxjUEQTLmWYvOZpmnxjo6O3x48eHA76S4UB3qEUgohRBQoGLoyKTJJp+nyR97kmA1IwANSwODQ1auUSmYP9UNjoQBwAIv0DBUMFb6WZpNuRB9wSYsfUEr5kOdfSiGETrr1DUCQhrhWJkj394A0gKeUCjVo3r9Zv0r2P3yyQqPd16MPAAAAAElFTkSuQmCC">
|
12
|
+
<!ENTITY icon_hyperlink "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAMAAAC67D+PAAAAFVBMVEVmmcwzmcyZzP8AZswAZv////////9E6giVAAAAB3RSTlP///////8AGksDRgAAADhJREFUGFcly0ESAEAEA0Ei6/9P3sEcVB8kmrwFyni0bOeyyDpy9JTLEaOhQq7Ongf5FeMhHS/4AVnsAZubxDVmAAAAAElFTkSuQmCC">
|
13
|
+
<!ENTITY icon_warning "data:image/png;base64,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">
|
14
|
+
<!ENTITY icon_quote "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAN1wAADdcBQiibeAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAU3SURBVGiB7VlPaBRXHP5+82aTSLIrkY3YJR68VmuSPXlRPPQPGg05iD14sZfEUkpbPJQqQVJs0yQlkEDobaE9CaloTlI0InhYNOBi2yAFT0JxZW2ysn/cmTczvx4ym+7Ozs7uzK6kQj54zOzvzbz3fe/3583MEjPjbYay3QRaxY6A7caOgO2G2uoAExMTB4QQVy3LGrEsq+XxnFAUpcDMCVVVv71y5Ure2d/yhKqqLgwPDw8PDg6SEMLzWj8lu3ytlLLr9u3bXzx48OAlgJma+f3Rrcb4+HgoGo1+FI/HSUoJKWVDQpXnThsR1fSHQiEcP36849GjR2NtFxCLxYSu64qiKDBNsyXyAGBZVo3NNE2EQiEA2OU2dttj1gkvwn766+GNCvAi50eQF96IgCCrHVRQ2wW0Sq7tHhgfHw/FYrF69bELAAzDgGEYvsipqtoU+cA5MDExcUBV1Z/27t37vld97+rqEtPT056TOCGlRF9fH44dO4b9+/cHTmDAQ4AQ4uqpU6c+jMfj5Itdk0in07h27RrOnz+/ZWurByzLGjl8+DBpmlZVn5tBo/AhIuzbtw+GYSCfz6OnpycQ+UYCVCEEDMNoG/GKscHM6O7ursodv+Q9BfhBOypL0ErUsoBmCDda2WbKLTO75mJgAX43paB7QYWdiIjYsQK+X2gqB3WbqFmbc0wvQfZvBUC3815fHggaLl4hREQgoq1KV36kLh/LhYSZNQCdAKpeapoS0I5wqSciEokgEokgm80CAHbv3g0hxNY1hmHg3r17xvr6+q9u3BoKCLrCzfRJKTE3N2devHhRhMNh5HI5qKqKyclJSCl1+7bSxsbG8srKys8AXgcS4IzddnmEiEpPnjz5anFxcebChQvhPXv2AAA0TeOFhYUjxWJRBWAAKADYcBPQVBK3kqxeNgD86tWr35PJ5Oj8/PxGMpnUmRnRaLR09uzZAQAv7ZYB8I+zAgFtDiG/HiEi7u3tzV+/fn0tm82+p+v6lw8fPvyso6Ojo7+///uDBw8eWltbKwKo+7Ld0AOVIeRczRZXHwAgpRQA1GQy+Xp2dva7W7duHXr+/HnCNM2+EydOfAqAsLnQgohUIqri/EZDyE20Y1wqFoudAEI2SfXOnTvZqampr58+fTrAzO+cPn26z+ap2GIUKtdY1AkhIlIvX75cQ8rt6MfmNlWpVOqyyVU+8vLS0tLfAL5x2AGgasB6OdBJRKZpmnB+MqncdCptdlWpjO8tmxOKokBRFORyOWiaxrYAaZOz7GP53Ko4N5m5avIaAUQkAKi6rv+WSqVG4/G4UvlGJqVEPp+HEAKRSKSOfm9YloVnz56hUCi8XF1dTdvkpIN8pQDLrQK5CijrSCaT05ZldS4vL3/AzAIADQ0NWaOjoyoRIRwO4+7du3JlZUXA4dZGsPPhz8ePH/8AQLPb6zLxemRdibo8mxCAHrt1A+gAwGfOnDly7ty5xZGRkV0AsLq6Km/cuLGWSCQ+yWQymh8B+C8hS9jcpHLMXPPhthnUeICZmYh0bK4KAdABcCwWG+jv71dN08TNmzdLqVTqr6WlpY8zmUzN7uhDgG6LKAYhD7h4YKuDqBObn03EyZMno4ODg38cPXpUSaVShRcvXkwmEolfcrlc/Q+i3ignlQ6gyMxBx6m/EzOzZntCDAwM/AgA9+/fn02n01OJRKIQdEIbyuYUwYmXUdcDZVy6dOldZv7cNM3JmZmZdKsTth3OXdPZxsbGQo2u2c7W0AP/d7z1f/LtCNhu7AjYbrz1Av4F8/cV1apw1zkAAAAASUVORK5CYII=">
|
15
|
+
<!ENTITY icon_nav_next "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABHNCSVQICAgIfAhkiAAABFpJREFUWIXtl0tsVFUYx3/n3HunLYhQwDRqpKZKhSYIMSAGI+ICI02UBejGBBMUURdu0Lgl7gg0QWNiYtDEBBcErZhACOKjPNqC8jBCqTwDobS0Bfqgnce955zPxcy00zItFyNhw5f8c2fmnDn/3/edx70X7sc9DhWn06J1vvheAICIYJ257X8Sk0xZw3rSt+vnxwEA+HTN1zhnsWKwzmDF4JzBOosr+C2yId/U14X9KVMC/yMAwIEL24lMmshliGyGyKaJbIbQpolsSMYkWTb7XQQk7pg6bkeVmy2lbp21fBsS2/fOAeKEw909AMlVVYpkmW+Lszj/M0DOHUEQGal8m7ubACKCE5fLNi+GgCKXGarEXQHIWjlEHK5AkAVLR4N3bA5FtuGidX42DUUKQAkJIZ9pFkAQUILSgohhMLqOKIsa3gwlJdbvXvQRJsdeBtBUZ27ZQreeA6I+WFiz9PPli1eVgUPIZioiWLGgHQqHVkJoB+gNuxDP4nsaEUgkSljz+jrEESAEIsIPv3wbXuvt+KRYBYoexc9/7H25cvH7q5+orE6c6GjA2AgjIY4IKyEp28+NdBsZmxxxLogI4kCcoAh4qWoVx0/+mW49f6z+4Eb7ZjGvomsg3Wc/3NG45URPb4+tnDoHhwFtQVt6wja6UucwKoUfaPxA4ScUXqCGvnuB5tnKWq52d7hT549f9Cfat4v5jAlw9CuiyKRrt/78Wd8EPUUqJlci2nI9c5l+04kOwAt01jihc581Xs68umIBZbqchkO7B8SZV8a7KY25C5o20TUweHPZd3u+yMyYPIeEX0JfeBXP13j+cKZ+IluBbCU0Dz34GDPLF7Jrb30qMuaNpjoujeUB4I3X2HbIXZk6b6Cz9+b1pXOrnws6kq04HWUz9TWen71qT6E8RWkwkYUPr2RPw85kZ0/7pqaNZst4498WAOBysztWWtP+pFg165nqF/z2ZCvak2HzQON5Ck9rFlSsoKWlJTpx+q/Gxg1mzHkvjFgHUe9Eu/ZYa+M/Xe037LyKl9GeQnv5hafwEoqa6Uu42ZOUxiP7ulNEK4h5S44F0LKeUIWmdm/jzt5EOJWqyfNRGpRWaF/x6KTZlKsqftxVn4qsXnZ0A31xxo0NAHBgMx2ZTPjajt3bUzPK5jO99HEAHvCmMXPCEr7/aVvSZFJrD28K/447JsRYAzlIHwjaml3XtKej3qvdbS8umbc86AkvM7f8VX7d91v6wsUz2xrr7GYgyEkXJDjmdIwFkDctyak0ryt/uFOTavqfMsZULZ61wm89c9I0Hz5w7uhW854ZxAcSBRB+zsNj+NQdAVMMYCjjUUrkVNJ1VvarRzprk8nklKYjB5Nn94Rv9V0gVWCWz16NEjDysWm8CozW0CA2hRjjfk9P6Fh97Yx959J+OZ0b2AF21LVQZjTAeO8FOgdYWMbC7PJQ+ZBRZjZnmJejyFqI9WJS0LeYCgEKdedPqPfjXsS/6zUvFnaUbdsAAAAASUVORK5CYII=">
|
11
16
|
]>
|
12
17
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
13
18
|
<head>
|
14
|
-
<meta http-equiv="content-type" content="
|
15
|
-
<meta name="generator" content="ERBook
|
19
|
+
<meta http-equiv="content-type" content="application/xhtml+xml; charset=utf-8"/>
|
20
|
+
<meta name="generator" content="ERBook 7.0.0"/>
|
16
21
|
|
17
|
-
|
22
|
+
<title>Inochi 1.0.0</title>
|
18
23
|
|
19
|
-
|
24
|
+
<meta name="author" content="Suraj N. Kurapati"/>
|
20
25
|
|
21
|
-
|
26
|
+
<meta name="date" content="04 May 2009"/>
|
22
27
|
|
23
|
-
|
28
|
+
<link rel="alternate" type="application/rss+xml" href="http://snk.tuxfamily.org/lib/inochi/ann.xml"/>
|
24
29
|
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
{
|
29
|
-
color : #000000;
|
30
|
-
background-color : #FFFFFF;
|
31
|
-
line-height : 1.5em;
|
32
|
-
font-family : Calibri, Verdana, sans-serif;
|
33
|
-
}
|
34
|
-
|
35
|
-
/* emphasis */
|
36
|
-
blockquote
|
37
|
-
{
|
38
|
-
color : #333;
|
39
|
-
font-style : italic;
|
40
|
-
}
|
41
|
-
|
42
|
-
em
|
43
|
-
{
|
44
|
-
font-family : Constantia, "Book Antiqua", "URW Bookman L", serif;
|
45
|
-
font-size : 105%;
|
46
|
-
}
|
47
|
-
|
48
|
-
hr
|
49
|
-
{
|
50
|
-
height : 0;
|
51
|
-
border : 0;
|
52
|
-
border-top : thin dashed #000000;
|
53
|
-
}
|
54
|
-
|
55
|
-
/* source code */
|
56
|
-
tt,
|
57
|
-
code,
|
58
|
-
pre
|
59
|
-
{
|
60
|
-
font-family : Monaco, Consolas, "Lucida Console", monospace;
|
61
|
-
font-size : 100%; /* appears like "size: small" otherwise */
|
62
|
-
}
|
63
|
-
|
64
|
-
/* hyperlinks */
|
65
|
-
a > img
|
66
|
-
{
|
67
|
-
border : none;
|
68
|
-
}
|
69
|
-
|
70
|
-
a img
|
71
|
-
{
|
72
|
-
_border : none; /* for IE6 */
|
73
|
-
}
|
74
|
-
|
75
|
-
/* headings */
|
76
|
-
h1,
|
77
|
-
h2,
|
78
|
-
h3,
|
79
|
-
h4,
|
80
|
-
h5,
|
81
|
-
h6,
|
82
|
-
.title
|
83
|
-
{
|
84
|
-
font-weight : lighter;
|
85
|
-
font-family : Constantia, "Book Antiqua", "URW Bookman L", serif;
|
86
|
-
}
|
87
|
-
|
88
|
-
#lof h1,
|
89
|
-
#lof h2,
|
90
|
-
#lof h3,
|
91
|
-
#lof h4,
|
92
|
-
#lof h5,
|
93
|
-
#lof h6
|
94
|
-
{
|
95
|
-
margin-top : 1.25em;
|
96
|
-
}
|
97
|
-
|
98
|
-
#content h1,
|
99
|
-
#content h2,
|
100
|
-
#content h3,
|
101
|
-
#content h4,
|
102
|
-
#content h5,
|
103
|
-
#content h6
|
104
|
-
{
|
105
|
-
margin-top : 2.5em;
|
106
|
-
line-height : 1.25em;
|
107
|
-
}
|
108
|
-
|
109
|
-
#content h1
|
110
|
-
{
|
111
|
-
font-size : 2.0em;
|
112
|
-
}
|
113
|
-
|
114
|
-
#content h2
|
115
|
-
{
|
116
|
-
font-size : 1.8em;
|
117
|
-
}
|
118
|
-
|
119
|
-
#content h3
|
120
|
-
{
|
121
|
-
font-size : 1.6em;
|
122
|
-
}
|
123
|
-
|
124
|
-
#content h4
|
125
|
-
{
|
126
|
-
font-size : 1.4em;
|
127
|
-
}
|
128
|
-
|
129
|
-
#content h5
|
130
|
-
{
|
131
|
-
font-size : 1.2em;
|
132
|
-
}
|
133
|
-
|
134
|
-
#content h6
|
135
|
-
{
|
136
|
-
font-size : 1.0em;
|
137
|
-
}
|
138
|
-
|
139
|
-
/* tables */
|
140
|
-
table
|
141
|
-
{
|
142
|
-
border-collapse : collapse; /* no spacing between cell borders */
|
143
|
-
margin : auto; /* center horizontally */
|
144
|
-
margin-top : 1em;
|
145
|
-
}
|
146
|
-
|
147
|
-
th,
|
148
|
-
td
|
149
|
-
{
|
150
|
-
padding : 1em;
|
151
|
-
border : 1px solid #bbb;
|
152
|
-
vertical-align : top;
|
153
|
-
background-color : #FFFFFF;
|
154
|
-
_background-color : #FFFFFF; /* for IE6 */
|
155
|
-
}
|
156
|
-
|
157
|
-
th
|
158
|
-
{
|
159
|
-
background-color : #F5F5F5;
|
160
|
-
}
|
161
|
-
|
162
|
-
/* document structure */
|
163
|
-
#header
|
164
|
-
{
|
165
|
-
text-align : center;
|
166
|
-
}
|
167
|
-
|
168
|
-
.logo,
|
169
|
-
.header_outside_above,
|
170
|
-
#header,
|
171
|
-
.header_outside_below
|
172
|
-
{
|
173
|
-
margin-bottom : 5em;
|
174
|
-
}
|
175
|
-
|
176
|
-
.footer_outside_above,
|
177
|
-
#footer,
|
178
|
-
.footer_outside_below
|
179
|
-
{
|
180
|
-
margin-top : 5em;
|
181
|
-
}
|
182
|
-
|
183
|
-
#header .header_inside_above,
|
184
|
-
#footer .footer_inside_above
|
185
|
-
{
|
186
|
-
margin-bottom : 4em;
|
187
|
-
}
|
188
|
-
|
189
|
-
#header .header_inside_below,
|
190
|
-
#footer .footer_inside_below
|
191
|
-
{
|
192
|
-
margin-top : 4em;
|
193
|
-
}
|
194
|
-
|
195
|
-
#Abstract
|
196
|
-
{
|
197
|
-
margin-bottom : 5em;
|
198
|
-
}
|
199
|
-
|
200
|
-
#toc li
|
201
|
-
{
|
202
|
-
list-style-type : none;
|
203
|
-
}
|
204
|
-
|
205
|
-
#toc li ul
|
206
|
-
{
|
207
|
-
padding-bottom : 1em;
|
208
|
-
border-left : thick solid #F5F5F5;
|
209
|
-
_border-left : none; /* for IE6 */
|
210
|
-
}
|
211
|
-
|
212
|
-
#toc li ul:hover
|
213
|
-
{
|
214
|
-
border-color : #DCDCDC;
|
215
|
-
}
|
216
|
-
|
217
|
-
#toc > ul
|
218
|
-
{
|
219
|
-
padding-left : 1em;
|
220
|
-
}
|
221
|
-
|
222
|
-
#bib
|
223
|
-
{
|
224
|
-
margin-top : 5em;
|
225
|
-
}
|
226
|
-
|
227
|
-
#footer
|
228
|
-
{
|
229
|
-
border-top : thick dotted #DCDCDC;
|
230
|
-
padding-top : 1em;
|
231
|
-
text-align : center;
|
232
|
-
}
|
233
|
-
|
234
|
-
#footer-credits
|
235
|
-
{
|
236
|
-
margin-top : 2em;
|
237
|
-
margin-bottom : 2em;
|
238
|
-
}
|
239
|
-
|
240
|
-
/* document nodes */
|
241
|
-
.part > .title,
|
242
|
-
.chapter > .title
|
243
|
-
{
|
244
|
-
padding-bottom : 0.5em;
|
245
|
-
}
|
246
|
-
|
247
|
-
.part > .title > big,
|
248
|
-
.chapter > .title > big
|
249
|
-
{
|
250
|
-
display : block;
|
251
|
-
margin-top : 0.25em;
|
252
|
-
}
|
253
|
-
|
254
|
-
.part .title big,
|
255
|
-
.chapter .title big
|
256
|
-
{
|
257
|
-
_display : block; /* for IE6 */
|
258
|
-
_margin-top : 0.25em; /* for IE6 */
|
259
|
-
_margin-bottom : 0.75em; /* for IE6 */
|
260
|
-
}
|
261
|
-
|
262
|
-
.paragraph > .title,
|
263
|
-
.tip > .title,
|
264
|
-
.note > .title,
|
265
|
-
.caution > .title,
|
266
|
-
.warning > .title,
|
267
|
-
.important > .title,
|
268
|
-
.figure > .title,
|
269
|
-
.table > .title,
|
270
|
-
.example > .title,
|
271
|
-
.equation > .title,
|
272
|
-
.procedure > .title
|
273
|
-
{
|
274
|
-
font-size : large;
|
275
|
-
margin-top : 2em;
|
276
|
-
}
|
277
|
-
|
278
|
-
.paragraph .title,
|
279
|
-
.tip .title,
|
280
|
-
.note .title,
|
281
|
-
.caution .title,
|
282
|
-
.warning .title,
|
283
|
-
.important .title,
|
284
|
-
.figure .title,
|
285
|
-
.table .title,
|
286
|
-
.example .title,
|
287
|
-
.equation .title,
|
288
|
-
.procedure .title
|
289
|
-
{
|
290
|
-
_font-size : large; /* for IE6 */
|
291
|
-
_font-weight : bold; /* large is not bold in IE6 */
|
292
|
-
_margin-top : 2em; /* for IE6 */
|
293
|
-
}
|
294
|
-
|
295
|
-
.tip ,
|
296
|
-
.note ,
|
297
|
-
.caution ,
|
298
|
-
.warning ,
|
299
|
-
.important,
|
300
|
-
.figure ,
|
301
|
-
.table ,
|
302
|
-
.example ,
|
303
|
-
.equation ,
|
304
|
-
.procedure
|
305
|
-
{
|
306
|
-
margin : 3em;
|
307
|
-
}
|
308
|
-
|
309
|
-
.tip .nav,
|
310
|
-
.note .nav,
|
311
|
-
.caution .nav,
|
312
|
-
.warning .nav,
|
313
|
-
.important .nav,
|
314
|
-
.figure .nav,
|
315
|
-
.table .nav,
|
316
|
-
.example .nav,
|
317
|
-
.equation .nav,
|
318
|
-
.procedure .nav
|
319
|
-
{
|
320
|
-
margin-left : -7.65em;
|
321
|
-
}
|
322
|
-
|
323
|
-
.tip > .content,
|
324
|
-
.note > .content,
|
325
|
-
.caution > .content,
|
326
|
-
.warning > .content,
|
327
|
-
.important > .content,
|
328
|
-
.figure > .content,
|
329
|
-
.table > .content,
|
330
|
-
.example > .content,
|
331
|
-
.equation > .content,
|
332
|
-
.procedure > .content
|
333
|
-
{
|
334
|
-
min-height : 48px; /* 48px is height of icon */
|
335
|
-
}
|
336
|
-
|
337
|
-
.tip > .content > .icon,
|
338
|
-
.note > .content > .icon,
|
339
|
-
.caution > .content > .icon,
|
340
|
-
.warning > .content > .icon,
|
341
|
-
.important > .content > .icon
|
342
|
-
{
|
343
|
-
float : left;
|
344
|
-
margin : 0 1em 1em 0; /* top right bottom left */
|
345
|
-
}
|
346
|
-
|
347
|
-
.tip .content .icon,
|
348
|
-
.note .content .icon,
|
349
|
-
.caution .content .icon,
|
350
|
-
.warning .content .icon,
|
351
|
-
.important .content .icon
|
352
|
-
{
|
353
|
-
_display : none; /* IE6 cannot display embedded images */
|
354
|
-
}
|
355
|
-
|
356
|
-
.figure > .title
|
357
|
-
{
|
358
|
-
text-align : center;
|
359
|
-
}
|
360
|
-
|
361
|
-
.figure .title
|
362
|
-
{
|
363
|
-
_text-align : center; /* for IE6 */
|
364
|
-
}
|
365
|
-
|
366
|
-
.figure > .content img
|
367
|
-
{
|
368
|
-
display : block;
|
369
|
-
margin : auto;
|
370
|
-
}
|
371
|
-
|
372
|
-
.figure .content img
|
373
|
-
{
|
374
|
-
_display : block; /* for IE6 */
|
375
|
-
_margin : auto; /* for IE6 */
|
376
|
-
}
|
377
|
-
]]>
|
378
|
-
</style>
|
379
|
-
<style type="text/css" media="screen">
|
380
|
-
<![CDATA[/* general */
|
381
|
-
body
|
382
|
-
{
|
383
|
-
margin : 0;
|
384
|
-
padding : 0;
|
385
|
-
padding-left : 10em; /* room for local navigation menus */
|
386
|
-
padding-right : 10em; /* keep #body visually centered */
|
387
|
-
background-color : #808080;
|
388
|
-
}
|
389
|
-
|
390
|
-
/* the actual content of the <body> element */
|
391
|
-
#body
|
392
|
-
{
|
393
|
-
margin : auto;
|
394
|
-
max-width : 38em;
|
395
|
-
|
396
|
-
background-color : #FFFFFF;
|
397
|
-
border-left : 0.35em solid #696969;
|
398
|
-
border-right : 0.35em solid #696969;
|
399
|
-
padding : 2em;
|
400
|
-
}
|
401
|
-
|
402
|
-
/* source code */
|
403
|
-
tt
|
404
|
-
{
|
405
|
-
background-color : #F0F8FF;
|
406
|
-
}
|
407
|
-
|
408
|
-
pre
|
409
|
-
{
|
410
|
-
cursor : text;
|
411
|
-
line-height : normal;
|
412
|
-
border : 1px solid #b1d827;
|
413
|
-
background-color : #F5FFDF;
|
414
|
-
padding : 1em;
|
415
|
-
|
416
|
-
/* fit container to content; no overflow! */
|
417
|
-
display : inline-block;
|
418
|
-
margin : 0;
|
419
|
-
min-width : 92.5%;
|
420
|
-
}
|
421
|
-
|
422
|
-
/* output of the syntax coloring library */
|
423
|
-
pre.code
|
424
|
-
{
|
425
|
-
background-color : #FFFFE8;
|
426
|
-
border-color : #EEDD88;
|
427
|
-
}
|
428
|
-
|
429
|
-
/* hyperlinks */
|
430
|
-
a
|
431
|
-
{
|
432
|
-
text-decoration : none;
|
433
|
-
}
|
434
|
-
|
435
|
-
a:hover
|
436
|
-
{
|
437
|
-
text-decoration : underline;
|
438
|
-
}
|
439
|
-
|
440
|
-
a:link
|
441
|
-
{
|
442
|
-
color : #0038E1; /* maximum saturation of RoyalBlue */
|
443
|
-
}
|
444
|
-
|
445
|
-
a:visited
|
446
|
-
{
|
447
|
-
color : #800080;
|
448
|
-
}
|
449
|
-
|
450
|
-
#toc a:target:after,
|
451
|
-
#lof a:target:after,
|
452
|
-
#nav a:target:after
|
453
|
-
{
|
454
|
-
content : "★"; /* ★ */
|
455
|
-
color : #FF0000;
|
456
|
-
font-size : x-large;
|
457
|
-
padding-left : 0.125em;
|
458
|
-
}
|
459
|
-
|
460
|
-
/* document structure */
|
461
|
-
/* mini navigation menu beside every block node */
|
462
|
-
.nav
|
463
|
-
{
|
464
|
-
width : 4em;
|
465
|
-
float : left; /* detach from main content */
|
466
|
-
margin-left : -6.075em;
|
467
|
-
|
468
|
-
font-size : 1.9em;
|
469
|
-
letter-spacing : 0.25em;
|
470
|
-
text-align : center;
|
471
|
-
|
472
|
-
color : #696969; /* same colors to hide non-links */
|
473
|
-
background-color : #696969;
|
474
|
-
padding : 0.5em;
|
475
|
-
margin-top : -0.5em;
|
476
|
-
}
|
477
|
-
|
478
|
-
.nav:target,
|
479
|
-
.nav:hover
|
480
|
-
{
|
481
|
-
color : #333; /* same colors to hide non-links */
|
482
|
-
background-color : #333;
|
483
|
-
}
|
484
|
-
|
485
|
-
.nav a:link,
|
486
|
-
.nav a:visited
|
487
|
-
{
|
488
|
-
color : #D3D3D3;
|
489
|
-
}
|
490
|
-
|
491
|
-
.nav a:hover,
|
492
|
-
#nav a:target:after {
|
493
|
-
color : #9ACD32;
|
494
|
-
text-decoration : none;
|
495
|
-
}
|
496
|
-
|
497
|
-
/* global navigation menu at the top of the page */
|
498
|
-
#nav
|
499
|
-
{
|
500
|
-
font-size : 1em;
|
501
|
-
letter-spacing : 0;
|
502
|
-
width : 8.5em;
|
503
|
-
margin-left : -11.5em;
|
504
|
-
}
|
505
|
-
|
506
|
-
#nav li
|
507
|
-
{
|
508
|
-
list-style-type : none;
|
509
|
-
}
|
510
|
-
]]>
|
511
|
-
</style>
|
512
|
-
<style type="text/css" media="print">
|
513
|
-
<![CDATA[/* source code */
|
514
|
-
tt
|
515
|
-
{
|
516
|
-
font-weight : normal;
|
517
|
-
}
|
518
|
-
|
519
|
-
pre
|
520
|
-
{
|
521
|
-
border : none;
|
522
|
-
}
|
523
|
-
|
524
|
-
/* headings */
|
525
|
-
h1,
|
526
|
-
h2,
|
527
|
-
h3,
|
528
|
-
h4,
|
529
|
-
h5,
|
530
|
-
h6
|
531
|
-
{
|
532
|
-
font-weight : normal;
|
533
|
-
clear : both;
|
534
|
-
}
|
535
|
-
|
536
|
-
/* hyperlinks */
|
537
|
-
/* blend all hyperlinks with normal text */
|
538
|
-
a:link,
|
539
|
-
a:visited
|
540
|
-
{
|
541
|
-
color : #000000;
|
542
|
-
text-decoration : none;
|
543
|
-
}
|
544
|
-
|
545
|
-
/* emphasize external and cross-reference hyperlinks */
|
546
|
-
a[href]:not([href^="#"]):link,
|
547
|
-
a[href]:not([href^="#"]):visited,
|
548
|
-
a.xref[title]:link,
|
549
|
-
a.xref[title]:visited
|
550
|
-
{
|
551
|
-
color : #0000FF;
|
552
|
-
text-decoration : underline;
|
553
|
-
font-weight : bolder;
|
554
|
-
}
|
555
|
-
|
556
|
-
/* show URL of destination for external hyperlinks */
|
557
|
-
a[href]:not([href^="#"]):after
|
558
|
-
{
|
559
|
-
content : " " attr(href);
|
560
|
-
font-family : Monaco, Consolas, "Lucida Console", monospace;
|
561
|
-
}
|
562
|
-
|
563
|
-
/* show name of destination for cross-references */
|
564
|
-
a.xref[title]:after
|
565
|
-
{
|
566
|
-
content : " " attr(title);
|
567
|
-
}
|
568
|
-
|
569
|
-
a:after
|
570
|
-
{
|
571
|
-
font-weight : normal;
|
572
|
-
font-size : smaller;
|
573
|
-
}
|
574
|
-
|
575
|
-
/* document structure */
|
576
|
-
#nav,
|
577
|
-
.nav,
|
578
|
-
#lof
|
579
|
-
{
|
580
|
-
display : none;
|
581
|
-
}
|
582
|
-
|
583
|
-
#toc,
|
584
|
-
.part,
|
585
|
-
.chapter,
|
586
|
-
#bib
|
587
|
-
{
|
588
|
-
page-break-before : always;
|
589
|
-
}
|
30
|
+
<style type="text/css" media="all">
|
31
|
+
/*<![CDATA[*/ body{color:#000;background-color:#FFF;line-height:1.5em;font-family:Calibri, Verdana, sans-serif}blockquote{color:#333;font-style:italic}em,strong,dt{font-family:Constantia, "Book Antiqua", "URW Bookman L", serif}hr{height:0;border:0;border-top:thin dashed#000}tt,code,pre{font-family:Monaco, Consolas, "Lucida Console", monospace;font-size:100%}code.para{white-space:pre}a > img{border:none}dt{margin-top:1.5em;font-weight:bolder}h1,h2,h3,h4,h5,h6,.title{font-weight:lighter;font-family:Constantia, "Book Antiqua", "URW Bookman L", serif}#lof h1,#lof h2,#lof h3,#lof h4,#lof h5,#lof h6{margin-top:1.25em}#content h1,#content h2,#content h3,#content h4,#content h5,#content h6{margin-top:2.5em;line-height:1.25em}#content h1{font-size:2.0em}#content h2{font-size:1.8em}#content h3{font-size:1.6em}#content h4{font-size:1.4em}#content h5{font-size:1.2em}#content h6{font-size:1.0em}table{border-collapse:collapse;margin:auto;margin-top:1em}th,td{padding:1em;border:1px solid #bbb;vertical-align:top;background-color:#FFF}th{background-color:#F5F5F5}#header{text-align:center}#header > .title{font-size:2.25em}#header > .subtitle{}#header > .authors{margin-top:1.625em;margin-bottom:-0.25em}#header > .date{}.logo,.header_outside_above,#header,.header_outside_below{margin-bottom:5em}.footer_outside_above,#footer,.footer_outside_below{margin-top:5em}#header .header_inside_above,#footer .footer_inside_above{margin-bottom:4em}#header .header_inside_below,#footer .footer_inside_below{margin-top:4em}#Abstract{margin-bottom:5em}#toc li{list-style-type:none}#toc li ul{padding-bottom:1em;border-left:thick solid #F5F5F5}#toc li ul:hover{border-color:#DCDCDC}#toc > ul{padding-left:1em}#bib{margin-top:5em}#footer{border-top:thick dotted #DCDCDC;padding-top:1em;text-align:center}#footer-credits{margin-top:2em;margin-bottom:2em}.part > .title,.chapter > .title{padding-bottom:.5em}.part > .title > big,.chapter > .title > big{display:block;margin-top:.25em}.paragraph > .title,.tip > .title,.note > .title,.caution > .title,.warning > .title,.important > .title,.figure > .title,.table > .title,.example > .title,.equation > .title,.procedure > .title{font-size:large;margin-top:2em}.tip,.note,.caution,.warning,.important,.figure,.table,.example,.equation,.procedure{margin:3em}.tip .nav,.note .nav,.caution .nav,.warning .nav,.important .nav,.figure .nav,.table .nav,.example .nav,.equation .nav,.procedure .nav{margin-right:-3em}.tip > .content,.note > .content,.caution > .content,.warning > .content,.important > .content,.figure > .content,.table > .content,.example > .content,.equation > .content,.procedure > .content{min-height:48px}.tip > .content > .icon,.note > .content > .icon,.caution > .content > .icon,.warning > .content > .icon,.important > .content > .icon{float:left;margin:0 1em 1em 0}.figure > .title{text-align:center}.figure > .content img{display:block;margin:auto}/*]]>*/
|
32
|
+
</style>
|
590
33
|
|
591
|
-
|
592
|
-
|
593
|
-
|
594
|
-
{
|
595
|
-
padding-bottom : 0.5em;
|
596
|
-
}
|
34
|
+
<style type="text/css" media="screen">
|
35
|
+
/*<![CDATA[*/ body{margin:0;padding:.5em;background-color:#FFF}#body{margin:auto;max-width:38em}tt{background-color:#F0F8FF}pre,code.para{cursor:text;line-height:normal;border:1px solid #b1d827;background-color:#F5FFDF;padding:1em;display:inline-block;margin:0;min-width:92.5%}code.para,pre.para{background-color:#FFFFE8;border-color:#ED8}a{text-decoration:none}a:hover{text-decoration:underline}a:link{color:#0038E1}a:visited{color:#800080}#toc a:target,#lof a:target,#nav a:target{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAIkSURBVDiNjZJNSxtRFIbfc+cjmZkkfjSCEFuQtghCwUWj0KXb/IQs3GlBKBQ3waWLoNBfIBSkJYI/ILsupIsuGrIqLQGRoEak6KLNmExzZ+aeLuJMZ4oLz+7e97nPORwuMTMeUvOVvTrAW0TUZua1brN2AgAUCVZeH9aZeUsToh2Eaq21Xz3593h3U9P1vcKjojPyPDV0+z0wL3abtYEAgOWNxmYmY7x5ufTMnCsVV4QQn8rrDSduT7STny46mm7AzheEputTAFYBQIxz2llceOxYVgZP5maEbZkxMF/ZnQVg64YR+8xM1gbwCgBEeb0xC8B27GwMTE7mbKIxAKCsG8YouQ/dNDUiEU9QzjnZFFDIWZqmaauRwDAzuf8EYFYvYsFEwUkB+ZyFMBwDADwAKpmzYoDIiwQeM6eAMFQggnd37ARSDpN54EsQqB0JOreDPynAHXgQQrRjQeBrKYGUklkdA4AOoDMcjlKA63oyCMLju+MpK2XfXF4kERPA10hwKv3A/vzl+71At1mTAFINkkUP+crzld0egFLiyu82a2Y0AZY3DnvMnAJa+1Uz7kJ0npuaLmUsG74coX9zfRVlOgBogs6fPy2VZooT6LtDfPtxdpWQgZkPPLe/JDTdGvb7koGjKBMAEITq4OLyxnNvPZxdXEtmPkK6PgS+/+739c9bX47eg7me2kF5vZElom0Ab4noo1Jqu7Vf/XXPLkS3WUv9mb/vR+THZPMfuQAAAABJRU5ErkJggg==");background-position:center right;background-repeat:no-repeat;padding-right:20px}.nav{float:right;margin-top:-0.25em}.nav > a > img{border-top:thick solid#FFF}.nav > a > img:hover{border-top:thick solid #FA8072}#nav{margin-bottom:4em;text-align:center}/*]]>*/
|
36
|
+
</style>
|
597
37
|
|
598
|
-
|
599
|
-
|
600
|
-
|
601
|
-
_padding-bottom : 0.5em; /* for IE6 */
|
602
|
-
}
|
603
|
-
]]>
|
604
|
-
</style>
|
38
|
+
<style type="text/css" media="print">
|
39
|
+
/*<![CDATA[*/ tt{font-weight:400}pre{border:none}h1,h2,h3,h4,h5,h6{font-weight:400;clear:both}a:link,a:visited{color:#000;text-decoration:none}a[href]:not([href^="#"]):link,a[href]:not([href^="#"]):visited,a.xref[title]:link,a.xref[title]:visited{color:#00F;text-decoration:underline;font-weight:bolder}a[href]:not([href^="#"]):after{content:" " attr(href);font-family:Monaco, Consolas, "Lucida Console", monospace}a.xref[title]:after{content:" " attr(title)}a:after{font-weight:400;font-size:smaller}#nav,.nav,#lof{display:none}#toc,.part,.chapter,#bib{page-break-before:always}.part > .title > big,.chapter > .title > big{padding-bottom:.5em}/*]]>*/
|
40
|
+
</style>
|
605
41
|
|
606
42
|
<style type="text/css" media="screen">
|
607
|
-
|
43
|
+
/*<![CDATA[*/
|
608
44
|
/* decorate external hyperlinks with a visual indicator */
|
609
45
|
a[href]:not([href^="#"])
|
610
46
|
{
|
@@ -617,81 +53,146 @@
|
|
617
53
|
/* display icon for blockquote elements */
|
618
54
|
blockquote
|
619
55
|
{
|
620
|
-
background-image : url("data:image/png;base64,
|
56
|
+
background-image : url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAN1wAADdcBQiibeAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAU3SURBVGiB7VlPaBRXHP5+82aTSLIrkY3YJR68VmuSPXlRPPQPGg05iD14sZfEUkpbPJQqQVJs0yQlkEDobaE9CaloTlI0InhYNOBi2yAFT0JxZW2ysn/cmTczvx4ym+7Ozs7uzK6kQj54zOzvzbz3fe/3583MEjPjbYay3QRaxY6A7caOgO2G2uoAExMTB4QQVy3LGrEsq+XxnFAUpcDMCVVVv71y5Ure2d/yhKqqLgwPDw8PDg6SEMLzWj8lu3ytlLLr9u3bXzx48OAlgJma+f3Rrcb4+HgoGo1+FI/HSUoJKWVDQpXnThsR1fSHQiEcP36849GjR2NtFxCLxYSu64qiKDBNsyXyAGBZVo3NNE2EQiEA2OU2dttj1gkvwn766+GNCvAi50eQF96IgCCrHVRQ2wW0Sq7tHhgfHw/FYrF69bELAAzDgGEYvsipqtoU+cA5MDExcUBV1Z/27t37vld97+rqEtPT056TOCGlRF9fH44dO4b9+/cHTmDAQ4AQ4uqpU6c+jMfj5Itdk0in07h27RrOnz+/ZWurByzLGjl8+DBpmlZVn5tBo/AhIuzbtw+GYSCfz6OnpycQ+UYCVCEEDMNoG/GKscHM6O7ursodv+Q9BfhBOypL0ErUsoBmCDda2WbKLTO75mJgAX43paB7QYWdiIjYsQK+X2gqB3WbqFmbc0wvQfZvBUC3815fHggaLl4hREQgoq1KV36kLh/LhYSZNQCdAKpeapoS0I5wqSciEokgEokgm80CAHbv3g0hxNY1hmHg3r17xvr6+q9u3BoKCLrCzfRJKTE3N2devHhRhMNh5HI5qKqKyclJSCl1+7bSxsbG8srKys8AXgcS4IzddnmEiEpPnjz5anFxcebChQvhPXv2AAA0TeOFhYUjxWJRBWAAKADYcBPQVBK3kqxeNgD86tWr35PJ5Oj8/PxGMpnUmRnRaLR09uzZAQAv7ZYB8I+zAgFtDiG/HiEi7u3tzV+/fn0tm82+p+v6lw8fPvyso6Ojo7+///uDBw8eWltbKwKo+7Ld0AOVIeRczRZXHwAgpRQA1GQy+Xp2dva7W7duHXr+/HnCNM2+EydOfAqAsLnQgohUIqri/EZDyE20Y1wqFoudAEI2SfXOnTvZqampr58+fTrAzO+cPn26z+ap2GIUKtdY1AkhIlIvX75cQ8rt6MfmNlWpVOqyyVU+8vLS0tLfAL5x2AGgasB6OdBJRKZpmnB+MqncdCptdlWpjO8tmxOKokBRFORyOWiaxrYAaZOz7GP53Ko4N5m5avIaAUQkAKi6rv+WSqVG4/G4UvlGJqVEPp+HEAKRSKSOfm9YloVnz56hUCi8XF1dTdvkpIN8pQDLrQK5CijrSCaT05ZldS4vL3/AzAIADQ0NWaOjoyoRIRwO4+7du3JlZUXA4dZGsPPhz8ePH/8AQLPb6zLxemRdibo8mxCAHrt1A+gAwGfOnDly7ty5xZGRkV0AsLq6Km/cuLGWSCQ+yWQymh8B+C8hS9jcpHLMXPPhthnUeICZmYh0bK4KAdABcCwWG+jv71dN08TNmzdLqVTqr6WlpY8zmUzN7uhDgG6LKAYhD7h4YKuDqBObn03EyZMno4ODg38cPXpUSaVShRcvXkwmEolfcrlc/Q+i3ignlQ6gyMxBx6m/EzOzZntCDAwM/AgA9+/fn02n01OJRKIQdEIbyuYUwYmXUdcDZVy6dOldZv7cNM3JmZmZdKsTth3OXdPZxsbGQo2u2c7W0AP/d7z1f/LtCNhu7AjYbrz1Av4F8/cV1apw1zkAAAAASUVORK5CYII=");
|
621
57
|
background-repeat : no-repeat;
|
622
58
|
margin-left : 0;
|
623
59
|
padding-left : 65px;
|
624
60
|
min-height : 50px;
|
625
61
|
}
|
626
|
-
]]
|
62
|
+
/*]]>*/
|
627
63
|
</style>
|
64
|
+
|
65
|
+
<script type="text/javascript">
|
66
|
+
//<![CDATA[
|
67
|
+
/*
|
68
|
+
* jQuery JavaScript Library v1.3.2
|
69
|
+
* http://jquery.com/
|
70
|
+
*
|
71
|
+
* Copyright (c) 2009 John Resig
|
72
|
+
* Dual licensed under the MIT and GPL licenses.
|
73
|
+
* http://docs.jquery.com/License
|
74
|
+
*
|
75
|
+
* Date: 2009-02-19 17:34:21 -0500 (Thu, 19 Feb 2009)
|
76
|
+
* Revision: 6246
|
77
|
+
*/
|
78
|
+
(function(){var l=this,g,y=l.jQuery,p=l.$,o=l.jQuery=l.$=function(E,F){return new o.fn.init(E,F)},D=/^[^<]*(<(.|\s)+>)[^>]*$|^#([\w-]+)$/,f=/^.[^:#\[\.,]*$/;o.fn=o.prototype={init:function(E,H){E=E||document;if(E.nodeType){this[0]=E;this.length=1;this.context=E;return this}if(typeof E==="string"){var G=D.exec(E);if(G&&(G[1]||!H)){if(G[1]){E=o.clean([G[1]],H)}else{var I=document.getElementById(G[3]);if(I&&I.id!=G[3]){return o().find(E)}var F=o(I||[]);F.context=document;F.selector=E;return F}}else{return o(H).find(E)}}else{if(o.isFunction(E)){return o(document).ready(E)}}if(E.selector&&E.context){this.selector=E.selector;this.context=E.context}return this.setArray(o.isArray(E)?E:o.makeArray(E))},selector:"",jquery:"1.3.2",size:function(){return this.length},get:function(E){return E===g?Array.prototype.slice.call(this):this[E]},pushStack:function(F,H,E){var G=o(F);G.prevObject=this;G.context=this.context;if(H==="find"){G.selector=this.selector+(this.selector?" ":"")+E}else{if(H){G.selector=this.selector+"."+H+"("+E+")"}}return G},setArray:function(E){this.length=0;Array.prototype.push.apply(this,E);return this},each:function(F,E){return o.each(this,F,E)},index:function(E){return o.inArray(E&&E.jquery?E[0]:E,this)},attr:function(F,H,G){var E=F;if(typeof F==="string"){if(H===g){return this[0]&&o[G||"attr"](this[0],F)}else{E={};E[F]=H}}return this.each(function(I){for(F in E){o.attr(G?this.style:this,F,o.prop(this,E[F],G,I,F))}})},css:function(E,F){if((E=="width"||E=="height")&&parseFloat(F)<0){F=g}return this.attr(E,F,"curCSS")},text:function(F){if(typeof F!=="object"&&F!=null){return this.empty().append((this[0]&&this[0].ownerDocument||document).createTextNode(F))}var E="";o.each(F||this,function(){o.each(this.childNodes,function(){if(this.nodeType!=8){E+=this.nodeType!=1?this.nodeValue:o.fn.text([this])}})});return E},wrapAll:function(E){if(this[0]){var F=o(E,this[0].ownerDocument).clone();if(this[0].parentNode){F.insertBefore(this[0])}F.map(function(){var G=this;while(G.firstChild){G=G.firstChild}return G}).append(this)}return this},wrapInner:function(E){return this.each(function(){o(this).contents().wrapAll(E)})},wrap:function(E){return this.each(function(){o(this).wrapAll(E)})},append:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.appendChild(E)}})},prepend:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.insertBefore(E,this.firstChild)}})},before:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this)})},after:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this.nextSibling)})},end:function(){return this.prevObject||o([])},push:[].push,sort:[].sort,splice:[].splice,find:function(E){if(this.length===1){var F=this.pushStack([],"find",E);F.length=0;o.find(E,this[0],F);return F}else{return this.pushStack(o.unique(o.map(this,function(G){return o.find(E,G)})),"find",E)}},clone:function(G){var E=this.map(function(){if(!o.support.noCloneEvent&&!o.isXMLDoc(this)){var I=this.outerHTML;if(!I){var J=this.ownerDocument.createElement("div");J.appendChild(this.cloneNode(true));I=J.innerHTML}return o.clean([I.replace(/ jQuery\d+="(?:\d+|null)"/g,"").replace(/^\s*/,"")])[0]}else{return this.cloneNode(true)}});if(G===true){var H=this.find("*").andSelf(),F=0;E.find("*").andSelf().each(function(){if(this.nodeName!==H[F].nodeName){return}var I=o.data(H[F],"events");for(var K in I){for(var J in I[K]){o.event.add(this,K,I[K][J],I[K][J].data)}}F++})}return E},filter:function(E){return this.pushStack(o.isFunction(E)&&o.grep(this,function(G,F){return E.call(G,F)})||o.multiFilter(E,o.grep(this,function(F){return F.nodeType===1})),"filter",E)},closest:function(E){var G=o.expr.match.POS.test(E)?o(E):null,F=0;return this.map(function(){var H=this;while(H&&H.ownerDocument){if(G?G.index(H)>-1:o(H).is(E)){o.data(H,"closest",F);return H}H=H.parentNode;F++}})},not:function(E){if(typeof E==="string"){if(f.test(E)){return this.pushStack(o.multiFilter(E,this,true),"not",E)}else{E=o.multiFilter(E,this)}}var F=E.length&&E[E.length-1]!==g&&!E.nodeType;return this.filter(function(){return F?o.inArray(this,E)<0:this!=E})},add:function(E){return this.pushStack(o.unique(o.merge(this.get(),typeof E==="string"?o(E):o.makeArray(E))))},is:function(E){return !!E&&o.multiFilter(E,this).length>0},hasClass:function(E){return !!E&&this.is("."+E)},val:function(K){if(K===g){var E=this[0];if(E){if(o.nodeName(E,"option")){return(E.attributes.value||{}).specified?E.value:E.text}if(o.nodeName(E,"select")){var I=E.selectedIndex,L=[],M=E.options,H=E.type=="select-one";if(I<0){return null}for(var F=H?I:0,J=H?I+1:M.length;F<J;F++){var G=M[F];if(G.selected){K=o(G).val();if(H){return K}L.push(K)}}return L}return(E.value||"").replace(/\r/g,"")}return g}if(typeof K==="number"){K+=""}return this.each(function(){if(this.nodeType!=1){return}if(o.isArray(K)&&/radio|checkbox/.test(this.type)){this.checked=(o.inArray(this.value,K)>=0||o.inArray(this.name,K)>=0)}else{if(o.nodeName(this,"select")){var N=o.makeArray(K);o("option",this).each(function(){this.selected=(o.inArray(this.value,N)>=0||o.inArray(this.text,N)>=0)});if(!N.length){this.selectedIndex=-1}}else{this.value=K}}})},html:function(E){return E===g?(this[0]?this[0].innerHTML.replace(/ jQuery\d+="(?:\d+|null)"/g,""):null):this.empty().append(E)},replaceWith:function(E){return this.after(E).remove()},eq:function(E){return this.slice(E,+E+1)},slice:function(){return this.pushStack(Array.prototype.slice.apply(this,arguments),"slice",Array.prototype.slice.call(arguments).join(","))},map:function(E){return this.pushStack(o.map(this,function(G,F){return E.call(G,F,G)}))},andSelf:function(){return this.add(this.prevObject)},domManip:function(J,M,L){if(this[0]){var I=(this[0].ownerDocument||this[0]).createDocumentFragment(),F=o.clean(J,(this[0].ownerDocument||this[0]),I),H=I.firstChild;if(H){for(var G=0,E=this.length;G<E;G++){L.call(K(this[G],H),this.length>1||G>0?I.cloneNode(true):I)}}if(F){o.each(F,z)}}return this;function K(N,O){return M&&o.nodeName(N,"table")&&o.nodeName(O,"tr")?(N.getElementsByTagName("tbody")[0]||N.appendChild(N.ownerDocument.createElement("tbody"))):N}}};o.fn.init.prototype=o.fn;function z(E,F){if(F.src){o.ajax({url:F.src,async:false,dataType:"script"})}else{o.globalEval(F.text||F.textContent||F.innerHTML||"")}if(F.parentNode){F.parentNode.removeChild(F)}}function e(){return +new Date}o.extend=o.fn.extend=function(){var J=arguments[0]||{},H=1,I=arguments.length,E=false,G;if(typeof J==="boolean"){E=J;J=arguments[1]||{};H=2}if(typeof J!=="object"&&!o.isFunction(J)){J={}}if(I==H){J=this;--H}for(;H<I;H++){if((G=arguments[H])!=null){for(var F in G){var K=J[F],L=G[F];if(J===L){continue}if(E&&L&&typeof L==="object"&&!L.nodeType){J[F]=o.extend(E,K||(L.length!=null?[]:{}),L)}else{if(L!==g){J[F]=L}}}}}return J};var b=/z-?index|font-?weight|opacity|zoom|line-?height/i,q=document.defaultView||{},s=Object.prototype.toString;o.extend({noConflict:function(E){l.$=p;if(E){l.jQuery=y}return o},isFunction:function(E){return s.call(E)==="[object Function]"},isArray:function(E){return s.call(E)==="[object Array]"},isXMLDoc:function(E){return E.nodeType===9&&E.documentElement.nodeName!=="HTML"||!!E.ownerDocument&&o.isXMLDoc(E.ownerDocument)},globalEval:function(G){if(G&&/\S/.test(G)){var F=document.getElementsByTagName("head")[0]||document.documentElement,E=document.createElement("script");E.type="text/javascript";if(o.support.scriptEval){E.appendChild(document.createTextNode(G))}else{E.text=G}F.insertBefore(E,F.firstChild);F.removeChild(E)}},nodeName:function(F,E){return F.nodeName&&F.nodeName.toUpperCase()==E.toUpperCase()},each:function(G,K,F){var E,H=0,I=G.length;if(F){if(I===g){for(E in G){if(K.apply(G[E],F)===false){break}}}else{for(;H<I;){if(K.apply(G[H++],F)===false){break}}}}else{if(I===g){for(E in G){if(K.call(G[E],E,G[E])===false){break}}}else{for(var J=G[0];H<I&&K.call(J,H,J)!==false;J=G[++H]){}}}return G},prop:function(H,I,G,F,E){if(o.isFunction(I)){I=I.call(H,F)}return typeof I==="number"&&G=="curCSS"&&!b.test(E)?I+"px":I},className:{add:function(E,F){o.each((F||"").split(/\s+/),function(G,H){if(E.nodeType==1&&!o.className.has(E.className,H)){E.className+=(E.className?" ":"")+H}})},remove:function(E,F){if(E.nodeType==1){E.className=F!==g?o.grep(E.className.split(/\s+/),function(G){return !o.className.has(F,G)}).join(" "):""}},has:function(F,E){return F&&o.inArray(E,(F.className||F).toString().split(/\s+/))>-1}},swap:function(H,G,I){var E={};for(var F in G){E[F]=H.style[F];H.style[F]=G[F]}I.call(H);for(var F in G){H.style[F]=E[F]}},css:function(H,F,J,E){if(F=="width"||F=="height"){var L,G={position:"absolute",visibility:"hidden",display:"block"},K=F=="width"?["Left","Right"]:["Top","Bottom"];function I(){L=F=="width"?H.offsetWidth:H.offsetHeight;if(E==="border"){return}o.each(K,function(){if(!E){L-=parseFloat(o.curCSS(H,"padding"+this,true))||0}if(E==="margin"){L+=parseFloat(o.curCSS(H,"margin"+this,true))||0}else{L-=parseFloat(o.curCSS(H,"border"+this+"Width",true))||0}})}if(H.offsetWidth!==0){I()}else{o.swap(H,G,I)}return Math.max(0,Math.round(L))}return o.curCSS(H,F,J)},curCSS:function(I,F,G){var L,E=I.style;if(F=="opacity"&&!o.support.opacity){L=o.attr(E,"opacity");return L==""?"1":L}if(F.match(/float/i)){F=w}if(!G&&E&&E[F]){L=E[F]}else{if(q.getComputedStyle){if(F.match(/float/i)){F="float"}F=F.replace(/([A-Z])/g,"-$1").toLowerCase();var M=q.getComputedStyle(I,null);if(M){L=M.getPropertyValue(F)}if(F=="opacity"&&L==""){L="1"}}else{if(I.currentStyle){var J=F.replace(/\-(\w)/g,function(N,O){return O.toUpperCase()});L=I.currentStyle[F]||I.currentStyle[J];if(!/^\d+(px)?$/i.test(L)&&/^\d/.test(L)){var H=E.left,K=I.runtimeStyle.left;I.runtimeStyle.left=I.currentStyle.left;E.left=L||0;L=E.pixelLeft+"px";E.left=H;I.runtimeStyle.left=K}}}}return L},clean:function(F,K,I){K=K||document;if(typeof K.createElement==="undefined"){K=K.ownerDocument||K[0]&&K[0].ownerDocument||document}if(!I&&F.length===1&&typeof F[0]==="string"){var H=/^<(\w+)\s*\/?>$/.exec(F[0]);if(H){return[K.createElement(H[1])]}}var G=[],E=[],L=K.createElement("div");o.each(F,function(P,S){if(typeof S==="number"){S+=""}if(!S){return}if(typeof S==="string"){S=S.replace(/(<(\w+)[^>]*?)\/>/g,function(U,V,T){return T.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i)?U:V+"></"+T+">"});var O=S.replace(/^\s+/,"").substring(0,10).toLowerCase();var Q=!O.indexOf("<opt")&&[1,"<select multiple='multiple'>","</select>"]||!O.indexOf("<leg")&&[1,"<fieldset>","</fieldset>"]||O.match(/^<(thead|tbody|tfoot|colg|cap)/)&&[1,"<table>","</table>"]||!O.indexOf("<tr")&&[2,"<table><tbody>","</tbody></table>"]||(!O.indexOf("<td")||!O.indexOf("<th"))&&[3,"<table><tbody><tr>","</tr></tbody></table>"]||!O.indexOf("<col")&&[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"]||!o.support.htmlSerialize&&[1,"div<div>","</div>"]||[0,"",""];L.innerHTML=Q[1]+S+Q[2];while(Q[0]--){L=L.lastChild}if(!o.support.tbody){var R=/<tbody/i.test(S),N=!O.indexOf("<table")&&!R?L.firstChild&&L.firstChild.childNodes:Q[1]=="<table>"&&!R?L.childNodes:[];for(var M=N.length-1;M>=0;--M){if(o.nodeName(N[M],"tbody")&&!N[M].childNodes.length){N[M].parentNode.removeChild(N[M])}}}if(!o.support.leadingWhitespace&&/^\s/.test(S)){L.insertBefore(K.createTextNode(S.match(/^\s*/)[0]),L.firstChild)}S=o.makeArray(L.childNodes)}if(S.nodeType){G.push(S)}else{G=o.merge(G,S)}});if(I){for(var J=0;G[J];J++){if(o.nodeName(G[J],"script")&&(!G[J].type||G[J].type.toLowerCase()==="text/javascript")){E.push(G[J].parentNode?G[J].parentNode.removeChild(G[J]):G[J])}else{if(G[J].nodeType===1){G.splice.apply(G,[J+1,0].concat(o.makeArray(G[J].getElementsByTagName("script"))))}I.appendChild(G[J])}}return E}return G},attr:function(J,G,K){if(!J||J.nodeType==3||J.nodeType==8){return g}var H=!o.isXMLDoc(J),L=K!==g;G=H&&o.props[G]||G;if(J.tagName){var F=/href|src|style/.test(G);if(G=="selected"&&J.parentNode){J.parentNode.selectedIndex}if(G in J&&H&&!F){if(L){if(G=="type"&&o.nodeName(J,"input")&&J.parentNode){throw"type property can't be changed"}J[G]=K}if(o.nodeName(J,"form")&&J.getAttributeNode(G)){return J.getAttributeNode(G).nodeValue}if(G=="tabIndex"){var I=J.getAttributeNode("tabIndex");return I&&I.specified?I.value:J.nodeName.match(/(button|input|object|select|textarea)/i)?0:J.nodeName.match(/^(a|area)$/i)&&J.href?0:g}return J[G]}if(!o.support.style&&H&&G=="style"){return o.attr(J.style,"cssText",K)}if(L){J.setAttribute(G,""+K)}var E=!o.support.hrefNormalized&&H&&F?J.getAttribute(G,2):J.getAttribute(G);return E===null?g:E}if(!o.support.opacity&&G=="opacity"){if(L){J.zoom=1;J.filter=(J.filter||"").replace(/alpha\([^)]*\)/,"")+(parseInt(K)+""=="NaN"?"":"alpha(opacity="+K*100+")")}return J.filter&&J.filter.indexOf("opacity=")>=0?(parseFloat(J.filter.match(/opacity=([^)]*)/)[1])/100)+"":""}G=G.replace(/-([a-z])/ig,function(M,N){return N.toUpperCase()});if(L){J[G]=K}return J[G]},trim:function(E){return(E||"").replace(/^\s+|\s+$/g,"")},makeArray:function(G){var E=[];if(G!=null){var F=G.length;if(F==null||typeof G==="string"||o.isFunction(G)||G.setInterval){E[0]=G}else{while(F){E[--F]=G[F]}}}return E},inArray:function(G,H){for(var E=0,F=H.length;E<F;E++){if(H[E]===G){return E}}return -1},merge:function(H,E){var F=0,G,I=H.length;if(!o.support.getAll){while((G=E[F++])!=null){if(G.nodeType!=8){H[I++]=G}}}else{while((G=E[F++])!=null){H[I++]=G}}return H},unique:function(K){var F=[],E={};try{for(var G=0,H=K.length;G<H;G++){var J=o.data(K[G]);if(!E[J]){E[J]=true;F.push(K[G])}}}catch(I){F=K}return F},grep:function(F,J,E){var G=[];for(var H=0,I=F.length;H<I;H++){if(!E!=!J(F[H],H)){G.push(F[H])}}return G},map:function(E,J){var F=[];for(var G=0,H=E.length;G<H;G++){var I=J(E[G],G);if(I!=null){F[F.length]=I}}return F.concat.apply([],F)}});var C=navigator.userAgent.toLowerCase();o.browser={version:(C.match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/)||[0,"0"])[1],safari:/webkit/.test(C),opera:/opera/.test(C),msie:/msie/.test(C)&&!/opera/.test(C),mozilla:/mozilla/.test(C)&&!/(compatible|webkit)/.test(C)};o.each({parent:function(E){return E.parentNode},parents:function(E){return o.dir(E,"parentNode")},next:function(E){return o.nth(E,2,"nextSibling")},prev:function(E){return o.nth(E,2,"previousSibling")},nextAll:function(E){return o.dir(E,"nextSibling")},prevAll:function(E){return o.dir(E,"previousSibling")},siblings:function(E){return o.sibling(E.parentNode.firstChild,E)},children:function(E){return o.sibling(E.firstChild)},contents:function(E){return o.nodeName(E,"iframe")?E.contentDocument||E.contentWindow.document:o.makeArray(E.childNodes)}},function(E,F){o.fn[E]=function(G){var H=o.map(this,F);if(G&&typeof G=="string"){H=o.multiFilter(G,H)}return this.pushStack(o.unique(H),E,G)}});o.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(E,F){o.fn[E]=function(G){var J=[],L=o(G);for(var K=0,H=L.length;K<H;K++){var I=(K>0?this.clone(true):this).get();o.fn[F].apply(o(L[K]),I);J=J.concat(I)}return this.pushStack(J,E,G)}});o.each({removeAttr:function(E){o.attr(this,E,"");if(this.nodeType==1){this.removeAttribute(E)}},addClass:function(E){o.className.add(this,E)},removeClass:function(E){o.className.remove(this,E)},toggleClass:function(F,E){if(typeof E!=="boolean"){E=!o.className.has(this,F)}o.className[E?"add":"remove"](this,F)},remove:function(E){if(!E||o.filter(E,[this]).length){o("*",this).add([this]).each(function(){o.event.remove(this);o.removeData(this)});if(this.parentNode){this.parentNode.removeChild(this)}}},empty:function(){o(this).children().remove();while(this.firstChild){this.removeChild(this.firstChild)}}},function(E,F){o.fn[E]=function(){return this.each(F,arguments)}});function j(E,F){return E[0]&&parseInt(o.curCSS(E[0],F,true),10)||0}var h="jQuery"+e(),v=0,A={};o.extend({cache:{},data:function(F,E,G){F=F==l?A:F;var H=F[h];if(!H){H=F[h]=++v}if(E&&!o.cache[H]){o.cache[H]={}}if(G!==g){o.cache[H][E]=G}return E?o.cache[H][E]:H},removeData:function(F,E){F=F==l?A:F;var H=F[h];if(E){if(o.cache[H]){delete o.cache[H][E];E="";for(E in o.cache[H]){break}if(!E){o.removeData(F)}}}else{try{delete F[h]}catch(G){if(F.removeAttribute){F.removeAttribute(h)}}delete o.cache[H]}},queue:function(F,E,H){if(F){E=(E||"fx")+"queue";var G=o.data(F,E);if(!G||o.isArray(H)){G=o.data(F,E,o.makeArray(H))}else{if(H){G.push(H)}}}return G},dequeue:function(H,G){var E=o.queue(H,G),F=E.shift();if(!G||G==="fx"){F=E[0]}if(F!==g){F.call(H)}}});o.fn.extend({data:function(E,G){var H=E.split(".");H[1]=H[1]?"."+H[1]:"";if(G===g){var F=this.triggerHandler("getData"+H[1]+"!",[H[0]]);if(F===g&&this.length){F=o.data(this[0],E)}return F===g&&H[1]?this.data(H[0]):F}else{return this.trigger("setData"+H[1]+"!",[H[0],G]).each(function(){o.data(this,E,G)})}},removeData:function(E){return this.each(function(){o.removeData(this,E)})},queue:function(E,F){if(typeof E!=="string"){F=E;E="fx"}if(F===g){return o.queue(this[0],E)}return this.each(function(){var G=o.queue(this,E,F);if(E=="fx"&&G.length==1){G[0].call(this)}})},dequeue:function(E){return this.each(function(){o.dequeue(this,E)})}});
|
79
|
+
/*
|
80
|
+
* Sizzle CSS Selector Engine - v0.9.3
|
81
|
+
* Copyright 2009, The Dojo Foundation
|
82
|
+
* Released under the MIT, BSD, and GPL Licenses.
|
83
|
+
* More information: http://sizzlejs.com/
|
84
|
+
*/
|
85
|
+
(function(){var R=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?/g,L=0,H=Object.prototype.toString;var F=function(Y,U,ab,ac){ab=ab||[];U=U||document;if(U.nodeType!==1&&U.nodeType!==9){return[]}if(!Y||typeof Y!=="string"){return ab}var Z=[],W,af,ai,T,ad,V,X=true;R.lastIndex=0;while((W=R.exec(Y))!==null){Z.push(W[1]);if(W[2]){V=RegExp.rightContext;break}}if(Z.length>1&&M.exec(Y)){if(Z.length===2&&I.relative[Z[0]]){af=J(Z[0]+Z[1],U)}else{af=I.relative[Z[0]]?[U]:F(Z.shift(),U);while(Z.length){Y=Z.shift();if(I.relative[Y]){Y+=Z.shift()}af=J(Y,af)}}}else{var ae=ac?{expr:Z.pop(),set:E(ac)}:F.find(Z.pop(),Z.length===1&&U.parentNode?U.parentNode:U,Q(U));af=F.filter(ae.expr,ae.set);if(Z.length>0){ai=E(af)}else{X=false}while(Z.length){var ah=Z.pop(),ag=ah;if(!I.relative[ah]){ah=""}else{ag=Z.pop()}if(ag==null){ag=U}I.relative[ah](ai,ag,Q(U))}}if(!ai){ai=af}if(!ai){throw"Syntax error, unrecognized expression: "+(ah||Y)}if(H.call(ai)==="[object Array]"){if(!X){ab.push.apply(ab,ai)}else{if(U.nodeType===1){for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&(ai[aa]===true||ai[aa].nodeType===1&&K(U,ai[aa]))){ab.push(af[aa])}}}else{for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&ai[aa].nodeType===1){ab.push(af[aa])}}}}}else{E(ai,ab)}if(V){F(V,U,ab,ac);if(G){hasDuplicate=false;ab.sort(G);if(hasDuplicate){for(var aa=1;aa<ab.length;aa++){if(ab[aa]===ab[aa-1]){ab.splice(aa--,1)}}}}}return ab};F.matches=function(T,U){return F(T,null,null,U)};F.find=function(aa,T,ab){var Z,X;if(!aa){return[]}for(var W=0,V=I.order.length;W<V;W++){var Y=I.order[W],X;if((X=I.match[Y].exec(aa))){var U=RegExp.leftContext;if(U.substr(U.length-1)!=="\\"){X[1]=(X[1]||"").replace(/\\/g,"");Z=I.find[Y](X,T,ab);if(Z!=null){aa=aa.replace(I.match[Y],"");break}}}}if(!Z){Z=T.getElementsByTagName("*")}return{set:Z,expr:aa}};F.filter=function(ad,ac,ag,W){var V=ad,ai=[],aa=ac,Y,T,Z=ac&&ac[0]&&Q(ac[0]);while(ad&&ac.length){for(var ab in I.filter){if((Y=I.match[ab].exec(ad))!=null){var U=I.filter[ab],ah,af;T=false;if(aa==ai){ai=[]}if(I.preFilter[ab]){Y=I.preFilter[ab](Y,aa,ag,ai,W,Z);if(!Y){T=ah=true}else{if(Y===true){continue}}}if(Y){for(var X=0;(af=aa[X])!=null;X++){if(af){ah=U(af,Y,X,aa);var ae=W^!!ah;if(ag&&ah!=null){if(ae){T=true}else{aa[X]=false}}else{if(ae){ai.push(af);T=true}}}}}if(ah!==g){if(!ag){aa=ai}ad=ad.replace(I.match[ab],"");if(!T){return[]}break}}}if(ad==V){if(T==null){throw"Syntax error, unrecognized expression: "+ad}else{break}}V=ad}return aa};var I=F.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF_-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF_-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*_-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF_-]|\\.)+)(?:\((['"]*)((?:\([^\)]+\)|[^\2\(\)]*)+)\2\))?/},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(T){return T.getAttribute("href")}},relative:{"+":function(aa,T,Z){var X=typeof T==="string",ab=X&&!/\W/.test(T),Y=X&&!ab;if(ab&&!Z){T=T.toUpperCase()}for(var W=0,V=aa.length,U;W<V;W++){if((U=aa[W])){while((U=U.previousSibling)&&U.nodeType!==1){}aa[W]=Y||U&&U.nodeName===T?U||false:U===T}}if(Y){F.filter(T,aa,true)}},">":function(Z,U,aa){var X=typeof U==="string";if(X&&!/\W/.test(U)){U=aa?U:U.toUpperCase();for(var V=0,T=Z.length;V<T;V++){var Y=Z[V];if(Y){var W=Y.parentNode;Z[V]=W.nodeName===U?W:false}}}else{for(var V=0,T=Z.length;V<T;V++){var Y=Z[V];if(Y){Z[V]=X?Y.parentNode:Y.parentNode===U}}if(X){F.filter(U,Z,true)}}},"":function(W,U,Y){var V=L++,T=S;if(!U.match(/\W/)){var X=U=Y?U:U.toUpperCase();T=P}T("parentNode",U,V,W,X,Y)},"~":function(W,U,Y){var V=L++,T=S;if(typeof U==="string"&&!U.match(/\W/)){var X=U=Y?U:U.toUpperCase();T=P}T("previousSibling",U,V,W,X,Y)}},find:{ID:function(U,V,W){if(typeof V.getElementById!=="undefined"&&!W){var T=V.getElementById(U[1]);return T?[T]:[]}},NAME:function(V,Y,Z){if(typeof Y.getElementsByName!=="undefined"){var U=[],X=Y.getElementsByName(V[1]);for(var W=0,T=X.length;W<T;W++){if(X[W].getAttribute("name")===V[1]){U.push(X[W])}}return U.length===0?null:U}},TAG:function(T,U){return U.getElementsByTagName(T[1])}},preFilter:{CLASS:function(W,U,V,T,Z,aa){W=" "+W[1].replace(/\\/g,"")+" ";if(aa){return W}for(var X=0,Y;(Y=U[X])!=null;X++){if(Y){if(Z^(Y.className&&(" "+Y.className+" ").indexOf(W)>=0)){if(!V){T.push(Y)}}else{if(V){U[X]=false}}}}return false},ID:function(T){return T[1].replace(/\\/g,"")},TAG:function(U,T){for(var V=0;T[V]===false;V++){}return T[V]&&Q(T[V])?U[1]:U[1].toUpperCase()},CHILD:function(T){if(T[1]=="nth"){var U=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(T[2]=="even"&&"2n"||T[2]=="odd"&&"2n+1"||!/\D/.test(T[2])&&"0n+"+T[2]||T[2]);T[2]=(U[1]+(U[2]||1))-0;T[3]=U[3]-0}T[0]=L++;return T},ATTR:function(X,U,V,T,Y,Z){var W=X[1].replace(/\\/g,"");if(!Z&&I.attrMap[W]){X[1]=I.attrMap[W]}if(X[2]==="~="){X[4]=" "+X[4]+" "}return X},PSEUDO:function(X,U,V,T,Y){if(X[1]==="not"){if(X[3].match(R).length>1||/^\w/.test(X[3])){X[3]=F(X[3],null,null,U)}else{var W=F.filter(X[3],U,V,true^Y);if(!V){T.push.apply(T,W)}return false}}else{if(I.match.POS.test(X[0])||I.match.CHILD.test(X[0])){return true}}return X},POS:function(T){T.unshift(true);return T}},filters:{enabled:function(T){return T.disabled===false&&T.type!=="hidden"},disabled:function(T){return T.disabled===true},checked:function(T){return T.checked===true},selected:function(T){T.parentNode.selectedIndex;return T.selected===true},parent:function(T){return !!T.firstChild},empty:function(T){return !T.firstChild},has:function(V,U,T){return !!F(T[3],V).length},header:function(T){return/h\d/i.test(T.nodeName)},text:function(T){return"text"===T.type},radio:function(T){return"radio"===T.type},checkbox:function(T){return"checkbox"===T.type},file:function(T){return"file"===T.type},password:function(T){return"password"===T.type},submit:function(T){return"submit"===T.type},image:function(T){return"image"===T.type},reset:function(T){return"reset"===T.type},button:function(T){return"button"===T.type||T.nodeName.toUpperCase()==="BUTTON"},input:function(T){return/input|select|textarea|button/i.test(T.nodeName)}},setFilters:{first:function(U,T){return T===0},last:function(V,U,T,W){return U===W.length-1},even:function(U,T){return T%2===0},odd:function(U,T){return T%2===1},lt:function(V,U,T){return U<T[3]-0},gt:function(V,U,T){return U>T[3]-0},nth:function(V,U,T){return T[3]-0==U},eq:function(V,U,T){return T[3]-0==U}},filter:{PSEUDO:function(Z,V,W,aa){var U=V[1],X=I.filters[U];if(X){return X(Z,W,V,aa)}else{if(U==="contains"){return(Z.textContent||Z.innerText||"").indexOf(V[3])>=0}else{if(U==="not"){var Y=V[3];for(var W=0,T=Y.length;W<T;W++){if(Y[W]===Z){return false}}return true}}}},CHILD:function(T,W){var Z=W[1],U=T;switch(Z){case"only":case"first":while(U=U.previousSibling){if(U.nodeType===1){return false}}if(Z=="first"){return true}U=T;case"last":while(U=U.nextSibling){if(U.nodeType===1){return false}}return true;case"nth":var V=W[2],ac=W[3];if(V==1&&ac==0){return true}var Y=W[0],ab=T.parentNode;if(ab&&(ab.sizcache!==Y||!T.nodeIndex)){var X=0;for(U=ab.firstChild;U;U=U.nextSibling){if(U.nodeType===1){U.nodeIndex=++X}}ab.sizcache=Y}var aa=T.nodeIndex-ac;if(V==0){return aa==0}else{return(aa%V==0&&aa/V>=0)}}},ID:function(U,T){return U.nodeType===1&&U.getAttribute("id")===T},TAG:function(U,T){return(T==="*"&&U.nodeType===1)||U.nodeName===T},CLASS:function(U,T){return(" "+(U.className||U.getAttribute("class"))+" ").indexOf(T)>-1},ATTR:function(Y,W){var V=W[1],T=I.attrHandle[V]?I.attrHandle[V](Y):Y[V]!=null?Y[V]:Y.getAttribute(V),Z=T+"",X=W[2],U=W[4];return T==null?X==="!=":X==="="?Z===U:X==="*="?Z.indexOf(U)>=0:X==="~="?(" "+Z+" ").indexOf(U)>=0:!U?Z&&T!==false:X==="!="?Z!=U:X==="^="?Z.indexOf(U)===0:X==="$="?Z.substr(Z.length-U.length)===U:X==="|="?Z===U||Z.substr(0,U.length+1)===U+"-":false},POS:function(X,U,V,Y){var T=U[2],W=I.setFilters[T];if(W){return W(X,V,U,Y)}}}};var M=I.match.POS;for(var O in I.match){I.match[O]=RegExp(I.match[O].source+/(?![^\[]*\])(?![^\(]*\))/.source)}var E=function(U,T){U=Array.prototype.slice.call(U);if(T){T.push.apply(T,U);return T}return U};try{Array.prototype.slice.call(document.documentElement.childNodes)}catch(N){E=function(X,W){var U=W||[];if(H.call(X)==="[object Array]"){Array.prototype.push.apply(U,X)}else{if(typeof X.length==="number"){for(var V=0,T=X.length;V<T;V++){U.push(X[V])}}else{for(var V=0;X[V];V++){U.push(X[V])}}}return U}}var G;if(document.documentElement.compareDocumentPosition){G=function(U,T){var V=U.compareDocumentPosition(T)&4?-1:U===T?0:1;if(V===0){hasDuplicate=true}return V}}else{if("sourceIndex" in document.documentElement){G=function(U,T){var V=U.sourceIndex-T.sourceIndex;if(V===0){hasDuplicate=true}return V}}else{if(document.createRange){G=function(W,U){var V=W.ownerDocument.createRange(),T=U.ownerDocument.createRange();V.selectNode(W);V.collapse(true);T.selectNode(U);T.collapse(true);var X=V.compareBoundaryPoints(Range.START_TO_END,T);if(X===0){hasDuplicate=true}return X}}}}(function(){var U=document.createElement("form"),V="script"+(new Date).getTime();U.innerHTML="<input name='"+V+"'/>";var T=document.documentElement;T.insertBefore(U,T.firstChild);if(!!document.getElementById(V)){I.find.ID=function(X,Y,Z){if(typeof Y.getElementById!=="undefined"&&!Z){var W=Y.getElementById(X[1]);return W?W.id===X[1]||typeof W.getAttributeNode!=="undefined"&&W.getAttributeNode("id").nodeValue===X[1]?[W]:g:[]}};I.filter.ID=function(Y,W){var X=typeof Y.getAttributeNode!=="undefined"&&Y.getAttributeNode("id");return Y.nodeType===1&&X&&X.nodeValue===W}}T.removeChild(U)})();(function(){var T=document.createElement("div");T.appendChild(document.createComment(""));if(T.getElementsByTagName("*").length>0){I.find.TAG=function(U,Y){var X=Y.getElementsByTagName(U[1]);if(U[1]==="*"){var W=[];for(var V=0;X[V];V++){if(X[V].nodeType===1){W.push(X[V])}}X=W}return X}}T.innerHTML="<a href='#'></a>";if(T.firstChild&&typeof T.firstChild.getAttribute!=="undefined"&&T.firstChild.getAttribute("href")!=="#"){I.attrHandle.href=function(U){return U.getAttribute("href",2)}}})();if(document.querySelectorAll){(function(){var T=F,U=document.createElement("div");U.innerHTML="<p class='TEST'></p>";if(U.querySelectorAll&&U.querySelectorAll(".TEST").length===0){return}F=function(Y,X,V,W){X=X||document;if(!W&&X.nodeType===9&&!Q(X)){try{return E(X.querySelectorAll(Y),V)}catch(Z){}}return T(Y,X,V,W)};F.find=T.find;F.filter=T.filter;F.selectors=T.selectors;F.matches=T.matches})()}if(document.getElementsByClassName&&document.documentElement.getElementsByClassName){(function(){var T=document.createElement("div");T.innerHTML="<div class='test e'></div><div class='test'></div>";if(T.getElementsByClassName("e").length===0){return}T.lastChild.className="e";if(T.getElementsByClassName("e").length===1){return}I.order.splice(1,0,"CLASS");I.find.CLASS=function(U,V,W){if(typeof V.getElementsByClassName!=="undefined"&&!W){return V.getElementsByClassName(U[1])}}})()}function P(U,Z,Y,ad,aa,ac){var ab=U=="previousSibling"&&!ac;for(var W=0,V=ad.length;W<V;W++){var T=ad[W];if(T){if(ab&&T.nodeType===1){T.sizcache=Y;T.sizset=W}T=T[U];var X=false;while(T){if(T.sizcache===Y){X=ad[T.sizset];break}if(T.nodeType===1&&!ac){T.sizcache=Y;T.sizset=W}if(T.nodeName===Z){X=T;break}T=T[U]}ad[W]=X}}}function S(U,Z,Y,ad,aa,ac){var ab=U=="previousSibling"&&!ac;for(var W=0,V=ad.length;W<V;W++){var T=ad[W];if(T){if(ab&&T.nodeType===1){T.sizcache=Y;T.sizset=W}T=T[U];var X=false;while(T){if(T.sizcache===Y){X=ad[T.sizset];break}if(T.nodeType===1){if(!ac){T.sizcache=Y;T.sizset=W}if(typeof Z!=="string"){if(T===Z){X=true;break}}else{if(F.filter(Z,[T]).length>0){X=T;break}}}T=T[U]}ad[W]=X}}}var K=document.compareDocumentPosition?function(U,T){return U.compareDocumentPosition(T)&16}:function(U,T){return U!==T&&(U.contains?U.contains(T):true)};var Q=function(T){return T.nodeType===9&&T.documentElement.nodeName!=="HTML"||!!T.ownerDocument&&Q(T.ownerDocument)};var J=function(T,aa){var W=[],X="",Y,V=aa.nodeType?[aa]:aa;while((Y=I.match.PSEUDO.exec(T))){X+=Y[0];T=T.replace(I.match.PSEUDO,"")}T=I.relative[T]?T+"*":T;for(var Z=0,U=V.length;Z<U;Z++){F(T,V[Z],W)}return F.filter(X,W)};o.find=F;o.filter=F.filter;o.expr=F.selectors;o.expr[":"]=o.expr.filters;F.selectors.filters.hidden=function(T){return T.offsetWidth===0||T.offsetHeight===0};F.selectors.filters.visible=function(T){return T.offsetWidth>0||T.offsetHeight>0};F.selectors.filters.animated=function(T){return o.grep(o.timers,function(U){return T===U.elem}).length};o.multiFilter=function(V,T,U){if(U){V=":not("+V+")"}return F.matches(V,T)};o.dir=function(V,U){var T=[],W=V[U];while(W&&W!=document){if(W.nodeType==1){T.push(W)}W=W[U]}return T};o.nth=function(X,T,V,W){T=T||1;var U=0;for(;X;X=X[V]){if(X.nodeType==1&&++U==T){break}}return X};o.sibling=function(V,U){var T=[];for(;V;V=V.nextSibling){if(V.nodeType==1&&V!=U){T.push(V)}}return T};return;l.Sizzle=F})();o.event={add:function(I,F,H,K){if(I.nodeType==3||I.nodeType==8){return}if(I.setInterval&&I!=l){I=l}if(!H.guid){H.guid=this.guid++}if(K!==g){var G=H;H=this.proxy(G);H.data=K}var E=o.data(I,"events")||o.data(I,"events",{}),J=o.data(I,"handle")||o.data(I,"handle",function(){return typeof o!=="undefined"&&!o.event.triggered?o.event.handle.apply(arguments.callee.elem,arguments):g});J.elem=I;o.each(F.split(/\s+/),function(M,N){var O=N.split(".");N=O.shift();H.type=O.slice().sort().join(".");var L=E[N];if(o.event.specialAll[N]){o.event.specialAll[N].setup.call(I,K,O)}if(!L){L=E[N]={};if(!o.event.special[N]||o.event.special[N].setup.call(I,K,O)===false){if(I.addEventListener){I.addEventListener(N,J,false)}else{if(I.attachEvent){I.attachEvent("on"+N,J)}}}}L[H.guid]=H;o.event.global[N]=true});I=null},guid:1,global:{},remove:function(K,H,J){if(K.nodeType==3||K.nodeType==8){return}var G=o.data(K,"events"),F,E;if(G){if(H===g||(typeof H==="string"&&H.charAt(0)==".")){for(var I in G){this.remove(K,I+(H||""))}}else{if(H.type){J=H.handler;H=H.type}o.each(H.split(/\s+/),function(M,O){var Q=O.split(".");O=Q.shift();var N=RegExp("(^|\\.)"+Q.slice().sort().join(".*\\.")+"(\\.|$)");if(G[O]){if(J){delete G[O][J.guid]}else{for(var P in G[O]){if(N.test(G[O][P].type)){delete G[O][P]}}}if(o.event.specialAll[O]){o.event.specialAll[O].teardown.call(K,Q)}for(F in G[O]){break}if(!F){if(!o.event.special[O]||o.event.special[O].teardown.call(K,Q)===false){if(K.removeEventListener){K.removeEventListener(O,o.data(K,"handle"),false)}else{if(K.detachEvent){K.detachEvent("on"+O,o.data(K,"handle"))}}}F=null;delete G[O]}}})}for(F in G){break}if(!F){var L=o.data(K,"handle");if(L){L.elem=null}o.removeData(K,"events");o.removeData(K,"handle")}}},trigger:function(I,K,H,E){var G=I.type||I;if(!E){I=typeof I==="object"?I[h]?I:o.extend(o.Event(G),I):o.Event(G);if(G.indexOf("!")>=0){I.type=G=G.slice(0,-1);I.exclusive=true}if(!H){I.stopPropagation();if(this.global[G]){o.each(o.cache,function(){if(this.events&&this.events[G]){o.event.trigger(I,K,this.handle.elem)}})}}if(!H||H.nodeType==3||H.nodeType==8){return g}I.result=g;I.target=H;K=o.makeArray(K);K.unshift(I)}I.currentTarget=H;var J=o.data(H,"handle");if(J){J.apply(H,K)}if((!H[G]||(o.nodeName(H,"a")&&G=="click"))&&H["on"+G]&&H["on"+G].apply(H,K)===false){I.result=false}if(!E&&H[G]&&!I.isDefaultPrevented()&&!(o.nodeName(H,"a")&&G=="click")){this.triggered=true;try{H[G]()}catch(L){}}this.triggered=false;if(!I.isPropagationStopped()){var F=H.parentNode||H.ownerDocument;if(F){o.event.trigger(I,K,F,true)}}},handle:function(K){var J,E;K=arguments[0]=o.event.fix(K||l.event);K.currentTarget=this;var L=K.type.split(".");K.type=L.shift();J=!L.length&&!K.exclusive;var I=RegExp("(^|\\.)"+L.slice().sort().join(".*\\.")+"(\\.|$)");E=(o.data(this,"events")||{})[K.type];for(var G in E){var H=E[G];if(J||I.test(H.type)){K.handler=H;K.data=H.data;var F=H.apply(this,arguments);if(F!==g){K.result=F;if(F===false){K.preventDefault();K.stopPropagation()}}if(K.isImmediatePropagationStopped()){break}}}},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),fix:function(H){if(H[h]){return H}var F=H;H=o.Event(F);for(var G=this.props.length,J;G;){J=this.props[--G];H[J]=F[J]}if(!H.target){H.target=H.srcElement||document}if(H.target.nodeType==3){H.target=H.target.parentNode}if(!H.relatedTarget&&H.fromElement){H.relatedTarget=H.fromElement==H.target?H.toElement:H.fromElement}if(H.pageX==null&&H.clientX!=null){var I=document.documentElement,E=document.body;H.pageX=H.clientX+(I&&I.scrollLeft||E&&E.scrollLeft||0)-(I.clientLeft||0);H.pageY=H.clientY+(I&&I.scrollTop||E&&E.scrollTop||0)-(I.clientTop||0)}if(!H.which&&((H.charCode||H.charCode===0)?H.charCode:H.keyCode)){H.which=H.charCode||H.keyCode}if(!H.metaKey&&H.ctrlKey){H.metaKey=H.ctrlKey}if(!H.which&&H.button){H.which=(H.button&1?1:(H.button&2?3:(H.button&4?2:0)))}return H},proxy:function(F,E){E=E||function(){return F.apply(this,arguments)};E.guid=F.guid=F.guid||E.guid||this.guid++;return E},special:{ready:{setup:B,teardown:function(){}}},specialAll:{live:{setup:function(E,F){o.event.add(this,F[0],c)},teardown:function(G){if(G.length){var E=0,F=RegExp("(^|\\.)"+G[0]+"(\\.|$)");o.each((o.data(this,"events").live||{}),function(){if(F.test(this.type)){E++}});if(E<1){o.event.remove(this,G[0],c)}}}}}};o.Event=function(E){if(!this.preventDefault){return new o.Event(E)}if(E&&E.type){this.originalEvent=E;this.type=E.type}else{this.type=E}this.timeStamp=e();this[h]=true};function k(){return false}function u(){return true}o.Event.prototype={preventDefault:function(){this.isDefaultPrevented=u;var E=this.originalEvent;if(!E){return}if(E.preventDefault){E.preventDefault()}E.returnValue=false},stopPropagation:function(){this.isPropagationStopped=u;var E=this.originalEvent;if(!E){return}if(E.stopPropagation){E.stopPropagation()}E.cancelBubble=true},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=u;this.stopPropagation()},isDefaultPrevented:k,isPropagationStopped:k,isImmediatePropagationStopped:k};var a=function(F){var E=F.relatedTarget;while(E&&E!=this){try{E=E.parentNode}catch(G){E=this}}if(E!=this){F.type=F.data;o.event.handle.apply(this,arguments)}};o.each({mouseover:"mouseenter",mouseout:"mouseleave"},function(F,E){o.event.special[E]={setup:function(){o.event.add(this,F,a,E)},teardown:function(){o.event.remove(this,F,a)}}});o.fn.extend({bind:function(F,G,E){return F=="unload"?this.one(F,G,E):this.each(function(){o.event.add(this,F,E||G,E&&G)})},one:function(G,H,F){var E=o.event.proxy(F||H,function(I){o(this).unbind(I,E);return(F||H).apply(this,arguments)});return this.each(function(){o.event.add(this,G,E,F&&H)})},unbind:function(F,E){return this.each(function(){o.event.remove(this,F,E)})},trigger:function(E,F){return this.each(function(){o.event.trigger(E,F,this)})},triggerHandler:function(E,G){if(this[0]){var F=o.Event(E);F.preventDefault();F.stopPropagation();o.event.trigger(F,G,this[0]);return F.result}},toggle:function(G){var E=arguments,F=1;while(F<E.length){o.event.proxy(G,E[F++])}return this.click(o.event.proxy(G,function(H){this.lastToggle=(this.lastToggle||0)%F;H.preventDefault();return E[this.lastToggle++].apply(this,arguments)||false}))},hover:function(E,F){return this.mouseenter(E).mouseleave(F)},ready:function(E){B();if(o.isReady){E.call(document,o)}else{o.readyList.push(E)}return this},live:function(G,F){var E=o.event.proxy(F);E.guid+=this.selector+G;o(document).bind(i(G,this.selector),this.selector,E);return this},die:function(F,E){o(document).unbind(i(F,this.selector),E?{guid:E.guid+this.selector+F}:null);return this}});function c(H){var E=RegExp("(^|\\.)"+H.type+"(\\.|$)"),G=true,F=[];o.each(o.data(this,"events").live||[],function(I,J){if(E.test(J.type)){var K=o(H.target).closest(J.data)[0];if(K){F.push({elem:K,fn:J})}}});F.sort(function(J,I){return o.data(J.elem,"closest")-o.data(I.elem,"closest")});o.each(F,function(){if(this.fn.call(this.elem,H,this.fn.data)===false){return(G=false)}});return G}function i(F,E){return["live",F,E.replace(/\./g,"`").replace(/ /g,"|")].join(".")}o.extend({isReady:false,readyList:[],ready:function(){if(!o.isReady){o.isReady=true;if(o.readyList){o.each(o.readyList,function(){this.call(document,o)});o.readyList=null}o(document).triggerHandler("ready")}}});var x=false;function B(){if(x){return}x=true;if(document.addEventListener){document.addEventListener("DOMContentLoaded",function(){document.removeEventListener("DOMContentLoaded",arguments.callee,false);o.ready()},false)}else{if(document.attachEvent){document.attachEvent("onreadystatechange",function(){if(document.readyState==="complete"){document.detachEvent("onreadystatechange",arguments.callee);o.ready()}});if(document.documentElement.doScroll&&l==l.top){(function(){if(o.isReady){return}try{document.documentElement.doScroll("left")}catch(E){setTimeout(arguments.callee,0);return}o.ready()})()}}}o.event.add(l,"load",o.ready)}o.each(("blur,focus,load,resize,scroll,unload,click,dblclick,mousedown,mouseup,mousemove,mouseover,mouseout,mouseenter,mouseleave,change,select,submit,keydown,keypress,keyup,error").split(","),function(F,E){o.fn[E]=function(G){return G?this.bind(E,G):this.trigger(E)}});o(l).bind("unload",function(){for(var E in o.cache){if(E!=1&&o.cache[E].handle){o.event.remove(o.cache[E].handle.elem)}}});(function(){o.support={};var F=document.documentElement,G=document.createElement("script"),K=document.createElement("div"),J="script"+(new Date).getTime();K.style.display="none";K.innerHTML=' <link/><table></table><a href="/a" style="color:red;float:left;opacity:.5;">a</a><select><option>text</option></select><object><param/></object>';var H=K.getElementsByTagName("*"),E=K.getElementsByTagName("a")[0];if(!H||!H.length||!E){return}o.support={leadingWhitespace:K.firstChild.nodeType==3,tbody:!K.getElementsByTagName("tbody").length,objectAll:!!K.getElementsByTagName("object")[0].getElementsByTagName("*").length,htmlSerialize:!!K.getElementsByTagName("link").length,style:/red/.test(E.getAttribute("style")),hrefNormalized:E.getAttribute("href")==="/a",opacity:E.style.opacity==="0.5",cssFloat:!!E.style.cssFloat,scriptEval:false,noCloneEvent:true,boxModel:null};G.type="text/javascript";try{G.appendChild(document.createTextNode("window."+J+"=1;"))}catch(I){}F.insertBefore(G,F.firstChild);if(l[J]){o.support.scriptEval=true;delete l[J]}F.removeChild(G);if(K.attachEvent&&K.fireEvent){K.attachEvent("onclick",function(){o.support.noCloneEvent=false;K.detachEvent("onclick",arguments.callee)});K.cloneNode(true).fireEvent("onclick")}o(function(){var L=document.createElement("div");L.style.width=L.style.paddingLeft="1px";document.body.appendChild(L);o.boxModel=o.support.boxModel=L.offsetWidth===2;document.body.removeChild(L).style.display="none"})})();var w=o.support.cssFloat?"cssFloat":"styleFloat";o.props={"for":"htmlFor","class":"className","float":w,cssFloat:w,styleFloat:w,readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",tabindex:"tabIndex"};o.fn.extend({_load:o.fn.load,load:function(G,J,K){if(typeof G!=="string"){return this._load(G)}var I=G.indexOf(" ");if(I>=0){var E=G.slice(I,G.length);G=G.slice(0,I)}var H="GET";if(J){if(o.isFunction(J)){K=J;J=null}else{if(typeof J==="object"){J=o.param(J);H="POST"}}}var F=this;o.ajax({url:G,type:H,dataType:"html",data:J,complete:function(M,L){if(L=="success"||L=="notmodified"){F.html(E?o("<div/>").append(M.responseText.replace(/<script(.|\s)*?\/script>/g,"")).find(E):M.responseText)}if(K){F.each(K,[M.responseText,L,M])}}});return this},serialize:function(){return o.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?o.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||/select|textarea/i.test(this.nodeName)||/text|hidden|password|search/i.test(this.type))}).map(function(E,F){var G=o(this).val();return G==null?null:o.isArray(G)?o.map(G,function(I,H){return{name:F.name,value:I}}):{name:F.name,value:G}}).get()}});o.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","),function(E,F){o.fn[F]=function(G){return this.bind(F,G)}});var r=e();o.extend({get:function(E,G,H,F){if(o.isFunction(G)){H=G;G=null}return o.ajax({type:"GET",url:E,data:G,success:H,dataType:F})},getScript:function(E,F){return o.get(E,null,F,"script")},getJSON:function(E,F,G){return o.get(E,F,G,"json")},post:function(E,G,H,F){if(o.isFunction(G)){H=G;G={}}return o.ajax({type:"POST",url:E,data:G,success:H,dataType:F})},ajaxSetup:function(E){o.extend(o.ajaxSettings,E)},ajaxSettings:{url:location.href,global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:function(){return l.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest()},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},ajax:function(M){M=o.extend(true,M,o.extend(true,{},o.ajaxSettings,M));var W,F=/=\?(&|$)/g,R,V,G=M.type.toUpperCase();if(M.data&&M.processData&&typeof M.data!=="string"){M.data=o.param(M.data)}if(M.dataType=="jsonp"){if(G=="GET"){if(!M.url.match(F)){M.url+=(M.url.match(/\?/)?"&":"?")+(M.jsonp||"callback")+"=?"}}else{if(!M.data||!M.data.match(F)){M.data=(M.data?M.data+"&":"")+(M.jsonp||"callback")+"=?"}}M.dataType="json"}if(M.dataType=="json"&&(M.data&&M.data.match(F)||M.url.match(F))){W="jsonp"+r++;if(M.data){M.data=(M.data+"").replace(F,"="+W+"$1")}M.url=M.url.replace(F,"="+W+"$1");M.dataType="script";l[W]=function(X){V=X;I();L();l[W]=g;try{delete l[W]}catch(Y){}if(H){H.removeChild(T)}}}if(M.dataType=="script"&&M.cache==null){M.cache=false}if(M.cache===false&&G=="GET"){var E=e();var U=M.url.replace(/(\?|&)_=.*?(&|$)/,"$1_="+E+"$2");M.url=U+((U==M.url)?(M.url.match(/\?/)?"&":"?")+"_="+E:"")}if(M.data&&G=="GET"){M.url+=(M.url.match(/\?/)?"&":"?")+M.data;M.data=null}if(M.global&&!o.active++){o.event.trigger("ajaxStart")}var Q=/^(\w+:)?\/\/([^\/?#]+)/.exec(M.url);if(M.dataType=="script"&&G=="GET"&&Q&&(Q[1]&&Q[1]!=location.protocol||Q[2]!=location.host)){var H=document.getElementsByTagName("head")[0];var T=document.createElement("script");T.src=M.url;if(M.scriptCharset){T.charset=M.scriptCharset}if(!W){var O=false;T.onload=T.onreadystatechange=function(){if(!O&&(!this.readyState||this.readyState=="loaded"||this.readyState=="complete")){O=true;I();L();T.onload=T.onreadystatechange=null;H.removeChild(T)}}}H.appendChild(T);return g}var K=false;var J=M.xhr();if(M.username){J.open(G,M.url,M.async,M.username,M.password)}else{J.open(G,M.url,M.async)}try{if(M.data){J.setRequestHeader("Content-Type",M.contentType)}if(M.ifModified){J.setRequestHeader("If-Modified-Since",o.lastModified[M.url]||"Thu, 01 Jan 1970 00:00:00 GMT")}J.setRequestHeader("X-Requested-With","XMLHttpRequest");J.setRequestHeader("Accept",M.dataType&&M.accepts[M.dataType]?M.accepts[M.dataType]+", */*":M.accepts._default)}catch(S){}if(M.beforeSend&&M.beforeSend(J,M)===false){if(M.global&&!--o.active){o.event.trigger("ajaxStop")}J.abort();return false}if(M.global){o.event.trigger("ajaxSend",[J,M])}var N=function(X){if(J.readyState==0){if(P){clearInterval(P);P=null;if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}}else{if(!K&&J&&(J.readyState==4||X=="timeout")){K=true;if(P){clearInterval(P);P=null}R=X=="timeout"?"timeout":!o.httpSuccess(J)?"error":M.ifModified&&o.httpNotModified(J,M.url)?"notmodified":"success";if(R=="success"){try{V=o.httpData(J,M.dataType,M)}catch(Z){R="parsererror"}}if(R=="success"){var Y;try{Y=J.getResponseHeader("Last-Modified")}catch(Z){}if(M.ifModified&&Y){o.lastModified[M.url]=Y}if(!W){I()}}else{o.handleError(M,J,R)}L();if(X){J.abort()}if(M.async){J=null}}}};if(M.async){var P=setInterval(N,13);if(M.timeout>0){setTimeout(function(){if(J&&!K){N("timeout")}},M.timeout)}}try{J.send(M.data)}catch(S){o.handleError(M,J,null,S)}if(!M.async){N()}function I(){if(M.success){M.success(V,R)}if(M.global){o.event.trigger("ajaxSuccess",[J,M])}}function L(){if(M.complete){M.complete(J,R)}if(M.global){o.event.trigger("ajaxComplete",[J,M])}if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}return J},handleError:function(F,H,E,G){if(F.error){F.error(H,E,G)}if(F.global){o.event.trigger("ajaxError",[H,F,G])}},active:0,httpSuccess:function(F){try{return !F.status&&location.protocol=="file:"||(F.status>=200&&F.status<300)||F.status==304||F.status==1223}catch(E){}return false},httpNotModified:function(G,E){try{var H=G.getResponseHeader("Last-Modified");return G.status==304||H==o.lastModified[E]}catch(F){}return false},httpData:function(J,H,G){var F=J.getResponseHeader("content-type"),E=H=="xml"||!H&&F&&F.indexOf("xml")>=0,I=E?J.responseXML:J.responseText;if(E&&I.documentElement.tagName=="parsererror"){throw"parsererror"}if(G&&G.dataFilter){I=G.dataFilter(I,H)}if(typeof I==="string"){if(H=="script"){o.globalEval(I)}if(H=="json"){I=l["eval"]("("+I+")")}}return I},param:function(E){var G=[];function H(I,J){G[G.length]=encodeURIComponent(I)+"="+encodeURIComponent(J)}if(o.isArray(E)||E.jquery){o.each(E,function(){H(this.name,this.value)})}else{for(var F in E){if(o.isArray(E[F])){o.each(E[F],function(){H(F,this)})}else{H(F,o.isFunction(E[F])?E[F]():E[F])}}}return G.join("&").replace(/%20/g,"+")}});var m={},n,d=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];function t(F,E){var G={};o.each(d.concat.apply([],d.slice(0,E)),function(){G[this]=F});return G}o.fn.extend({show:function(J,L){if(J){return this.animate(t("show",3),J,L)}else{for(var H=0,F=this.length;H<F;H++){var E=o.data(this[H],"olddisplay");this[H].style.display=E||"";if(o.css(this[H],"display")==="none"){var G=this[H].tagName,K;if(m[G]){K=m[G]}else{var I=o("<"+G+" />").appendTo("body");K=I.css("display");if(K==="none"){K="block"}I.remove();m[G]=K}o.data(this[H],"olddisplay",K)}}for(var H=0,F=this.length;H<F;H++){this[H].style.display=o.data(this[H],"olddisplay")||""}return this}},hide:function(H,I){if(H){return this.animate(t("hide",3),H,I)}else{for(var G=0,F=this.length;G<F;G++){var E=o.data(this[G],"olddisplay");if(!E&&E!=="none"){o.data(this[G],"olddisplay",o.css(this[G],"display"))}}for(var G=0,F=this.length;G<F;G++){this[G].style.display="none"}return this}},_toggle:o.fn.toggle,toggle:function(G,F){var E=typeof G==="boolean";return o.isFunction(G)&&o.isFunction(F)?this._toggle.apply(this,arguments):G==null||E?this.each(function(){var H=E?G:o(this).is(":hidden");o(this)[H?"show":"hide"]()}):this.animate(t("toggle",3),G,F)},fadeTo:function(E,G,F){return this.animate({opacity:G},E,F)},animate:function(I,F,H,G){var E=o.speed(F,H,G);return this[E.queue===false?"each":"queue"](function(){var K=o.extend({},E),M,L=this.nodeType==1&&o(this).is(":hidden"),J=this;for(M in I){if(I[M]=="hide"&&L||I[M]=="show"&&!L){return K.complete.call(this)}if((M=="height"||M=="width")&&this.style){K.display=o.css(this,"display");K.overflow=this.style.overflow}}if(K.overflow!=null){this.style.overflow="hidden"}K.curAnim=o.extend({},I);o.each(I,function(O,S){var R=new o.fx(J,K,O);if(/toggle|show|hide/.test(S)){R[S=="toggle"?L?"show":"hide":S](I)}else{var Q=S.toString().match(/^([+-]=)?([\d+-.]+)(.*)$/),T=R.cur(true)||0;if(Q){var N=parseFloat(Q[2]),P=Q[3]||"px";if(P!="px"){J.style[O]=(N||1)+P;T=((N||1)/R.cur(true))*T;J.style[O]=T+P}if(Q[1]){N=((Q[1]=="-="?-1:1)*N)+T}R.custom(T,N,P)}else{R.custom(T,S,"")}}});return true})},stop:function(F,E){var G=o.timers;if(F){this.queue([])}this.each(function(){for(var H=G.length-1;H>=0;H--){if(G[H].elem==this){if(E){G[H](true)}G.splice(H,1)}}});if(!E){this.dequeue()}return this}});o.each({slideDown:t("show",1),slideUp:t("hide",1),slideToggle:t("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(E,F){o.fn[E]=function(G,H){return this.animate(F,G,H)}});o.extend({speed:function(G,H,F){var E=typeof G==="object"?G:{complete:F||!F&&H||o.isFunction(G)&&G,duration:G,easing:F&&H||H&&!o.isFunction(H)&&H};E.duration=o.fx.off?0:typeof E.duration==="number"?E.duration:o.fx.speeds[E.duration]||o.fx.speeds._default;E.old=E.complete;E.complete=function(){if(E.queue!==false){o(this).dequeue()}if(o.isFunction(E.old)){E.old.call(this)}};return E},easing:{linear:function(G,H,E,F){return E+F*G},swing:function(G,H,E,F){return((-Math.cos(G*Math.PI)/2)+0.5)*F+E}},timers:[],fx:function(F,E,G){this.options=E;this.elem=F;this.prop=G;if(!E.orig){E.orig={}}}});o.fx.prototype={update:function(){if(this.options.step){this.options.step.call(this.elem,this.now,this)}(o.fx.step[this.prop]||o.fx.step._default)(this);if((this.prop=="height"||this.prop=="width")&&this.elem.style){this.elem.style.display="block"}},cur:function(F){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null)){return this.elem[this.prop]}var E=parseFloat(o.css(this.elem,this.prop,F));return E&&E>-10000?E:parseFloat(o.curCSS(this.elem,this.prop))||0},custom:function(I,H,G){this.startTime=e();this.start=I;this.end=H;this.unit=G||this.unit||"px";this.now=this.start;this.pos=this.state=0;var E=this;function F(J){return E.step(J)}F.elem=this.elem;if(F()&&o.timers.push(F)&&!n){n=setInterval(function(){var K=o.timers;for(var J=0;J<K.length;J++){if(!K[J]()){K.splice(J--,1)}}if(!K.length){clearInterval(n);n=g}},13)}},show:function(){this.options.orig[this.prop]=o.attr(this.elem.style,this.prop);this.options.show=true;this.custom(this.prop=="width"||this.prop=="height"?1:0,this.cur());o(this.elem).show()},hide:function(){this.options.orig[this.prop]=o.attr(this.elem.style,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(H){var G=e();if(H||G>=this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;var E=true;for(var F in this.options.curAnim){if(this.options.curAnim[F]!==true){E=false}}if(E){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;this.elem.style.display=this.options.display;if(o.css(this.elem,"display")=="none"){this.elem.style.display="block"}}if(this.options.hide){o(this.elem).hide()}if(this.options.hide||this.options.show){for(var I in this.options.curAnim){o.attr(this.elem.style,I,this.options.orig[I])}}this.options.complete.call(this.elem)}return false}else{var J=G-this.startTime;this.state=J/this.options.duration;this.pos=o.easing[this.options.easing||(o.easing.swing?"swing":"linear")](this.state,J,0,1,this.options.duration);this.now=this.start+((this.end-this.start)*this.pos);this.update()}return true}};o.extend(o.fx,{speeds:{slow:600,fast:200,_default:400},step:{opacity:function(E){o.attr(E.elem.style,"opacity",E.now)},_default:function(E){if(E.elem.style&&E.elem.style[E.prop]!=null){E.elem.style[E.prop]=E.now+E.unit}else{E.elem[E.prop]=E.now}}}});if(document.documentElement.getBoundingClientRect){o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}var G=this[0].getBoundingClientRect(),J=this[0].ownerDocument,F=J.body,E=J.documentElement,L=E.clientTop||F.clientTop||0,K=E.clientLeft||F.clientLeft||0,I=G.top+(self.pageYOffset||o.boxModel&&E.scrollTop||F.scrollTop)-L,H=G.left+(self.pageXOffset||o.boxModel&&E.scrollLeft||F.scrollLeft)-K;return{top:I,left:H}}}else{o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}o.offset.initialized||o.offset.initialize();var J=this[0],G=J.offsetParent,F=J,O=J.ownerDocument,M,H=O.documentElement,K=O.body,L=O.defaultView,E=L.getComputedStyle(J,null),N=J.offsetTop,I=J.offsetLeft;while((J=J.parentNode)&&J!==K&&J!==H){M=L.getComputedStyle(J,null);N-=J.scrollTop,I-=J.scrollLeft;if(J===G){N+=J.offsetTop,I+=J.offsetLeft;if(o.offset.doesNotAddBorder&&!(o.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(J.tagName))){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}F=G,G=J.offsetParent}if(o.offset.subtractsBorderForOverflowNotVisible&&M.overflow!=="visible"){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}E=M}if(E.position==="relative"||E.position==="static"){N+=K.offsetTop,I+=K.offsetLeft}if(E.position==="fixed"){N+=Math.max(H.scrollTop,K.scrollTop),I+=Math.max(H.scrollLeft,K.scrollLeft)}return{top:N,left:I}}}o.offset={initialize:function(){if(this.initialized){return}var L=document.body,F=document.createElement("div"),H,G,N,I,M,E,J=L.style.marginTop,K='<div style="position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;"><div></div></div><table style="position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;" cellpadding="0" cellspacing="0"><tr><td></td></tr></table>';M={position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"};for(E in M){F.style[E]=M[E]}F.innerHTML=K;L.insertBefore(F,L.firstChild);H=F.firstChild,G=H.firstChild,I=H.nextSibling.firstChild.firstChild;this.doesNotAddBorder=(G.offsetTop!==5);this.doesAddBorderForTableAndCells=(I.offsetTop===5);H.style.overflow="hidden",H.style.position="relative";this.subtractsBorderForOverflowNotVisible=(G.offsetTop===-5);L.style.marginTop="1px";this.doesNotIncludeMarginInBodyOffset=(L.offsetTop===0);L.style.marginTop=J;L.removeChild(F);this.initialized=true},bodyOffset:function(E){o.offset.initialized||o.offset.initialize();var G=E.offsetTop,F=E.offsetLeft;if(o.offset.doesNotIncludeMarginInBodyOffset){G+=parseInt(o.curCSS(E,"marginTop",true),10)||0,F+=parseInt(o.curCSS(E,"marginLeft",true),10)||0}return{top:G,left:F}}};o.fn.extend({position:function(){var I=0,H=0,F;if(this[0]){var G=this.offsetParent(),J=this.offset(),E=/^body|html$/i.test(G[0].tagName)?{top:0,left:0}:G.offset();J.top-=j(this,"marginTop");J.left-=j(this,"marginLeft");E.top+=j(G,"borderTopWidth");E.left+=j(G,"borderLeftWidth");F={top:J.top-E.top,left:J.left-E.left}}return F},offsetParent:function(){var E=this[0].offsetParent||document.body;while(E&&(!/^body|html$/i.test(E.tagName)&&o.css(E,"position")=="static")){E=E.offsetParent}return o(E)}});o.each(["Left","Top"],function(F,E){var G="scroll"+E;o.fn[G]=function(H){if(!this[0]){return null}return H!==g?this.each(function(){this==l||this==document?l.scrollTo(!F?H:o(l).scrollLeft(),F?H:o(l).scrollTop()):this[G]=H}):this[0]==l||this[0]==document?self[F?"pageYOffset":"pageXOffset"]||o.boxModel&&document.documentElement[G]||document.body[G]:this[0][G]}});o.each(["Height","Width"],function(I,G){var E=I?"Left":"Top",H=I?"Right":"Bottom",F=G.toLowerCase();o.fn["inner"+G]=function(){return this[0]?o.css(this[0],F,false,"padding"):null};o.fn["outer"+G]=function(K){return this[0]?o.css(this[0],F,false,K?"margin":"border"):null};var J=G.toLowerCase();o.fn[J]=function(K){return this[0]==l?document.compatMode=="CSS1Compat"&&document.documentElement["client"+G]||document.body["client"+G]:this[0]==document?Math.max(document.documentElement["client"+G],document.body["scroll"+G],document.documentElement["scroll"+G],document.body["offset"+G],document.documentElement["offset"+G]):K===g?(this.length?o.css(this[0],J):null):this.css(J,typeof K==="string"?K:K+"px")}})})();
|
86
|
+
/**
|
87
|
+
* jQuery.ScrollTo - Easy element scrolling using jQuery.
|
88
|
+
* Copyright (c) 2007-2009 Ariel Flesler - aflesler(at)gmail(dot)com | http://flesler.blogspot.com
|
89
|
+
* Dual licensed under MIT and GPL.
|
90
|
+
* Date: 3/9/2009
|
91
|
+
* @author Ariel Flesler
|
92
|
+
* @version 1.4.1
|
93
|
+
*
|
94
|
+
* http://flesler.blogspot.com/2007/10/jqueryscrollto.html
|
95
|
+
*/
|
96
|
+
;(function($){var m=$.scrollTo=function(b,h,f){$(window).scrollTo(b,h,f)};m.defaults={axis:'xy',duration:parseFloat($.fn.jquery)>=1.3?0:1};m.window=function(b){return $(window).scrollable()};$.fn.scrollable=function(){return this.map(function(){var b=this,h=!b.nodeName||$.inArray(b.nodeName.toLowerCase(),['iframe','#document','html','body'])!=-1;if(!h)return b;var f=(b.contentWindow||b).document||b.ownerDocument||b;return $.browser.safari||f.compatMode=='BackCompat'?f.body:f.documentElement})};$.fn.scrollTo=function(l,j,a){if(typeof j=='object'){a=j;j=0}if(typeof a=='function')a={onAfter:a};if(l=='max')l=9e9;a=$.extend({},m.defaults,a);j=j||a.speed||a.duration;a.queue=a.queue&&a.axis.length>1;if(a.queue)j/=2;a.offset=n(a.offset);a.over=n(a.over);return this.scrollable().each(function(){var k=this,o=$(k),d=l,p,g={},q=o.is('html,body');switch(typeof d){case'number':case'string':if(/^([+-]=)?\d+(\.\d+)?(px)?$/.test(d)){d=n(d);break}d=$(d,this);case'object':if(d.is||d.style)p=(d=$(d)).offset()}$.each(a.axis.split(''),function(b,h){var f=h=='x'?'Left':'Top',i=f.toLowerCase(),c='scroll'+f,r=k[c],s=h=='x'?'Width':'Height';if(p){g[c]=p[i]+(q?0:r-o.offset()[i]);if(a.margin){g[c]-=parseInt(d.css('margin'+f))||0;g[c]-=parseInt(d.css('border'+f+'Width'))||0}g[c]+=a.offset[i]||0;if(a.over[i])g[c]+=d[s.toLowerCase()]()*a.over[i]}else g[c]=d[i];if(/^\d+$/.test(g[c]))g[c]=g[c]<=0?0:Math.min(g[c],u(s));if(!b&&a.queue){if(r!=g[c])t(a.onAfterFirst);delete g[c]}});t(a.onAfter);function t(b){o.animate(g,j,a.easing,b&&function(){b.call(this,l,a)})};function u(b){var h='scroll'+b;if(!q)return k[h];var f='client'+b,i=k.ownerDocument.documentElement,c=k.ownerDocument.body;return Math.max(i[h],c[h])-Math.min(i[f],c[f])}}).end()};function n(b){return typeof b=='object'?b:{top:b,left:b}}})(jQuery);
|
97
|
+
/**
|
98
|
+
* jQuery.LocalScroll - Animated scrolling navigation, using anchors.
|
99
|
+
* Copyright (c) 2007-2009 Ariel Flesler - aflesler(at)gmail(dot)com | http://flesler.blogspot.com
|
100
|
+
* Dual licensed under MIT and GPL.
|
101
|
+
* Date: 3/11/2009
|
102
|
+
* @author Ariel Flesler
|
103
|
+
* @version 1.2.7
|
104
|
+
**/
|
105
|
+
;(function($){var l=location.href.replace(/#.*/,'');var g=$.localScroll=function(a){$('body').localScroll(a)};g.defaults={duration:1e3,axis:'y',event:'click',stop:true,target:window,reset:true};g.hash=function(a){if(location.hash){a=$.extend({},g.defaults,a);a.hash=false;if(a.reset){var e=a.duration;delete a.duration;$(a.target).scrollTo(0,a);a.duration=e}i(0,location,a)}};$.fn.localScroll=function(b){b=$.extend({},g.defaults,b);return b.lazy?this.bind(b.event,function(a){var e=$([a.target,a.target.parentNode]).filter(d)[0];if(e)i(a,e,b)}):this.find('a,area').filter(d).bind(b.event,function(a){i(a,this,b)}).end().end();function d(){return!!this.href&&!!this.hash&&this.href.replace(this.hash,'')==l&&(!b.filter||$(this).is(b.filter))}};function i(a,e,b){var d=e.hash.slice(1),f=document.getElementById(d)||document.getElementsByName(d)[0];if(!f)return;if(a)a.preventDefault();var h=$(b.target);if(b.lock&&h.is(':animated')||b.onBefore&&b.onBefore.call(b,a,f,h)===false)return;if(b.stop)h.stop(true);if(b.hash){var j=f.id==d?'id':'name',k=$('<a> </a>').attr(j,d).css({position:'absolute',top:$(window).scrollTop(),left:$(window).scrollLeft()});f[j]='';$('body').prepend(k);location=e.hash;k.remove();f[j]=d}h.scrollTo(f,b).trigger('notify.serialScroll',[f])}})(jQuery);
|
106
|
+
|
107
|
+
$(document).ready(
|
108
|
+
function(){
|
109
|
+
$.localScroll({
|
110
|
+
// the default 1000 is too slow, and 500 is too fast
|
111
|
+
duration: 700,
|
112
|
+
|
113
|
+
// allow the CSS ':target' pseudo-selector to work properly
|
114
|
+
hash: true, onAfter: function(){ location = location; }
|
115
|
+
});
|
116
|
+
}
|
117
|
+
);
|
118
|
+
//]]>
|
119
|
+
</script>
|
628
120
|
</head>
|
629
121
|
<body>
|
630
122
|
<div id="body">
|
631
|
-
<
|
632
|
-
<li><a id="rev:Contents" href="#Contents">Contents</a></li>
|
633
|
-
<li><a id="rev:Tips" href="#Tips">Tips</a></li>
|
634
|
-
</ul>
|
123
|
+
<div id="nav"><a id="rev:Contents" href="#Contents">Contents</a> · <a id="rev:Tips" href="#Tips">Tips</a></div>
|
635
124
|
|
636
125
|
<br style="display: none"/>
|
637
126
|
<hr style="display: none"/>
|
638
127
|
<br style="display: none"/>
|
639
128
|
|
129
|
+
|
640
130
|
|
131
|
+
|
641
132
|
<div id="header">
|
642
|
-
|
643
|
-
<div class="logo"><img src='inochi.png' alt='project logo' /></div>
|
133
|
+
|
644
134
|
|
645
|
-
|
135
|
+
<div class="logo"><a class="xref" href="#Credits" title="Section 1.3. "Credits""><img src='inochi.png' alt='Inochi logo' /></a></div>
|
646
136
|
|
647
|
-
|
137
|
+
<h1 class="title">Inochi 1.0.0</h1>
|
648
138
|
|
649
|
-
|
139
|
+
<h2 class="subtitle">Gives life to RubyGems-based software</h2>
|
650
140
|
|
651
|
-
|
652
|
-
|
141
|
+
<h3 class="authors"><a href="mailto:sunaku@gmail.com">Suraj N. Kurapati</a></h3>
|
142
|
+
|
143
|
+
<h3 class="date">04 May 2009</h3>
|
144
|
+
|
145
|
+
|
653
146
|
</div>
|
147
|
+
|
654
148
|
|
655
149
|
|
150
|
+
|
656
151
|
|
657
152
|
|
658
153
|
<br style="display: none"/>
|
659
154
|
<hr style="display: none"/>
|
660
155
|
<br style="display: none"/>
|
661
156
|
|
662
|
-
<div id="toc">
|
663
|
-
<a name="Contents"/><div class="nav" id="Contents"><a title="Reverse jump to listing" href="#rev:Contents">≡</a>△▽<a title="Jump to this segment" href="#Contents">◎</a></div>
|
664
|
-
<h1 class="title">Contents</h1>
|
665
|
-
<ul>
|
666
|
-
<li>1 <a id="rev:Introduction" href="#Introduction">Introduction</a><ul><li><a id="rev:Etymology" href="#Etymology">Etymology</a></li><li>1.1 <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 <a id="rev:License" href="#License">License</a></li><li>1.3 <a id="rev:Credits" href="#Credits">Credits</a></li></ul></li><li>2 <a id="rev:Setup" href="#Setup">Setup</a><ul><li>2.1 <a id="rev:Requirements" href="#Requirements">Requirements</a></li><li>2.2 <a id="rev:Installation" href="#Installation">Installation</a></li><li>2.3 <a id="rev:Manifest" href="#Manifest">Manifest</a></li></ul></li><li>3 <a id="rev:Usage" href="#Usage">Usage</a><ul><li>3.1 <a id="rev:Command-line-interface" href="#Command-line-interface">Command-line interface</a></li><li>3.2 <a id="rev:Ruby-library-interface" href="#Ruby-library-interface">Ruby library interface</a></li><li>3.3 <a id="rev:Tutorial" href="#Tutorial">Tutorial</a><ul><li>3.3.1 <a id="rev:Have-a-brilliant-idea" href="#Have-a-brilliant-idea">Have a brilliant idea</a></li><li>3.3.2 <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 <a id="rev:Configure-your-project" href="#Configure-your-project">Configure your project</a><ul><li>3.3.3.1 <a id="rev:Project-information" href="#Project-information">Project information</a></li><li>3.3.3.2 <a id="rev:Project-executable" href="#Project-executable">Project executable</a></li><li>3.3.3.3 <a id="rev:Rake-tasks" href="#Rake-tasks">Rake tasks</a></li><li>3.3.3.4 <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 <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 <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 <a id="rev:Translate-your-project" href="#Translate-your-project">Translate your project</a><ul><li>3.3.6.1 <a id="rev:Language-phrases" href="#Language-phrases">Language phrases</a><ul><li><a id="rev:Parameterizing-language-phrases" href="#Parameterizing-language-phrases">Parameterizing language phrases</a></li><li><a id="rev:Explicit-translation-into-a-language" href="#Explicit-translation-into-a-language">Explicit translation into a language</a></li></ul></li><li>3.3.6.2 <a id="rev:Translation-files" href="#Translation-files">Translation files</a></li><li>3.3.6.3 <a id="rev:Extracting-language-phrases" href="#Extracting-language-phrases">Extracting language phrases</a><ul><li><a id="rev:Dynamic-analysis" href="#Dynamic-analysis">Dynamic analysis</a></li><li><a id="rev:Static-analysis" href="#Static-analysis">Static analysis</a></li></ul></li><li>3.3.6.4 <a id="rev:Translating-language-phrases" href="#Translating-language-phrases">Translating language phrases</a></li></ul></li><li>3.3.7 <a id="rev:Publish-your-project" href="#Publish-your-project">Publish your project</a><ul><li>3.3.7.1 <a id="rev:Build-a-RubyGem" href="#Build-a-RubyGem">Build a RubyGem</a></li><li>3.3.7.2 <a id="rev:Publish-a-RubyGem" href="#Publish-a-RubyGem">Publish a RubyGem</a></li><li>3.3.7.3 <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.7.3.1 <a id="rev:Manual-release-announcement" href="#Manual-release-announcement">Manual release announcement</a></li></ul></li><li>3.3.7.4 <a id="rev:Publish-the-documentation" href="#Publish-the-documentation">Publish the documentation</a></li></ul></li></ul></li></ul></li><li>4 <a id="rev:History" href="#History">History</a><ul><li>4.1 <a id="rev:Version-0.3.0-2009-02-12" href="#Version-0.3.0-2009-02-12">Version 0.3.0 (2009-02-12)</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><li><a id="rev:Housekeeping" href="#Housekeeping">Housekeeping</a></li></ul></li><li>4.1 <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:New-features-608879778" href="#New-features-608879778">New features</a></li><li><a id="rev:Bug-fixes-608927278" href="#Bug-fixes-608927278">Bug fixes</a></li><li><a id="rev:Housekeeping-608956548" href="#Housekeeping-608956548">Housekeeping</a></li></ul></li><li>4.1 <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-609008278" href="#New-features-609008278">New features</a></li><li><a id="rev:Bug-fixes-609028008" href="#Bug-fixes-609028008">Bug fixes</a></li></ul></li><li>4.1 <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:Bug-fixes-609075888" href="#Bug-fixes-609075888">Bug fixes</a></li><li><a id="rev:Housekeeping-609091378" href="#Housekeeping-609091378">Housekeeping</a></li></ul></li><li>4.1 <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
157
|
|
668
|
-
|
669
|
-
|
158
|
+
<div id="toc">
|
159
|
+
<a name="Contents"/><div class="nav" id="Contents"><a title="Focus this segment" href="#Contents"><img class="icon" alt="∗" src="&icon_nav_here;"/></a> <a title="Return to listing" href="#rev:Contents"><img class="icon" alt="≡" src="&icon_nav_list;"/></a></div>
|
160
|
+
<h1 class="title">Contents</h1>
|
161
|
+
<ul><li>1 <a id="rev:Introduction" href="#Introduction">Introduction</a><ul><li><a id="rev:Etymology" href="#Etymology">Etymology</a></li><li>1.1 <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 <a id="rev:License" href="#License">License</a></li><li>1.3 <a id="rev:Credits" href="#Credits">Credits</a></li></ul></li><li>2 <a id="rev:Setup" href="#Setup">Setup</a><ul><li>2.1 <a id="rev:Requirements" href="#Requirements">Requirements</a></li><li>2.2 <a id="rev:Installation" href="#Installation">Installation</a></li><li>2.3 <a id="rev:Manifest" href="#Manifest">Manifest</a></li></ul></li><li>3 <a id="rev:Usage" href="#Usage">Usage</a><ul><li>3.1 <a id="rev:Command-line-interface" href="#Command-line-interface">Command-line interface</a></li><li>3.2 <a id="rev:Ruby-library-interface" href="#Ruby-library-interface">Ruby library interface</a></li><li>3.3 <a id="rev:Tutorial" href="#Tutorial">Tutorial</a><ul><li>3.3.1 <a id="rev:Have-a-brilliant-idea" href="#Have-a-brilliant-idea">Have a brilliant idea</a></li><li>3.3.2 <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 <a id="rev:Configure-your-project" href="#Configure-your-project">Configure your project</a><ul><li>3.3.3.1 <a id="rev:Project-information" href="#Project-information">Project information</a></li><li>3.3.3.2 <a id="rev:Project-executable" href="#Project-executable">Project executable</a></li><li>3.3.3.3 <a id="rev:Rake-tasks" href="#Rake-tasks">Rake tasks</a></li><li>3.3.3.4 <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 <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="line"><span style="color:#d70;font-weight:bold">$LOAD_PATH</span></code>, hello <code class="line">require()</code></a></li></ul></li><li>3.3.5 <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 <a id="rev:Translate-your-project" href="#Translate-your-project">Translate your project</a><ul><li>3.3.6.1 <a id="rev:Language-phrases" href="#Language-phrases">Language phrases</a><ul><li><a id="rev:Parameterizing-language-phrases" href="#Parameterizing-language-phrases">Parameterizing language phrases</a></li><li><a id="rev:Explicit-translation-into-a-language" href="#Explicit-translation-into-a-language">Explicit translation into a language</a></li></ul></li><li>3.3.6.2 <a id="rev:Translation-files" href="#Translation-files">Translation files</a></li><li>3.3.6.3 <a id="rev:Extracting-language-phrases" href="#Extracting-language-phrases">Extracting language phrases</a><ul><li><a id="rev:Dynamic-analysis" href="#Dynamic-analysis">Dynamic analysis</a></li><li><a id="rev:Static-analysis" href="#Static-analysis">Static analysis</a></li></ul></li><li>3.3.6.4 <a id="rev:Translating-language-phrases" href="#Translating-language-phrases">Translating language phrases</a></li></ul></li><li>3.3.7 <a id="rev:Publish-your-project" href="#Publish-your-project">Publish your project</a><ul><li>3.3.7.1 <a id="rev:Build-a-RubyGem" href="#Build-a-RubyGem">Build a RubyGem</a></li><li>3.3.7.2 <a id="rev:Publish-a-RubyGem" href="#Publish-a-RubyGem">Publish a RubyGem</a></li><li>3.3.7.3 <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.7.3.1 <a id="rev:Manual-release-announcement" href="#Manual-release-announcement">Manual release announcement</a></li></ul></li><li>3.3.7.4 <a id="rev:Publish-the-documentation" href="#Publish-the-documentation">Publish the documentation</a></li></ul></li></ul></li></ul></li><li>4 <a id="rev:History" href="#History">History</a><ul><li>4.1 <a id="rev:Version-1.0.0-2009-05-03" href="#Version-1.0.0-2009-05-03">Version 1.0.0 (2009-05-03)</a><ul><li><a id="rev:Incompatible-changes" href="#Incompatible-changes">Incompatible changes</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.2 <a id="rev:Version-0.3.0-2009-02-12" href="#Version-0.3.0-2009-02-12">Version 0.3.0 (2009-02-12)</a><ul><li><a id="rev:New-features-609439008" href="#New-features-609439008">New features</a></li><li><a id="rev:Bug-fixes-609465768" href="#Bug-fixes-609465768">Bug fixes</a></li><li><a id="rev:Housekeeping-609499748" href="#Housekeeping-609499748">Housekeeping</a></li></ul></li><li>4.3 <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:New-features-609532608" href="#New-features-609532608">New features</a></li><li><a id="rev:Bug-fixes-609551988" href="#Bug-fixes-609551988">Bug fixes</a></li><li><a id="rev:Housekeeping-609561708" href="#Housekeeping-609561708">Housekeeping</a></li></ul></li><li>4.4 <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-609595238" href="#New-features-609595238">New features</a></li><li><a id="rev:Bug-fixes-609627068" href="#Bug-fixes-609627068">Bug fixes</a></li></ul></li><li>4.5 <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:Bug-fixes-609677068" href="#Bug-fixes-609677068">Bug fixes</a></li><li><a id="rev:Housekeeping-609697358" href="#Housekeeping-609697358">Housekeeping</a></li></ul></li><li>4.6 <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></ul>
|
162
|
+
</div>
|
670
163
|
|
671
|
-
|
164
|
+
<div id="lof"><a name="Tips"/><div class="nav" id="Tips"><a title="Focus this segment" href="#Tips"><img class="icon" alt="∗" src="&icon_nav_here;"/></a> <a title="Return to listing" href="#rev:Tips"><img class="icon" alt="≡" src="&icon_nav_list;"/></a></div><h2 class="title">Tips</h2> <ol><li><a id="rev:Merging-files-with-kdiff3" href="#Merging-files-with-kdiff3">Merging files with <strong>kdiff3</strong></a></li></ol></div>
|
672
165
|
|
673
166
|
<br style="display: none"/>
|
674
167
|
<hr style="display: none"/>
|
675
168
|
<br style="display: none"/>
|
676
169
|
|
170
|
+
|
677
171
|
<div id="content">
|
172
|
+
|
173
|
+
|
174
|
+
|
678
175
|
<div class="chapter">
|
679
|
-
<a name="Introduction"/><div class="nav" id="Introduction"><a title="
|
176
|
+
<a name="Introduction"/><div class="nav" id="Introduction"><a title="Focus this segment" href="#Introduction"><img class="icon" alt="∗" src="&icon_nav_here;"/></a> <a title="Focus next segment" href="#Etymology"><img class="icon" alt="↓" src="&icon_nav_next;"/></a> <a title="Return to listing" href="#rev:Introduction"><img class="icon" alt="≡" src="&icon_nav_list;"/></a></div>
|
680
177
|
<h1 class="title">
|
681
178
|
Chapter 1
|
682
179
|
<br/>
|
683
180
|
<big>Introduction</big>
|
684
181
|
</h1>
|
685
|
-
<div class="content"><p
|
182
|
+
<div class="content"><p>Inochi is an infrastructure for <a href='http://www.rubygems.org'>RubyGems</a>-based software projects that encourages good documentation and reduces programming effort by automating common tasks.</p><p> Inochi is exciting because:</p>
|
686
183
|
|
687
184
|
<ul>
|
688
185
|
<li>
|
689
186
|
<p>It encourages good documentation:</p>
|
690
187
|
|
691
188
|
<ul>
|
692
|
-
<li>
|
189
|
+
<li>
|
190
|
+
<p>Provides a comprehensive user manual that integrates release notes, setup and usage instructions, and more.</p>
|
191
|
+
</li>
|
693
192
|
|
694
|
-
<li>
|
193
|
+
<li>
|
194
|
+
<p>Automates the display of help, version, and usage information for your project’s main executable.</p>
|
195
|
+
</li>
|
695
196
|
</ul>
|
696
197
|
</li>
|
697
198
|
|
@@ -699,6 +200,8 @@
|
|
699
200
|
<p>It reduces programming effort:</p>
|
700
201
|
|
701
202
|
<ul>
|
203
|
+
<li>Makes it easy to <a class="xref" href="#Translate-your-project" title="Section 3.3.6. "Translate your project"">translate your project</a> into many languages.</li>
|
204
|
+
|
702
205
|
<li>Provides a single point of entry to your project’s libraries.</li>
|
703
206
|
|
704
207
|
<li>Keeps your project’s configuration in one place.</li>
|
@@ -718,7 +221,7 @@
|
|
718
221
|
</li>
|
719
222
|
</ul>
|
720
223
|
|
721
|
-
<p>These features distinguish
|
224
|
+
<p>These features distinguish Inochi from the competition:</p>
|
722
225
|
|
723
226
|
<ul>
|
724
227
|
<li><a href='http://seattlerb.rubyforge.org/hoe/'>hoe</a></li>
|
@@ -736,35 +239,35 @@
|
|
736
239
|
<li><a href='http://github.com/reagent/simple-gem/tree/master'>SimpleGem</a></li>
|
737
240
|
</ul>
|
738
241
|
|
739
|
-
<
|
740
|
-
<a name="Etymology"/><div class="nav" id="Etymology"><a title="
|
242
|
+
<div class="paragraph">
|
243
|
+
<a name="Etymology"/><div class="nav" id="Etymology"><a title="Focus this segment" href="#Etymology"><img class="icon" alt="∗" src="&icon_nav_here;"/></a> <a title="Focus previous segment" href="#Introduction"><img class="icon" alt="↑" src="&icon_nav_prev;"/></a> <a title="Focus next segment" href="#Logistics"><img class="icon" alt="↓" src="&icon_nav_next;"/></a> <a title="Return to listing" href="#rev:Etymology"><img class="icon" alt="≡" src="&icon_nav_list;"/></a></div>
|
741
244
|
<p class="title">Etymology</p>
|
742
245
|
<div class="content"><p>In the past, software development was thought to be like mathematical modeling or building construction: the assembly of inanimate objects. Nowadays, it is thought to be more like gardening: the cultivation of life!</p>
|
743
246
|
|
744
247
|
<p>In this manner, I consider this project not as a generator of skeletons or as a builder of scaffolds, but as a <em>giver of life</em>. That is why I named this project “inochi”, the Japanese word for <em>life</em>.</p>
|
745
248
|
|
746
249
|
<p>Happy cultivation!</p></div>
|
747
|
-
</div
|
748
|
-
<a name="Logistics"/><div class="nav" id="Logistics"><a title="
|
250
|
+
</div><div class="section">
|
251
|
+
<a name="Logistics"/><div class="nav" id="Logistics"><a title="Focus this segment" href="#Logistics"><img class="icon" alt="∗" src="&icon_nav_here;"/></a> <a title="Focus previous segment" href="#Etymology"><img class="icon" alt="↑" src="&icon_nav_prev;"/></a> <a title="Focus next segment" href="#Version-numbers"><img class="icon" alt="↓" src="&icon_nav_next;"/></a> <a title="Return to listing" href="#rev:Logistics"><img class="icon" alt="≡" src="&icon_nav_list;"/></a></div>
|
749
252
|
<h2 class="title">
|
750
253
|
1.1 Logistics
|
751
254
|
</h2>
|
752
255
|
<div class="content"><ul>
|
753
256
|
<li><a class="xref" href="#History" title="Chapter 4. "History"">Release notes</a> — history of project releases.</li>
|
754
257
|
|
755
|
-
<li><a href='http://github.com/sunaku/inochi'>Source code</a> — obtain via <a href='http://git.
|
258
|
+
<li><a href='http://github.com/sunaku/inochi'>Source code</a> — obtain via <a href='http://git-scm.com'>Git</a> or browse online.</li>
|
756
259
|
|
757
|
-
<li><a href='api/index.html'>API reference</a> — documentation for source code.</li>
|
260
|
+
<li><a href='./api/index.html'>API reference</a> — documentation for source code.</li>
|
758
261
|
|
759
|
-
<li><a href='http://snk.tuxfamily.org/lib/inochi'>Project home</a> — the
|
262
|
+
<li><a href='http://snk.tuxfamily.org/lib/inochi'>Project home</a> — the Inochi project home page.</li>
|
760
263
|
</ul>
|
761
264
|
|
762
265
|
<p>To get help or provide feedback, simply <a class="xref" href="#License" title="Section 1.2. "License"">contact the author(s)</a>.</p>
|
763
266
|
|
764
|
-
<
|
765
|
-
<a name="Version-numbers"/><div class="nav" id="Version-numbers"><a title="
|
267
|
+
<div class="paragraph">
|
268
|
+
<a name="Version-numbers"/><div class="nav" id="Version-numbers"><a title="Focus this segment" href="#Version-numbers"><img class="icon" alt="∗" src="&icon_nav_here;"/></a> <a title="Focus previous segment" href="#Logistics"><img class="icon" alt="↑" src="&icon_nav_prev;"/></a> <a title="Focus next segment" href="#License"><img class="icon" alt="↓" src="&icon_nav_next;"/></a> <a title="Return to listing" href="#rev:Version-numbers"><img class="icon" alt="≡" src="&icon_nav_list;"/></a></div>
|
766
269
|
<p class="title">Version numbers</p>
|
767
|
-
<div class="content"><p
|
270
|
+
<div class="content"><p>Inochi releases are numbered in <em>major.minor.patch</em> form according to the <a href='http://www.rubygems.org/read/chapter/7'>RubyGems rational versioning policy</a>, which can be summarized thus:</p>
|
768
271
|
<table border="1">
|
769
272
|
<thead>
|
770
273
|
<tr>
|
@@ -798,9 +301,9 @@
|
|
798
301
|
</tr>
|
799
302
|
</tbody>
|
800
303
|
</table></div>
|
801
|
-
</div></p></div>
|
802
|
-
</div
|
803
|
-
<a name="License"/><div class="nav" id="License"><a title="
|
304
|
+
</div><p></p></div>
|
305
|
+
</div><div class="section">
|
306
|
+
<a name="License"/><div class="nav" id="License"><a title="Focus this segment" href="#License"><img class="icon" alt="∗" src="&icon_nav_here;"/></a> <a title="Focus previous segment" href="#Version-numbers"><img class="icon" alt="↑" src="&icon_nav_prev;"/></a> <a title="Focus next segment" href="#Credits"><img class="icon" alt="↓" src="&icon_nav_next;"/></a> <a title="Return to listing" href="#rev:License"><img class="icon" alt="≡" src="&icon_nav_list;"/></a></div>
|
804
307
|
<h2 class="title">
|
805
308
|
1.2 License
|
806
309
|
</h2>
|
@@ -811,45 +314,47 @@
|
|
811
314
|
<p>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.</p>
|
812
315
|
|
813
316
|
<p>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.</p></div>
|
814
|
-
</div
|
815
|
-
<a name="Credits"/><div class="nav" id="Credits"><a title="
|
317
|
+
</div><div class="section">
|
318
|
+
<a name="Credits"/><div class="nav" id="Credits"><a title="Focus this segment" href="#Credits"><img class="icon" alt="∗" src="&icon_nav_here;"/></a> <a title="Focus previous segment" href="#License"><img class="icon" alt="↑" src="&icon_nav_prev;"/></a> <a title="Focus next segment" href="#Setup"><img class="icon" alt="↓" src="&icon_nav_next;"/></a> <a title="Return to listing" href="#rev:Credits"><img class="icon" alt="≡" src="&icon_nav_list;"/></a></div>
|
816
319
|
<h2 class="title">
|
817
320
|
1.3 Credits
|
818
321
|
</h2>
|
819
|
-
<div class="content"><img src='inochi.png' alt='
|
322
|
+
<div class="content"><a href='#Credits' class='xref' title='Section 1.3. "Credits"'><img src='inochi.png' alt='Inochi logo' /></a>
|
820
323
|
<p>The “inochi.png” image and its “inochi.svg” source utilize the <a href='http://openclipart.org/media/files/Peileppe/8978'>“3 flowers”</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>
|
821
324
|
|
822
|
-
<p
|
325
|
+
<p>Inochi is made possible by <a class="xref" href="#History" title="Chapter 4. "History"">contributions</a> from users like you:</p>
|
823
326
|
|
824
327
|
<ul>
|
825
328
|
<li>Florian Gilcher</li>
|
826
329
|
</ul></div>
|
827
|
-
</div
|
828
|
-
</div
|
829
|
-
|
330
|
+
</div><p> </p></div>
|
331
|
+
</div>
|
332
|
+
|
333
|
+
<div class="chapter">
|
334
|
+
<a name="Setup"/><div class="nav" id="Setup"><a title="Focus this segment" href="#Setup"><img class="icon" alt="∗" src="&icon_nav_here;"/></a> <a title="Focus previous segment" href="#Credits"><img class="icon" alt="↑" src="&icon_nav_prev;"/></a> <a title="Focus next segment" href="#Requirements"><img class="icon" alt="↓" src="&icon_nav_next;"/></a> <a title="Return to listing" href="#rev:Setup"><img class="icon" alt="≡" src="&icon_nav_list;"/></a></div>
|
830
335
|
<h1 class="title">
|
831
336
|
Chapter 2
|
832
337
|
<br/>
|
833
338
|
<big>Setup</big>
|
834
339
|
</h1>
|
835
|
-
<div class="content"><
|
836
|
-
<a name="Requirements"/><div class="nav" id="Requirements"><a title="
|
340
|
+
<div class="content"><div class="section">
|
341
|
+
<a name="Requirements"/><div class="nav" id="Requirements"><a title="Focus this segment" href="#Requirements"><img class="icon" alt="∗" src="&icon_nav_here;"/></a> <a title="Focus previous segment" href="#Setup"><img class="icon" alt="↑" src="&icon_nav_prev;"/></a> <a title="Focus next segment" href="#Installation"><img class="icon" alt="↓" src="&icon_nav_next;"/></a> <a title="Return to listing" href="#rev:Requirements"><img class="icon" alt="≡" src="&icon_nav_list;"/></a></div>
|
837
342
|
<h2 class="title">
|
838
343
|
2.1 Requirements
|
839
344
|
</h2>
|
840
|
-
<div class="content"><p>Your system needs the following software to run
|
345
|
+
<div class="content"><p>Your system needs the following software to run Inochi.</p>
|
841
346
|
<table border="1"><thead><tr><th>Software</th><th>Description</th><th>Notes</th></tr></thead><tbody><tr><td style='text-align: left;'><a href='http://ruby-lang.org'>Ruby</a></td><td style='text-align: left;'>Ruby language interpreter</td><td style='text-align: left;'>Version 1.8.6 or 1.8.7 is required.</td>
|
842
|
-
</tr><tr><td style='text-align: left;'><a href='http://rubygems.org'>RubyGems</a></td><td style='text-align: left;'>Ruby packaging system</td><td style='text-align: left;'>Version 1.
|
347
|
+
</tr><tr><td style='text-align: left;'><a href='http://rubygems.org'>RubyGems</a></td><td style='text-align: left;'>Ruby packaging system</td><td style='text-align: left;'>Version 1.3.1 or newer is required.</td>
|
843
348
|
</tr><tr><td style='text-align: left;'><a href='http://lynx.isc.org'>Lynx</a></td><td style='text-align: left;'>Text-mode web browser</td><td style='text-align: left;'>Version 2.8.6 or newer is required to convert HTML into plain text.</td>
|
844
349
|
</tr></tbody></table></div>
|
845
|
-
</div
|
846
|
-
<a name="Installation"/><div class="nav" id="Installation"><a title="
|
350
|
+
</div><div class="section">
|
351
|
+
<a name="Installation"/><div class="nav" id="Installation"><a title="Focus this segment" href="#Installation"><img class="icon" alt="∗" src="&icon_nav_here;"/></a> <a title="Focus previous segment" href="#Requirements"><img class="icon" alt="↑" src="&icon_nav_prev;"/></a> <a title="Focus next segment" href="#Manifest"><img class="icon" alt="↓" src="&icon_nav_next;"/></a> <a title="Return to listing" href="#rev:Installation"><img class="icon" alt="≡" src="&icon_nav_list;"/></a></div>
|
847
352
|
<h2 class="title">
|
848
353
|
2.2 Installation
|
849
354
|
</h2>
|
850
|
-
<div class="content"><p>You can install
|
355
|
+
<div class="content"><p>You can install Inochi by running this command:</p>
|
851
356
|
|
852
|
-
<pre>gem install
|
357
|
+
<pre>gem install inochi --development</pre>
|
853
358
|
|
854
359
|
<p>To check whether the installation was sucessful, run this command:</p>
|
855
360
|
|
@@ -857,19 +362,19 @@
|
|
857
362
|
|
858
363
|
<p>If the installation was successful, you will see output like this:</p>
|
859
364
|
|
860
|
-
<
|
861
|
-
version: 0.
|
862
|
-
release: 2009-
|
365
|
+
<pre>project: Inochi
|
366
|
+
version: 1.0.0
|
367
|
+
release: 2009-05-03
|
863
368
|
website: http://snk.tuxfamily.org/lib/inochi
|
864
|
-
install: /home/sun/src/inochi</pre></p>
|
369
|
+
install: /home/sun/src/inochi</pre><p></p>
|
865
370
|
|
866
371
|
<p>If you do not see such output, you may <a class="xref" href="#License" title="Section 1.2. "License"">ask the author(s)</a> for help.</p></div>
|
867
|
-
</div
|
868
|
-
<a name="Manifest"/><div class="nav" id="Manifest"><a title="
|
372
|
+
</div><div class="section">
|
373
|
+
<a name="Manifest"/><div class="nav" id="Manifest"><a title="Focus this segment" href="#Manifest"><img class="icon" alt="∗" src="&icon_nav_here;"/></a> <a title="Focus previous segment" href="#Installation"><img class="icon" alt="↑" src="&icon_nav_prev;"/></a> <a title="Focus next segment" href="#Usage"><img class="icon" alt="↓" src="&icon_nav_next;"/></a> <a title="Return to listing" href="#rev:Manifest"><img class="icon" alt="≡" src="&icon_nav_list;"/></a></div>
|
869
374
|
<h2 class="title">
|
870
375
|
2.3 Manifest
|
871
376
|
</h2>
|
872
|
-
<div class="content"><p>You will see the following items inside
|
377
|
+
<div class="content"><p>You will see the following items inside Inochi’s installation directory, whose path you can determine by running this command:</p>
|
873
378
|
|
874
379
|
<pre>inochi --version</pre>
|
875
380
|
|
@@ -878,7 +383,7 @@ install: /home/sun/src/inochi</pre></p>
|
|
878
383
|
<p><tt>bin/</tt></p>
|
879
384
|
|
880
385
|
<ul>
|
881
|
-
<li><tt>inochi</tt> — the main
|
386
|
+
<li><tt>inochi</tt> — the main Inochi executable.</li>
|
882
387
|
</ul>
|
883
388
|
</li>
|
884
389
|
|
@@ -886,7 +391,7 @@ install: /home/sun/src/inochi</pre></p>
|
|
886
391
|
<p><tt>lib/</tt></p>
|
887
392
|
|
888
393
|
<ul>
|
889
|
-
<li><tt>inochi.rb</tt> — the main
|
394
|
+
<li><tt>inochi.rb</tt> — the main Inochi library.</li>
|
890
395
|
</ul>
|
891
396
|
</li>
|
892
397
|
|
@@ -912,18 +417,19 @@ install: /home/sun/src/inochi</pre></p>
|
|
912
417
|
<p><tt>LICENSE</tt> — copyright notice and legal conditions.</p>
|
913
418
|
</li>
|
914
419
|
</ul></div>
|
915
|
-
</div
|
420
|
+
</div><p> </p></div>
|
916
421
|
</div>
|
917
422
|
|
423
|
+
|
918
424
|
<div class="part">
|
919
|
-
<a name="Usage"/><div class="nav" id="Usage"><a title="
|
425
|
+
<a name="Usage"/><div class="nav" id="Usage"><a title="Focus this segment" href="#Usage"><img class="icon" alt="∗" src="&icon_nav_here;"/></a> <a title="Focus previous segment" href="#Manifest"><img class="icon" alt="↑" src="&icon_nav_prev;"/></a> <a title="Focus next segment" href="#Command-line-interface"><img class="icon" alt="↓" src="&icon_nav_next;"/></a> <a title="Return to listing" href="#rev:Usage"><img class="icon" alt="≡" src="&icon_nav_list;"/></a></div>
|
920
426
|
<h1 class="title">
|
921
427
|
Part 3
|
922
428
|
<br/>
|
923
429
|
<big>Usage</big>
|
924
430
|
</h1>
|
925
|
-
<div class="content"><
|
926
|
-
<a name="Command-line-interface"/><div class="nav" id="Command-line-interface"><a title="
|
431
|
+
<div class="content"><div class="section">
|
432
|
+
<a name="Command-line-interface"/><div class="nav" id="Command-line-interface"><a title="Focus this segment" href="#Command-line-interface"><img class="icon" alt="∗" src="&icon_nav_here;"/></a> <a title="Focus previous segment" href="#Usage"><img class="icon" alt="↑" src="&icon_nav_prev;"/></a> <a title="Focus next segment" href="#Merging-files-with-kdiff3"><img class="icon" alt="↓" src="&icon_nav_next;"/></a> <a title="Return to listing" href="#rev:Command-line-interface"><img class="icon" alt="≡" src="&icon_nav_list;"/></a></div>
|
927
433
|
<h2 class="title">
|
928
434
|
3.1 Command-line interface
|
929
435
|
</h2>
|
@@ -933,7 +439,7 @@ install: /home/sun/src/inochi</pre></p>
|
|
933
439
|
|
934
440
|
<p>You will see this output:</p>
|
935
441
|
|
936
|
-
<
|
442
|
+
<pre>Inochi - Gives life to RubyGems-based software
|
937
443
|
|
938
444
|
Generates a project scaffold using the given information.
|
939
445
|
|
@@ -959,7 +465,7 @@ Usage:
|
|
959
465
|
|
960
466
|
|
961
467
|
ProjectName: Name of your project, which will be normalized
|
962
|
-
into the
|
468
|
+
into the name of a Ruby module that will serve
|
963
469
|
as a namespace for all code in your project.
|
964
470
|
|
965
471
|
ProgramName: (Optional) Name of the main project executable,
|
@@ -978,13 +484,13 @@ Options:
|
|
978
484
|
--manual, -a: Show the user manual
|
979
485
|
--locale, -l <s>: Set preferred language
|
980
486
|
--version, -v: Print version and exit
|
981
|
-
--help, -h: Show this message</pre></p>
|
487
|
+
--help, -h: Show this message</pre><p></p>
|
982
488
|
|
983
|
-
<
|
984
|
-
<a name="Merging-files-with-kdiff3"/><div class="nav" id="Merging-files-with-kdiff3"><a title="
|
489
|
+
<div class="tip">
|
490
|
+
<a name="Merging-files-with-kdiff3"/><div class="nav" id="Merging-files-with-kdiff3"><a title="Focus this segment" href="#Merging-files-with-kdiff3"><img class="icon" alt="∗" src="&icon_nav_here;"/></a> <a title="Focus previous segment" href="#Command-line-interface"><img class="icon" alt="↑" src="&icon_nav_prev;"/></a> <a title="Focus next segment" href="#Ruby-library-interface"><img class="icon" alt="↓" src="&icon_nav_next;"/></a> <a title="Return to listing" href="#rev:Merging-files-with-kdiff3"><img class="icon" alt="≡" src="&icon_nav_list;"/></a></div>
|
985
491
|
<p class="title">Tip 1. Merging files with <strong>kdiff3</strong></p>
|
986
492
|
<div class="content">
|
987
|
-
<img class="icon" src="&icon_tip;"
|
493
|
+
<img class="icon" alt="tip" src="&icon_tip;"/>
|
988
494
|
<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>
|
989
495
|
|
990
496
|
<ol>
|
@@ -1012,11 +518,11 @@ kdiff3 --merge "$old_file" "$new_file" --output "$outpu
|
|
1012
518
|
</li>
|
1013
519
|
|
1014
520
|
<li>
|
1015
|
-
<p>Place the file in a directory that is listed in your <code class="
|
521
|
+
<p>Place the file in a directory that is listed in your <code class="line"><span style="color:#036;font-weight:bold">PATH</span></code> environment variable.</p>
|
1016
522
|
</li>
|
1017
523
|
|
1018
524
|
<li>
|
1019
|
-
<p>Run
|
525
|
+
<p>Run Inochi like this:</p>
|
1020
526
|
|
1021
527
|
<pre>inochi -m merge2</pre>
|
1022
528
|
|
@@ -1024,32 +530,32 @@ kdiff3 --merge "$old_file" "$new_file" --output "$outpu
|
|
1024
530
|
</li>
|
1025
531
|
</ol>
|
1026
532
|
</div>
|
1027
|
-
</div></p></div>
|
1028
|
-
</div
|
1029
|
-
<a name="Ruby-library-interface"/><div class="nav" id="Ruby-library-interface"><a title="
|
533
|
+
</div><p></p></div>
|
534
|
+
</div><div class="section">
|
535
|
+
<a name="Ruby-library-interface"/><div class="nav" id="Ruby-library-interface"><a title="Focus this segment" href="#Ruby-library-interface"><img class="icon" alt="∗" src="&icon_nav_here;"/></a> <a title="Focus previous segment" href="#Merging-files-with-kdiff3"><img class="icon" alt="↑" src="&icon_nav_prev;"/></a> <a title="Focus next segment" href="#Tutorial"><img class="icon" alt="↓" src="&icon_nav_next;"/></a> <a title="Return to listing" href="#rev:Ruby-library-interface"><img class="icon" alt="≡" src="&icon_nav_list;"/></a></div>
|
1030
536
|
<h2 class="title">
|
1031
537
|
3.2 Ruby library interface
|
1032
538
|
</h2>
|
1033
|
-
<div class="content"><p>The <
|
539
|
+
<div class="content"><p>The <code class="line"><span style="color:#036;font-weight:bold">Inochi</span></code> module has several class methods which provide a common configuration for various aspects of your project. These aspects, and their interactions with the <code class="line"><span style="color:#036;font-weight:bold">Inochi</span></code> module, are as follows:</p>
|
1034
540
|
|
1035
541
|
<ul>
|
1036
|
-
<li>Your project’s main library invokes the <
|
542
|
+
<li>Your project’s main library invokes the <code class="line"><span style="color:#036;font-weight:bold">Inochi</span>.init()</code> method.</li>
|
1037
543
|
|
1038
|
-
<li>Your project’s main executable invokes the <
|
544
|
+
<li>Your project’s main executable invokes the <code class="line"><span style="color:#036;font-weight:bold">Inochi</span>.main()</code> method.</li>
|
1039
545
|
|
1040
|
-
<li>Your project’s <tt>
|
546
|
+
<li>Your project’s <tt>rakefile</tt> invokes the <code class="line"><span style="color:#036;font-weight:bold">Inochi</span>.rake()</code> method.</li>
|
1041
547
|
|
1042
|
-
<li>Your project’s user manual invokes the <
|
548
|
+
<li>Your project’s user manual invokes the <code class="line"><span style="color:#036;font-weight:bold">Inochi</span>.book()</code> method.</li>
|
1043
549
|
</ul></div>
|
1044
|
-
</div
|
1045
|
-
<a name="Tutorial"/><div class="nav" id="Tutorial"><a title="
|
550
|
+
</div><div class="section">
|
551
|
+
<a name="Tutorial"/><div class="nav" id="Tutorial"><a title="Focus this segment" href="#Tutorial"><img class="icon" alt="∗" src="&icon_nav_here;"/></a> <a title="Focus previous segment" href="#Ruby-library-interface"><img class="icon" alt="↑" src="&icon_nav_prev;"/></a> <a title="Focus next segment" href="#Have-a-brilliant-idea"><img class="icon" alt="↓" src="&icon_nav_next;"/></a> <a title="Return to listing" href="#rev:Tutorial"><img class="icon" alt="≡" src="&icon_nav_list;"/></a></div>
|
1046
552
|
<h2 class="title">
|
1047
553
|
3.3 Tutorial
|
1048
554
|
</h2>
|
1049
|
-
<div class="content"><p>This tutorial shows how
|
555
|
+
<div class="content"><p>This tutorial shows how Inochi is used to manage a hypothetical <code class="line"><span style="color:#036;font-weight:bold">WordCount</span></code> project throughout the various stages of its life.</p>
|
1050
556
|
|
1051
|
-
<
|
1052
|
-
<a name="Have-a-brilliant-idea"/><div class="nav" id="Have-a-brilliant-idea"><a title="
|
557
|
+
<div class="section">
|
558
|
+
<a name="Have-a-brilliant-idea"/><div class="nav" id="Have-a-brilliant-idea"><a title="Focus this segment" href="#Have-a-brilliant-idea"><img class="icon" alt="∗" src="&icon_nav_here;"/></a> <a title="Focus previous segment" href="#Tutorial"><img class="icon" alt="↑" src="&icon_nav_prev;"/></a> <a title="Focus next segment" href="#Generate-your-project"><img class="icon" alt="↓" src="&icon_nav_next;"/></a> <a title="Return to listing" href="#rev:Have-a-brilliant-idea"><img class="icon" alt="≡" src="&icon_nav_list;"/></a></div>
|
1053
559
|
<h3 class="title">
|
1054
560
|
3.3.1 Have a brilliant idea
|
1055
561
|
</h3>
|
@@ -1097,19 +603,22 @@ kdiff3 --merge "$old_file" "$new_file" --output "$outpu
|
|
1097
603
|
|
1098
604
|
<p>and fall asleep.</p>
|
1099
605
|
|
1100
|
-
<p>You awaken that evening relaxed and refreshed. A brilliant idea for a new project enters your mind: the project will be a tool that counts the number of words in text file. And, the project can be accessed from Ruby via the <code class="
|
606
|
+
<p>You awaken that evening relaxed and refreshed. A brilliant idea for a new project enters your mind: the project will be a tool that counts the number of words in text file. And, the project can be accessed from Ruby via the <code class="line"><span style="color:#036;font-weight:bold">WordCount</span></code> module.</p>
|
1101
607
|
|
1102
|
-
<p><em>However</em>, you must go to work the next morning, so there isn’t much time. What can you do? Let’s see how
|
1103
|
-
</div>
|
1104
|
-
|
608
|
+
<p><em>However</em>, you must go to work the next morning, so there isn’t much time. What can you do? Let’s see how Inochi can help us meet this challenge.</p></div>
|
609
|
+
</div><p></p>
|
610
|
+
|
611
|
+
<div class="section">
|
612
|
+
<a name="Generate-your-project"/><div class="nav" id="Generate-your-project"><a title="Focus this segment" href="#Generate-your-project"><img class="icon" alt="∗" src="&icon_nav_here;"/></a> <a title="Focus previous segment" href="#Have-a-brilliant-idea"><img class="icon" alt="↑" src="&icon_nav_prev;"/></a> <a title="Focus next segment" href="#View-Rake-tasks"><img class="icon" alt="↓" src="&icon_nav_next;"/></a> <a title="Return to listing" href="#rev:Generate-your-project"><img class="icon" alt="≡" src="&icon_nav_list;"/></a></div>
|
1105
613
|
<h3 class="title">
|
1106
614
|
3.3.2 Generate your project
|
1107
615
|
</h3>
|
1108
616
|
<div class="content"><p>Give life to your new project:</p>
|
1109
617
|
|
1110
|
-
<
|
618
|
+
<pre># inochi WordCount
|
619
|
+
create word_count/CREDITS
|
1111
620
|
create word_count/LICENSE
|
1112
|
-
create word_count/
|
621
|
+
create word_count/rakefile
|
1113
622
|
create word_count/bin/word_count
|
1114
623
|
create word_count/lib/word_count.rb
|
1115
624
|
create word_count/test/word_count.rb
|
@@ -1119,17 +628,17 @@ kdiff3 --merge "$old_file" "$new_file" --output "$outpu
|
|
1119
628
|
create word_count/doc/theory.erb
|
1120
629
|
create word_count/doc/usage.erb
|
1121
630
|
create word_count/doc/history.erb
|
1122
|
-
</pre></p>
|
631
|
+
</pre><p></p>
|
1123
632
|
|
1124
633
|
<p>Enter the <tt>word_count</tt> directory:</p>
|
1125
634
|
|
1126
|
-
<
|
635
|
+
<pre># cd word_count</pre><p></p>
|
1127
636
|
|
1128
|
-
<
|
1129
|
-
<a name="View-Rake-tasks"/><div class="nav" id="View-Rake-tasks"><a title="
|
637
|
+
<div class="paragraph">
|
638
|
+
<a name="View-Rake-tasks"/><div class="nav" id="View-Rake-tasks"><a title="Focus this segment" href="#View-Rake-tasks"><img class="icon" alt="∗" src="&icon_nav_here;"/></a> <a title="Focus previous segment" href="#Generate-your-project"><img class="icon" alt="↑" src="&icon_nav_prev;"/></a> <a title="Focus next segment" href="#Run-unit-tests"><img class="icon" alt="↓" src="&icon_nav_next;"/></a> <a title="Return to listing" href="#rev:View-Rake-tasks"><img class="icon" alt="≡" src="&icon_nav_list;"/></a></div>
|
1130
639
|
<p class="title">View Rake tasks</p>
|
1131
|
-
<div class="content"><
|
1132
|
-
(in /tmp/
|
640
|
+
<div class="content"><pre># rake -T
|
641
|
+
(in /tmp/rake20090504-12012-13p4oou-0/word_count)
|
1133
642
|
rake ann # Build all release announcements.
|
1134
643
|
rake ann:feed # Build RSS announcement: doc/ann.xml
|
1135
644
|
rake ann:html # Build HTML announcement: ANN.html
|
@@ -1140,42 +649,40 @@ rake clobber # Remove any generated file.
|
|
1140
649
|
rake doc # Build all documentation.
|
1141
650
|
rake doc:api # Build API reference.
|
1142
651
|
rake doc:man # Build the user manual.
|
652
|
+
rake gem # Build a release.
|
1143
653
|
rake lang:conv # Translate extracted language phrases (from=LANGUAGE_CODE).
|
1144
654
|
rake lang:dump # Extract language phrases for translation.
|
1145
|
-
rake
|
655
|
+
rake lint # Report code quality statistics.
|
1146
656
|
rake pub # Publish a release.
|
1147
657
|
rake pub:ann # Publish all announcements.
|
1148
658
|
rake pub:ann:forge # Announce to RubyForge news.
|
1149
659
|
rake pub:ann:raa # Announce to RAA (Ruby Application Archive).
|
1150
660
|
rake pub:ann:talk # Announce to ruby-talk mailing list.
|
1151
661
|
rake pub:doc # Publish documentation to project website.
|
1152
|
-
rake pub:
|
1153
|
-
rake test # Run
|
1154
|
-
|
1155
|
-
|
1156
|
-
|
662
|
+
rake pub:gem # Publish release packages to RubyForge.
|
663
|
+
rake test # Run tests.
|
664
|
+
rake test:cov # Run tests with code coverage analysis.
|
665
|
+
rake test:ruby # Run tests with multiple Ruby versions.
|
666
|
+
</pre><p></p></div>
|
667
|
+
</div><div class="paragraph">
|
668
|
+
<a name="Run-unit-tests"/><div class="nav" id="Run-unit-tests"><a title="Focus this segment" href="#Run-unit-tests"><img class="icon" alt="∗" src="&icon_nav_here;"/></a> <a title="Focus previous segment" href="#View-Rake-tasks"><img class="icon" alt="↑" src="&icon_nav_prev;"/></a> <a title="Focus next segment" href="#Run-project-executable"><img class="icon" alt="↓" src="&icon_nav_next;"/></a> <a title="Return to listing" href="#rev:Run-unit-tests"><img class="icon" alt="≡" src="&icon_nav_list;"/></a></div>
|
1157
669
|
<p class="title">Run unit tests</p>
|
1158
|
-
<div class="content"><
|
1159
|
-
(in /tmp/
|
1160
|
-
|
1161
|
-
|
1162
|
-
|
1163
|
-
|
1164
|
-
|
1165
|
-
1 tests, 25 assertions, 0 failures, 0 errors, 0 skips
|
1166
|
-
</pre></p></div>
|
1167
|
-
</div> <div class="paragraph">
|
1168
|
-
<a name="Run-project-executable"/><div class="nav" id="Run-project-executable"><a title="Reverse jump to listing" href="#rev:Run-project-executable">≡</a><a title="Jump to previous segment" href="#Run-unit-tests">△</a><a title="Jump to next segment" href="#Show-user-manual">▽</a><a title="Jump to this segment" href="#Run-project-executable">◎</a></div>
|
670
|
+
<div class="content"><pre># rake test
|
671
|
+
(in /tmp/rake20090504-12012-13p4oou-0/word_count)
|
672
|
+
Inochi establishment tests passed!
|
673
|
+
</pre><p></p></div>
|
674
|
+
</div><div class="paragraph">
|
675
|
+
<a name="Run-project-executable"/><div class="nav" id="Run-project-executable"><a title="Focus this segment" href="#Run-project-executable"><img class="icon" alt="∗" src="&icon_nav_here;"/></a> <a title="Focus previous segment" href="#Run-unit-tests"><img class="icon" alt="↑" src="&icon_nav_prev;"/></a> <a title="Focus next segment" href="#Show-user-manual"><img class="icon" alt="↓" src="&icon_nav_next;"/></a> <a title="Return to listing" href="#rev:Run-project-executable"><img class="icon" alt="≡" src="&icon_nav_list;"/></a></div>
|
1169
676
|
<p class="title">Run project executable</p>
|
1170
|
-
<div class="content"><
|
1171
|
-
Command-line options: {:
|
677
|
+
<div class="content"><pre># ruby bin/word_count
|
678
|
+
Command-line options: {:manual=>false, :locale=>nil, :version=>false, :help=>false}
|
1172
679
|
Command-line arguments: []
|
1173
|
-
</pre></p>
|
680
|
+
</pre><p></p>
|
1174
681
|
|
1175
682
|
<p>See usage information:</p>
|
1176
683
|
|
1177
|
-
<
|
1178
|
-
WordCount -
|
684
|
+
<pre># ruby bin/word_count --help
|
685
|
+
WordCount - put a single line description of your project here
|
1179
686
|
|
1180
687
|
TODO: Explain the command-line usage of this program here.
|
1181
688
|
|
@@ -1198,45 +705,45 @@ Options:
|
|
1198
705
|
--locale, -l <s>: Set preferred language
|
1199
706
|
--version, -v: Print version and exit
|
1200
707
|
--help, -h: Show this message
|
1201
|
-
</pre></p>
|
708
|
+
</pre><p></p>
|
1202
709
|
|
1203
710
|
<p>See project & version information:</p>
|
1204
711
|
|
1205
|
-
<
|
712
|
+
<pre># ruby bin/word_count --version
|
1206
713
|
project: WordCount
|
1207
714
|
version: 0.0.0
|
1208
|
-
release: 2009-
|
715
|
+
release: 2009-05-04
|
1209
716
|
website: http://word_count.rubyforge.org
|
1210
|
-
install: /tmp/
|
1211
|
-
</pre></p></div>
|
1212
|
-
</div
|
1213
|
-
<a name="Show-user-manual"/><div class="nav" id="Show-user-manual"><a title="
|
717
|
+
install: /tmp/rake20090504-12012-13p4oou-0/word_count
|
718
|
+
</pre><p></p></div>
|
719
|
+
</div><div class="paragraph">
|
720
|
+
<a name="Show-user-manual"/><div class="nav" id="Show-user-manual"><a title="Focus this segment" href="#Show-user-manual"><img class="icon" alt="∗" src="&icon_nav_here;"/></a> <a title="Focus previous segment" href="#Run-project-executable"><img class="icon" alt="↑" src="&icon_nav_prev;"/></a> <a title="Focus next segment" href="#Configure-your-project"><img class="icon" alt="↓" src="&icon_nav_next;"/></a> <a title="Return to listing" href="#rev:Show-user-manual"><img class="icon" alt="≡" src="&icon_nav_list;"/></a></div>
|
1214
721
|
<p class="title">Show user manual</p>
|
1215
722
|
<div class="content"><p>Build the user manual (please disregard any “unclosed span” warnings):</p>
|
1216
723
|
|
1217
|
-
<
|
724
|
+
<pre># rake doc:man</pre><p></p>
|
1218
725
|
|
1219
726
|
<p>Launch the user manual:</p>
|
1220
727
|
|
1221
|
-
<
|
728
|
+
<pre># ruby bin/word_count --manual</pre><p></p>
|
1222
729
|
|
1223
730
|
<p>The manual will now appear in your default web browser.</p></div>
|
1224
|
-
</div
|
1225
|
-
</div
|
1226
|
-
<a name="Configure-your-project"/><div class="nav" id="Configure-your-project"><a title="
|
731
|
+
</div><p> </p></div>
|
732
|
+
</div><div class="section">
|
733
|
+
<a name="Configure-your-project"/><div class="nav" id="Configure-your-project"><a title="Focus this segment" href="#Configure-your-project"><img class="icon" alt="∗" src="&icon_nav_here;"/></a> <a title="Focus previous segment" href="#Show-user-manual"><img class="icon" alt="↑" src="&icon_nav_prev;"/></a> <a title="Focus next segment" href="#Project-information"><img class="icon" alt="↓" src="&icon_nav_next;"/></a> <a title="Return to listing" href="#rev:Configure-your-project"><img class="icon" alt="≡" src="&icon_nav_list;"/></a></div>
|
1227
734
|
<h3 class="title">
|
1228
735
|
3.3.3 Configure your project
|
1229
736
|
</h3>
|
1230
|
-
<div class="content"><p><a class="xref" href="#Ruby-library-interface"
|
737
|
+
<div class="content"><p><a class="xref" href="#Ruby-library-interface" title="Section 3.2">Ruby library interface</a> lists and documents the interactions between your project and Inochi. These points of interaction are illustrated in the following sections.</p>
|
1231
738
|
|
1232
|
-
<
|
1233
|
-
<a name="Project-information"/><div class="nav" id="Project-information"><a title="
|
739
|
+
<div class="section">
|
740
|
+
<a name="Project-information"/><div class="nav" id="Project-information"><a title="Focus this segment" href="#Project-information"><img class="icon" alt="∗" src="&icon_nav_here;"/></a> <a title="Focus previous segment" href="#Configure-your-project"><img class="icon" alt="↑" src="&icon_nav_prev;"/></a> <a title="Focus next segment" href="#Project-executable"><img class="icon" alt="↓" src="&icon_nav_next;"/></a> <a title="Return to listing" href="#rev:Project-information"><img class="icon" alt="≡" src="&icon_nav_list;"/></a></div>
|
1234
741
|
<h4 class="title">
|
1235
742
|
3.3.3.1 Project information
|
1236
743
|
</h4>
|
1237
744
|
<div class="content"><p>Open the <tt>LICENSE</tt> file, which contains the open source <a href='http://www.opensource.org/licenses/isc-license.txt'>ISC license</a> by default, and add a copyright notice with your name and (optional) email address:</p>
|
1238
745
|
|
1239
|
-
<
|
746
|
+
<pre>(the ISC license)
|
1240
747
|
|
1241
748
|
Copyright 2009 Your Name <your@email.here>
|
1242
749
|
|
@@ -1251,98 +758,98 @@ ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
1251
758
|
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
1252
759
|
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
1253
760
|
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
1254
|
-
</pre></p>
|
761
|
+
</pre><p></p>
|
1255
762
|
|
1256
763
|
<p>Open the main project library file <tt>lib/word_count.rb</tt> and fill in the blanks:</p>
|
1257
764
|
|
1258
|
-
<p><pre class="
|
1259
|
-
gem <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">inochi</span><span style="color:#710">'</span></span>, <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">~>
|
765
|
+
<p><ins><pre class="para">require <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">rubygems</span><span style="color:#710">'</span></span>
|
766
|
+
gem <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">inochi</span><span style="color:#710">'</span></span>, <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">~> 1</span><span style="color:#710">'</span></span>
|
1260
767
|
require <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">inochi</span><span style="color:#710">'</span></span>
|
1261
768
|
|
1262
769
|
<span style="color:#036;font-weight:bold">Inochi</span>.init <span style="color:#A60">:WordCount</span>,
|
1263
770
|
<span style="color:#A60">:project</span> => <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">WordCount</span><span style="color:#710">'</span></span>,
|
1264
771
|
<span style="color:#A60">:version</span> => <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">0.0.0</span><span style="color:#710">'</span></span>,
|
1265
|
-
<span style="color:#A60">:release</span> => <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">2009-
|
772
|
+
<span style="color:#A60">:release</span> => <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">2009-05-04</span><span style="color:#710">'</span></span>,
|
1266
773
|
<span style="color:#A60">:website</span> => <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>,
|
1267
|
-
<span style="color:#A60">:tagline</span> => <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">
|
774
|
+
<span style="color:#A60">:tagline</span> => <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">put a single line description of your project here</span><span style="color:#710">'</span></span>,
|
1268
775
|
<span style="color:#A60">:require</span> => {
|
1269
|
-
<span style="color:#
|
1270
|
-
<span style="color:#
|
1271
|
-
<span style="color:#
|
1272
|
-
<span style="color:#
|
1273
|
-
<span style="color:#
|
1274
|
-
<span style="color:#
|
1275
|
-
<span style="color:#
|
1276
|
-
<span style="color:#
|
1277
|
-
}
|
1278
|
-
|
1279
|
-
</pre></p></div>
|
1280
|
-
</div
|
1281
|
-
<a name="Project-executable"/><div class="nav" id="Project-executable"><a title="
|
776
|
+
<span style="color:#888"># TODO: list gems required by your project here.</span>
|
777
|
+
<span style="color:#888"># NOTE: this is completely optional!</span>
|
778
|
+
<span style="color:#888">#</span>
|
779
|
+
<span style="color:#888"># example: if your project needs version 9.9.9 of the 'foo' gem:</span>
|
780
|
+
<span style="color:#888"># 'foo' => '9.9.9',</span>
|
781
|
+
<span style="color:#888">#</span>
|
782
|
+
<span style="color:#888"># example: if any version of a gem is acceptable then:</span>
|
783
|
+
<span style="color:#888"># 'foo' => nil,</span>
|
784
|
+
}
|
785
|
+
|
786
|
+
</pre></ins></p></div>
|
787
|
+
</div><div class="section">
|
788
|
+
<a name="Project-executable"/><div class="nav" id="Project-executable"><a title="Focus this segment" href="#Project-executable"><img class="icon" alt="∗" src="&icon_nav_here;"/></a> <a title="Focus previous segment" href="#Project-information"><img class="icon" alt="↑" src="&icon_nav_prev;"/></a> <a title="Focus next segment" href="#Rake-tasks"><img class="icon" alt="↓" src="&icon_nav_next;"/></a> <a title="Return to listing" href="#rev:Project-executable"><img class="icon" alt="≡" src="&icon_nav_list;"/></a></div>
|
1282
789
|
<h4 class="title">
|
1283
790
|
3.3.3.2 Project executable
|
1284
791
|
</h4>
|
1285
792
|
<div class="content"><p>Open the <tt>bin/word_count</tt> file and fill in the blanks:</p>
|
1286
793
|
|
1287
|
-
<p><pre class="
|
1288
|
-
<span style="color:#
|
1289
|
-
<span style="color:#
|
1290
|
-
<span style="color:#
|
1291
|
-
<span style="color:#
|
1292
|
-
<span style="color:#
|
1293
|
-
<span style="color:#
|
1294
|
-
<span style="color:#
|
1295
|
-
<span style="color:#
|
1296
|
-
<span style="color:#
|
1297
|
-
<span style="color:#
|
1298
|
-
<span style="color:#
|
1299
|
-
<span style="color:#
|
1300
|
-
<span style="color:#
|
1301
|
-
<span style="color:#
|
1302
|
-
<span style="color:#
|
1303
|
-
<span style="color:#
|
1304
|
-
<span style="color:#
|
1305
|
-
<span style="color:#
|
794
|
+
<p><ins><pre class="para"><span style="color:#34b">#!/usr/bin/ruby -w</span>
|
795
|
+
<span style="color:#888">#</span>
|
796
|
+
<span style="color:#888"># TODO: Explain the command-line usage of this program here.</span>
|
797
|
+
<span style="color:#888">#</span>
|
798
|
+
<span style="color:#888">#</span>
|
799
|
+
<span style="color:#888"># Usage:</span>
|
800
|
+
<span style="color:#888">#</span>
|
801
|
+
<span style="color:#888"># word_count [Options] Param1 Param2 Param3...</span>
|
802
|
+
<span style="color:#888">#</span>
|
803
|
+
<span style="color:#888">#</span>
|
804
|
+
<span style="color:#888"># Param1: Description for the first parameter.</span>
|
805
|
+
<span style="color:#888">#</span>
|
806
|
+
<span style="color:#888"># Param2: Description for the second parameter.</span>
|
807
|
+
<span style="color:#888">#</span>
|
808
|
+
<span style="color:#888"># Param3: Description for the third parameter.</span>
|
809
|
+
<span style="color:#888">#</span>
|
810
|
+
<span style="color:#888">#</span>
|
811
|
+
<span style="color:#888"># Options:</span>
|
812
|
+
<span style="color:#888">#</span>
|
1306
813
|
|
1307
814
|
require <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">rubygems</span><span style="color:#710">'</span></span>
|
1308
|
-
gem <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">inochi</span><span style="color:#710">'</span></span>, <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">~>
|
815
|
+
gem <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">inochi</span><span style="color:#710">'</span></span>, <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">~> 1</span><span style="color:#710">'</span></span>
|
1309
816
|
require <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">inochi</span><span style="color:#710">'</span></span>
|
1310
817
|
|
1311
818
|
options = <span style="color:#036;font-weight:bold">Inochi</span>.main <span style="color:#A60">:WordCount</span> <span style="color:#080;font-weight:bold">do</span>
|
1312
|
-
<span style="color:#
|
1313
|
-
<span style="color:#
|
1314
|
-
<span style="color:#
|
1315
|
-
<span style="color:#
|
819
|
+
<span style="color:#888"># TODO: define command-line options here.</span>
|
820
|
+
<span style="color:#888"># see http://trollop.rubyforge.org/</span>
|
821
|
+
<span style="color:#888">#</span>
|
822
|
+
<span style="color:#888"># NOTE: this is completely optional!</span>
|
1316
823
|
<span style="color:#080;font-weight:bold">end</span>
|
1317
824
|
|
1318
|
-
<span style="color:#
|
825
|
+
<span style="color:#888"># TODO: add the body of your program here</span>
|
1319
826
|
|
1320
|
-
puts <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">"</span><span style="">Command-line options: </span><span style="background:#eee"><span style="font-weight:bold;color:#
|
1321
|
-
puts <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">"</span><span style="">Command-line arguments: </span><span style="background:#eee"><span style="font-weight:bold;color:#
|
827
|
+
puts <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">"</span><span style="">Command-line options: </span><span style="background:#eee;color:black"><span style="font-weight:bold;color:#777">#{</span>options.inspect<span style="font-weight:bold;color:#777">}</span></span><span style="color:#710">"</span></span>
|
828
|
+
puts <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">"</span><span style="">Command-line arguments: </span><span style="background:#eee;color:black"><span style="font-weight:bold;color:#777">#{</span><span style="color:#038;font-weight:bold">ARGV</span>.inspect<span style="font-weight:bold;color:#777">}</span></span><span style="color:#710">"</span></span>
|
1322
829
|
|
1323
|
-
</pre></p></div>
|
1324
|
-
</div
|
1325
|
-
<a name="Rake-tasks"/><div class="nav" id="Rake-tasks"><a title="
|
830
|
+
</pre></ins></p></div>
|
831
|
+
</div><div class="section">
|
832
|
+
<a name="Rake-tasks"/><div class="nav" id="Rake-tasks"><a title="Focus this segment" href="#Rake-tasks"><img class="icon" alt="∗" src="&icon_nav_here;"/></a> <a title="Focus previous segment" href="#Project-executable"><img class="icon" alt="↑" src="&icon_nav_prev;"/></a> <a title="Focus next segment" href="#User-manual"><img class="icon" alt="↓" src="&icon_nav_next;"/></a> <a title="Return to listing" href="#rev:Rake-tasks"><img class="icon" alt="≡" src="&icon_nav_list;"/></a></div>
|
1326
833
|
<h4 class="title">
|
1327
834
|
3.3.3.3 Rake tasks
|
1328
835
|
</h4>
|
1329
|
-
<div class="content"><p>Open the <tt>
|
836
|
+
<div class="content"><p>Open the <tt>rakefile</tt> and fill in the blanks:</p>
|
1330
837
|
|
1331
|
-
<p><pre class="
|
1332
|
-
gem <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">inochi</span><span style="color:#710">'</span></span>, <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">~>
|
838
|
+
<p><ins><pre class="para">require <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">rubygems</span><span style="color:#710">'</span></span>
|
839
|
+
gem <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">inochi</span><span style="color:#710">'</span></span>, <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">~> 1</span><span style="color:#710">'</span></span>
|
1333
840
|
require <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">inochi</span><span style="color:#710">'</span></span>
|
1334
841
|
|
1335
842
|
<span style="color:#036;font-weight:bold">Inochi</span>.rake <span style="color:#A60">:WordCount</span> <span style="color:#080;font-weight:bold">do</span> |gem|
|
1336
|
-
<span style="color:#
|
1337
|
-
<span style="color:#
|
1338
|
-
<span style="color:#
|
1339
|
-
<span style="color:#
|
1340
|
-
<span style="color:#
|
843
|
+
<span style="color:#888"># TODO: additional gem configuration.</span>
|
844
|
+
<span style="color:#888"># NOTE: this is completely optional!</span>
|
845
|
+
<span style="color:#888">#</span>
|
846
|
+
<span style="color:#888"># gem.extensions = ['foo.so']</span>
|
847
|
+
<span style="color:#888"># gem.files += ['other', 'files']</span>
|
1341
848
|
<span style="color:#080;font-weight:bold">end</span>
|
1342
849
|
|
1343
|
-
</pre></p></div>
|
1344
|
-
</div
|
1345
|
-
<a name="User-manual"/><div class="nav" id="User-manual"><a title="
|
850
|
+
</pre></ins></p></div>
|
851
|
+
</div><div class="section">
|
852
|
+
<a name="User-manual"/><div class="nav" id="User-manual"><a title="Focus this segment" href="#User-manual"><img class="icon" alt="∗" src="&icon_nav_here;"/></a> <a title="Focus previous segment" href="#Rake-tasks"><img class="icon" alt="↑" src="&icon_nav_prev;"/></a> <a title="Focus next segment" href="#doc-index.erb"><img class="icon" alt="↓" src="&icon_nav_next;"/></a> <a title="Return to listing" href="#rev:User-manual"><img class="icon" alt="≡" src="&icon_nav_list;"/></a></div>
|
1346
853
|
<h4 class="title">
|
1347
854
|
3.3.3.4 User manual
|
1348
855
|
</h4>
|
@@ -1350,55 +857,58 @@ require <span style="background-color:#fff0f0;color:#D20"><span style="color:#71
|
|
1350
857
|
|
1351
858
|
<p>Open these source files and fill in the blanks:</p>
|
1352
859
|
|
1353
|
-
<
|
1354
|
-
<a name="doc-index.erb"/><div class="nav" id="doc-index.erb"><a title="
|
860
|
+
<div class="paragraph">
|
861
|
+
<a name="doc-index.erb"/><div class="nav" id="doc-index.erb"><a title="Focus this segment" href="#doc-index.erb"><img class="icon" alt="∗" src="&icon_nav_here;"/></a> <a title="Focus previous segment" href="#User-manual"><img class="icon" alt="↑" src="&icon_nav_prev;"/></a> <a title="Focus next segment" href="#doc-intro.erb"><img class="icon" alt="↓" src="&icon_nav_next;"/></a> <a title="Return to listing" href="#rev:doc-index.erb"><img class="icon" alt="≡" src="&icon_nav_list;"/></a></div>
|
1355
862
|
<p class="title"><tt>doc/index.erb</tt></p>
|
1356
|
-
<div class="content"><p><pre class="
|
1357
|
-
|
1358
|
-
|
1359
|
-
|
1360
|
-
|
1361
|
-
|
1362
|
-
|
1363
|
-
</pre></p></div>
|
863
|
+
<div class="content"><p><ins><pre class="para" lang="rhtml">% Inochi.book :WordCount, self
|
864
|
+
|
865
|
+
%+ "intro.erb"
|
866
|
+
%+ "setup.erb"
|
867
|
+
%+ "theory.erb"
|
868
|
+
%+ "usage.erb"
|
869
|
+
%+ "history.erb"
|
870
|
+
</pre></ins></p></div>
|
1364
871
|
</div><div class="paragraph">
|
1365
|
-
<a name="doc-intro.erb"/><div class="nav" id="doc-intro.erb"><a title="
|
872
|
+
<a name="doc-intro.erb"/><div class="nav" id="doc-intro.erb"><a title="Focus this segment" href="#doc-intro.erb"><img class="icon" alt="∗" src="&icon_nav_here;"/></a> <a title="Focus previous segment" href="#doc-index.erb"><img class="icon" alt="↑" src="&icon_nav_prev;"/></a> <a title="Focus next segment" href="#doc-setup.erb"><img class="icon" alt="↓" src="&icon_nav_next;"/></a> <a title="Return to listing" href="#rev:doc-intro.erb"><img class="icon" alt="≡" src="&icon_nav_list;"/></a></div>
|
1366
873
|
<p class="title"><tt>doc/intro.erb</tt></p>
|
1367
|
-
<div class="content"><p><pre class="
|
1368
|
-
|
874
|
+
<div class="content"><p><ins><pre class="para" lang="rhtml">% api_url = './api/index.html'
|
875
|
+
% repo_url = 'http://github.com/__________/' + $program
|
876
|
+
% repo_scm = '[Git](http://git-scm.com)'
|
877
|
+
|
878
|
+
%|chapter "Introduction"
|
879
|
+
%|project
|
1369
880
|
<span style="color:#F00;background-color:#FAA">></span> TODO: explain the purpose of your project
|
1370
881
|
|
1371
|
-
|
1372
|
-
<span style="background:#eee"><span style="font-weight:bold;color:#888"><%</span> <span style="color:#080;font-weight:bold">end</span> <span style="font-weight:bold;color:#888">%></span></span>
|
882
|
+
<span style="background:#eee;color:black"><span style="font-weight:bold;color:#777"><%=</span> <span style="color:#d70;font-weight:bold">$project</span> <span style="font-weight:bold;color:#777">%></span></span> is a __________ that __________.
|
1373
883
|
|
1374
|
-
|
884
|
+
<span style="color:#F00;background-color:#FAA">></span> TODO: explain why your project is important
|
1375
885
|
|
1376
|
-
|
1377
|
-
|
1378
|
-
|
1379
|
-
|
886
|
+
<span style="background:#eee;color:black"><span style="font-weight:bold;color:#777"><%=</span> <span style="color:#d70;font-weight:bold">$project</span> <span style="font-weight:bold;color:#777">%></span></span> is exciting because:
|
887
|
+
* It lets you __________.
|
888
|
+
* Its core contains less than __________ lines of code.
|
889
|
+
* It __________.
|
1380
890
|
|
1381
|
-
|
891
|
+
<span style="color:#F00;background-color:#FAA">></span> TODO: explain why your project is better than its competitors
|
1382
892
|
|
1383
|
-
|
1384
|
-
|
1385
|
-
|
1386
|
-
|
893
|
+
These features distinguish <span style="background:#eee;color:black"><span style="font-weight:bold;color:#777"><%=</span> <span style="color:#d70;font-weight:bold">$project</span> <span style="font-weight:bold;color:#777">%></span></span> from the competition:
|
894
|
+
* [competitor 1](http://)
|
895
|
+
* [competitor 2](http://)
|
896
|
+
* [competitor 3](http://)
|
1387
897
|
|
1388
|
-
|
898
|
+
%|paragraph "Etymology"
|
1389
899
|
<span style="color:#F00;background-color:#FAA">></span> TODO: explain the meaning of the name of your project
|
1390
|
-
<span style="background:#eee"><span style="font-weight:bold;color:#888"><%</span> <span style="color:#080;font-weight:bold">end</span> <span style="font-weight:bold;color:#888">%></span></span>
|
1391
900
|
|
1392
|
-
|
1393
|
-
* <span style="background:#eee"><span style="font-weight:bold;color:#
|
1394
|
-
* [Source code](
|
1395
|
-
* [API reference](
|
901
|
+
%|section "Logistics"
|
902
|
+
* <span style="background:#eee;color:black"><span style="font-weight:bold;color:#777"><%=</span> xref <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">"</span><span style="">History</span><span style="color:#710">"</span></span>, <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">"</span><span style="">Release notes</span><span style="color:#710">"</span></span> <span style="font-weight:bold;color:#777">%></span></span> --- history of project releases.
|
903
|
+
* [Source code](<span style="background:#eee;color:black"><span style="font-weight:bold;color:#777"><%=</span> repo_url <span style="font-weight:bold;color:#777">%></span></span>) --- obtain via <span style="background:#eee;color:black"><span style="font-weight:bold;color:#777"><%=</span> repo_scm <span style="font-weight:bold;color:#777">%></span></span> or browse online.
|
904
|
+
* [API reference](<span style="background:#eee;color:black"><span style="font-weight:bold;color:#777"><%=</span> api_url <span style="font-weight:bold;color:#777">%></span></span>) --- documentation for source code.
|
905
|
+
* [Project home](<span style="background:#eee;color:black"><span style="font-weight:bold;color:#777"><%=</span> <span style="color:#d70;font-weight:bold">$website</span> <span style="font-weight:bold;color:#777">%></span></span>) --- the <span style="background:#eee;color:black"><span style="font-weight:bold;color:#777"><%=</span> <span style="color:#d70;font-weight:bold">$project</span> <span style="font-weight:bold;color:#777">%></span></span> project home page.
|
1396
906
|
|
1397
907
|
To get help or provide feedback, simply
|
1398
|
-
<span style="background:#eee"><span style="font-weight:bold;color:#
|
908
|
+
<span style="background:#eee;color:black"><span style="font-weight:bold;color:#777"><%=</span> xref <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">"</span><span style="">License</span><span style="color:#710">"</span></span>, <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">"</span><span style="">contact the author(s)</span><span style="color:#710">"</span></span> <span style="font-weight:bold;color:#777">%></span></span>.
|
1399
909
|
|
1400
|
-
|
1401
|
-
|
910
|
+
%|paragraph "Version numbers"
|
911
|
+
<span style="background:#eee;color:black"><span style="font-weight:bold;color:#777"><%=</span> <span style="color:#d70;font-weight:bold">$project</span> <span style="font-weight:bold;color:#777">%></span></span> releases are numbered in *major.minor.patch*
|
1402
912
|
form according to the [RubyGems rational versioning
|
1403
913
|
policy](http://www.rubygems.org/read/chapter/7), which
|
1404
914
|
can be summarized thus:
|
@@ -1436,73 +946,64 @@ require <span style="background-color:#fff0f0;color:#D20"><span style="color:#71
|
|
1436
946
|
<span style="color:#070"></tr></span>
|
1437
947
|
<span style="color:#070"></tbody></span>
|
1438
948
|
<span style="color:#070"></table></span>
|
1439
|
-
<span style="background:#eee"><span style="font-weight:bold;color:#888"><%</span> <span style="color:#080;font-weight:bold">end</span> <span style="font-weight:bold;color:#888">%></span></span>
|
1440
|
-
<span style="background:#eee"><span style="font-weight:bold;color:#888"><%</span> <span style="color:#080;font-weight:bold">end</span> <span style="font-weight:bold;color:#888">%></span></span>
|
1441
949
|
|
1442
|
-
|
1443
|
-
|
1444
|
-
<span style="background:#eee"><span style="font-weight:bold;color:#888"><%</span> <span style="color:#080;font-weight:bold">end</span> <span style="font-weight:bold;color:#888">%></span></span>
|
950
|
+
%|paragraph "License"
|
951
|
+
%<span style="color:#F00;background-color:#FAA"><</span> "../LICENSE"
|
1445
952
|
|
1446
|
-
|
953
|
+
%|section "Credits"
|
1447
954
|
<span style="color:#F00;background-color:#FAA">></span> TODO: give attribution to your predecessors and contributors
|
1448
955
|
|
1449
|
-
|
1450
|
-
<span style="background:#eee"><span style="font-weight:bold;color:#
|
956
|
+
<span style="background:#eee;color:black"><span style="font-weight:bold;color:#777"><%=</span> <span style="color:#d70;font-weight:bold">$project</span> <span style="font-weight:bold;color:#777">%></span></span> is made possible by
|
957
|
+
<span style="background:#eee;color:black"><span style="font-weight:bold;color:#777"><%=</span> xref <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">"</span><span style="">History</span><span style="color:#710">"</span></span>, <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">"</span><span style="">contributions</span><span style="color:#710">"</span></span> <span style="font-weight:bold;color:#777">%></span></span>
|
1451
958
|
from users like you:
|
1452
959
|
|
1453
|
-
|
1454
|
-
|
1455
|
-
* __________ (contributor name)
|
1456
|
-
<span style="background:#eee"><span style="font-weight:bold;color:#888"><%</span> <span style="color:#080;font-weight:bold">end</span> <span style="font-weight:bold;color:#888">%></span></span>
|
1457
|
-
<span style="background:#eee"><span style="font-weight:bold;color:#888"><%</span> <span style="color:#080;font-weight:bold">end</span> <span style="font-weight:bold;color:#888">%></span></span>
|
1458
|
-
</pre></p></div>
|
960
|
+
%<span style="color:#F00;background-color:#FAA"><</span> "../CREDITS"
|
961
|
+
</pre></ins></p></div>
|
1459
962
|
</div><div class="paragraph">
|
1460
|
-
<a name="doc-setup.erb"/><div class="nav" id="doc-setup.erb"><a title="
|
963
|
+
<a name="doc-setup.erb"/><div class="nav" id="doc-setup.erb"><a title="Focus this segment" href="#doc-setup.erb"><img class="icon" alt="∗" src="&icon_nav_here;"/></a> <a title="Focus previous segment" href="#doc-intro.erb"><img class="icon" alt="↑" src="&icon_nav_prev;"/></a> <a title="Focus next segment" href="#doc-theory.erb"><img class="icon" alt="↓" src="&icon_nav_next;"/></a> <a title="Return to listing" href="#rev:doc-setup.erb"><img class="icon" alt="≡" src="&icon_nav_list;"/></a></div>
|
1461
964
|
<p class="title"><tt>doc/setup.erb</tt></p>
|
1462
|
-
<div class="content"><p><pre class="
|
1463
|
-
|
1464
|
-
Your system needs the following software to run
|
965
|
+
<div class="content"><p><ins><pre class="para" lang="rhtml">%|chapter "Setup"
|
966
|
+
%|section "Requirements"
|
967
|
+
Your system needs the following software to run <span style="background:#eee;color:black"><span style="font-weight:bold;color:#777"><%=</span> <span style="color:#d70;font-weight:bold">$project</span> <span style="font-weight:bold;color:#777">%></span></span>.
|
1465
968
|
|
1466
969
|
| Software | Description | Notes |
|
1467
970
|
| -------- | ----------- | ----- |
|
1468
|
-
| [Ruby](http://ruby-lang.org) | Ruby language interpreter | Version 1.8.7
|
1469
|
-
| [RubyGems](http://rubygems.org) | Ruby packaging system | Version 1.3.
|
1470
|
-
<span style="background:#eee"><span style="font-weight:bold;color:#888"><%</span> <span style="color:#080;font-weight:bold">end</span> <span style="font-weight:bold;color:#888">%></span></span>
|
971
|
+
| [Ruby](http://ruby-lang.org) | Ruby language interpreter | Version 1.8.7 has been tested successfully. |
|
972
|
+
| [RubyGems](http://rubygems.org) | Ruby packaging system | Version 1.3.2 or newer is required. |
|
1471
973
|
|
1472
|
-
|
1473
|
-
You can install
|
974
|
+
%|section "Installation"
|
975
|
+
You can install <span style="background:#eee;color:black"><span style="font-weight:bold;color:#777"><%=</span> <span style="color:#d70;font-weight:bold">$project</span> <span style="font-weight:bold;color:#777">%></span></span> by running this command:
|
1474
976
|
|
1475
|
-
gem install
|
977
|
+
gem install <span style="background:#eee;color:black"><span style="font-weight:bold;color:#777"><%=</span> <span style="color:#d70;font-weight:bold">$program</span> <span style="font-weight:bold;color:#777">%></span></span>
|
1476
978
|
|
1477
979
|
To check whether the installation was sucessful, run this command:
|
1478
980
|
|
1479
|
-
<span style="background:#eee"><span style="font-weight:bold;color:#
|
981
|
+
<span style="background:#eee;color:black"><span style="font-weight:bold;color:#777"><%=</span> <span style="color:#d70;font-weight:bold">$program</span> <span style="font-weight:bold;color:#777">%></span></span> --version
|
1480
982
|
|
1481
983
|
If the installation was successful, you will see output like this:
|
1482
984
|
|
1483
|
-
<span style="color:#070"><pre></span><span style="background:#eee"><span style="font-weight:bold;color:#
|
985
|
+
<span style="color:#070"><pre></span><span style="background:#eee;color:black"><span style="font-weight:bold;color:#777"><%=</span> verbatim <span style="background-color:#f0fff0;color:#2B2"><span style="color:#161">`</span><span style="">ruby bin/</span><span style="background:#eee;color:black"><span style="font-weight:bold;color:#777">#{</span><span style="color:#d70;font-weight:bold">$program</span><span style="font-weight:bold;color:#777">}</span></span><span style=""> --version</span><span style="color:#161">`</span></span> <span style="font-weight:bold;color:#777">%></span></span><span style="color:#070"></pre></span>
|
1484
986
|
|
1485
987
|
If you do not see such output, you may
|
1486
|
-
<span style="background:#eee"><span style="font-weight:bold;color:#
|
1487
|
-
<span style="background:#eee"><span style="font-weight:bold;color:#888"><%</span> <span style="color:#080;font-weight:bold">end</span> <span style="font-weight:bold;color:#888">%></span></span>
|
988
|
+
<span style="background:#eee;color:black"><span style="font-weight:bold;color:#777"><%=</span> xref <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">"</span><span style="">License</span><span style="color:#710">"</span></span>, <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">"</span><span style="">ask the author(s)</span><span style="color:#710">"</span></span> <span style="font-weight:bold;color:#777">%></span></span> for help.
|
1488
989
|
|
1489
|
-
|
1490
|
-
You will see the following items inside
|
990
|
+
%|section "Manifest"
|
991
|
+
You will see the following items inside <span style="background:#eee;color:black"><span style="font-weight:bold;color:#777"><%=</span> <span style="color:#d70;font-weight:bold">$project</span> <span style="font-weight:bold;color:#777">%></span></span>'s installation
|
1491
992
|
directory, whose path you can determine by running this command:
|
1492
993
|
|
1493
|
-
<span style="background:#eee"><span style="font-weight:bold;color:#
|
994
|
+
<span style="background:#eee;color:black"><span style="font-weight:bold;color:#777"><%=</span> <span style="color:#d70;font-weight:bold">$program</span> <span style="font-weight:bold;color:#777">%></span></span> --version
|
1494
995
|
|
1495
996
|
<span style="color:#F00;background-color:#FAA">></span> TODO: list important files your project provides here
|
1496
997
|
|
1497
998
|
* <span style="color:#070"><tt></span>bin/<span style="color:#070"></tt></span>
|
1498
999
|
|
1499
|
-
* <span style="color:#070"><tt></span><span style="background:#eee"><span style="font-weight:bold;color:#
|
1000
|
+
* <span style="color:#070"><tt></span><span style="background:#eee;color:black"><span style="font-weight:bold;color:#777"><%=</span> <span style="color:#d70;font-weight:bold">$program</span> <span style="font-weight:bold;color:#777">%></span></span><span style="color:#070"></tt></span> --- the main <span style="background:#eee;color:black"><span style="font-weight:bold;color:#777"><%=</span> <span style="color:#d70;font-weight:bold">$project</span> <span style="font-weight:bold;color:#777">%></span></span> executable.
|
1500
1001
|
|
1501
1002
|
* <span style="color:#070"><tt></span>lib/<span style="color:#070"></tt></span>
|
1502
1003
|
|
1503
|
-
* <span style="color:#070"><tt></span><span style="background:#eee"><span style="font-weight:bold;color:#
|
1004
|
+
* <span style="color:#070"><tt></span><span style="background:#eee;color:black"><span style="font-weight:bold;color:#777"><%=</span> <span style="color:#d70;font-weight:bold">$program</span> <span style="font-weight:bold;color:#777">%></span></span>.rb<span style="color:#070"></tt></span> --- the main <span style="background:#eee;color:black"><span style="font-weight:bold;color:#777"><%=</span> <span style="color:#d70;font-weight:bold">$project</span> <span style="font-weight:bold;color:#777">%></span></span> library.
|
1504
1005
|
|
1505
|
-
* <span style="color:#070"><tt></span><span style="background:#eee"><span style="font-weight:bold;color:#
|
1006
|
+
* <span style="color:#070"><tt></span><span style="background:#eee;color:black"><span style="font-weight:bold;color:#777"><%=</span> <span style="color:#d70;font-weight:bold">$program</span> <span style="font-weight:bold;color:#777">%></span></span>/<span style="color:#070"></tt></span>
|
1506
1007
|
|
1507
1008
|
<span style="color:#F00;background-color:#FAA">></span> TODO: list sub-libraries your project provides here
|
1508
1009
|
|
@@ -1515,132 +1016,129 @@ require <span style="background-color:#fff0f0;color:#D20"><span style="color:#71
|
|
1515
1016
|
* <span style="color:#070"><tt></span>lang/<span style="color:#070"></tt></span> --- translations of language phrases.
|
1516
1017
|
|
1517
1018
|
* <span style="color:#070"><tt></span>LICENSE<span style="color:#070"></tt></span> --- copyright notice and legal conditions.
|
1518
|
-
|
1519
|
-
<span style="
|
1520
|
-
</pre></p></div>
|
1019
|
+
|
1020
|
+
* <span style="color:#070"><tt></span>CREDITS<span style="color:#070"></tt></span> --- attribution of project contributors.
|
1021
|
+
</pre></ins></p></div>
|
1521
1022
|
</div><div class="paragraph">
|
1522
|
-
<a name="doc-theory.erb"/><div class="nav" id="doc-theory.erb"><a title="
|
1023
|
+
<a name="doc-theory.erb"/><div class="nav" id="doc-theory.erb"><a title="Focus this segment" href="#doc-theory.erb"><img class="icon" alt="∗" src="&icon_nav_here;"/></a> <a title="Focus previous segment" href="#doc-setup.erb"><img class="icon" alt="↑" src="&icon_nav_prev;"/></a> <a title="Focus next segment" href="#doc-usage.erb"><img class="icon" alt="↓" src="&icon_nav_next;"/></a> <a title="Return to listing" href="#rev:doc-theory.erb"><img class="icon" alt="≡" src="&icon_nav_list;"/></a></div>
|
1523
1024
|
<p class="title"><tt>doc/theory.erb</tt></p>
|
1524
|
-
<div class="content"><p><pre class="
|
1025
|
+
<div class="content"><p><ins><pre class="para" lang="rhtml">%|chapter "Theory of operation"
|
1525
1026
|
<span style="color:#F00;background-color:#FAA">></span> TODO: explain how your project does what it does
|
1526
|
-
|
1527
|
-
</pre></p></div>
|
1027
|
+
</pre></ins></p></div>
|
1528
1028
|
</div><div class="paragraph">
|
1529
|
-
<a name="doc-usage.erb"/><div class="nav" id="doc-usage.erb"><a title="
|
1029
|
+
<a name="doc-usage.erb"/><div class="nav" id="doc-usage.erb"><a title="Focus this segment" href="#doc-usage.erb"><img class="icon" alt="∗" src="&icon_nav_here;"/></a> <a title="Focus previous segment" href="#doc-theory.erb"><img class="icon" alt="↑" src="&icon_nav_prev;"/></a> <a title="Focus next segment" href="#doc-history.erb"><img class="icon" alt="↓" src="&icon_nav_next;"/></a> <a title="Return to listing" href="#rev:doc-usage.erb"><img class="icon" alt="≡" src="&icon_nav_list;"/></a></div>
|
1530
1030
|
<p class="title"><tt>doc/usage.erb</tt></p>
|
1531
|
-
<div class="content"><p><pre class="
|
1532
|
-
|
1031
|
+
<div class="content"><p><ins><pre class="para" lang="rhtml">%|chapter "Usage"
|
1032
|
+
%|section "Command-line interface"
|
1533
1033
|
When you run this command:
|
1534
1034
|
|
1535
|
-
<span style="background:#eee"><span style="font-weight:bold;color:#
|
1035
|
+
<span style="background:#eee;color:black"><span style="font-weight:bold;color:#777"><%=</span> <span style="color:#d70;font-weight:bold">$program</span> <span style="font-weight:bold;color:#777">%></span></span> --help
|
1536
1036
|
|
1537
1037
|
You will see this output:
|
1538
1038
|
|
1539
|
-
<span style="color:#070"><pre></span><span style="background:#eee"><span style="font-weight:bold;color:#
|
1039
|
+
<span style="color:#070"><pre></span><span style="background:#eee;color:black"><span style="font-weight:bold;color:#777"><%=</span> verbatim <span style="background-color:#f0fff0;color:#2B2"><span style="color:#161">`</span><span style="">ruby bin/</span><span style="background:#eee;color:black"><span style="font-weight:bold;color:#777">#{</span><span style="color:#d70;font-weight:bold">$program</span><span style="font-weight:bold;color:#777">}</span></span><span style=""> --help</span><span style="color:#161">`</span></span> <span style="font-weight:bold;color:#777">%></span></span><span style="color:#070"></pre></span>
|
1540
1040
|
|
1541
1041
|
<span style="color:#F00;background-color:#FAA">></span> TODO: explain the command-line arguments
|
1542
|
-
<span style="background:#eee"><span style="font-weight:bold;color:#888"><%</span> <span style="color:#080;font-weight:bold">end</span> <span style="font-weight:bold;color:#888">%></span></span>
|
1543
1042
|
|
1544
|
-
|
1043
|
+
%|section "Ruby library interface"
|
1545
1044
|
<span style="color:#F00;background-color:#FAA">></span> TODO: explain how to use your project's Ruby library
|
1546
1045
|
<span style="color:#F00;background-color:#FAA">></span> from inside another Ruby program or library
|
1547
|
-
<span style="background:#eee"><span style="font-weight:bold;color:#888"><%</span> <span style="color:#080;font-weight:bold">end</span> <span style="font-weight:bold;color:#888">%></span></span>
|
1548
1046
|
|
1549
|
-
|
1550
|
-
This tutorial shows how
|
1047
|
+
%|section "Tutorial"
|
1048
|
+
This tutorial shows how <span style="background:#eee;color:black"><span style="font-weight:bold;color:#777"><%=</span> <span style="color:#d70;font-weight:bold">$project</span> <span style="font-weight:bold;color:#777">%></span></span> is used to __________.
|
1551
1049
|
|
1552
1050
|
<span style="color:#F00;background-color:#FAA">></span> TODO: give examples for doing common tasks
|
1553
|
-
<span style="background:#eee"><span style="font-weight:bold;color:#888"><%</span> <span style="color:#080;font-weight:bold">end</span> <span style="font-weight:bold;color:#888">%></span></span>
|
1554
1051
|
|
1555
1052
|
<span style="color:#F00;background-color:#FAA">></span> TODO: explain how to do more (advanced) things
|
1556
|
-
|
1557
|
-
</pre></p></div>
|
1053
|
+
</pre></ins></p></div>
|
1558
1054
|
</div><div class="paragraph">
|
1559
|
-
<a name="doc-history.erb"/><div class="nav" id="doc-history.erb"><a title="
|
1055
|
+
<a name="doc-history.erb"/><div class="nav" id="doc-history.erb"><a title="Focus this segment" href="#doc-history.erb"><img class="icon" alt="∗" src="&icon_nav_here;"/></a> <a title="Focus previous segment" href="#doc-usage.erb"><img class="icon" alt="↑" src="&icon_nav_prev;"/></a> <a title="Focus next segment" href="#Implement-your-project"><img class="icon" alt="↓" src="&icon_nav_next;"/></a> <a title="Return to listing" href="#rev:doc-history.erb"><img class="icon" alt="≡" src="&icon_nav_list;"/></a></div>
|
1560
1056
|
<p class="title"><tt>doc/history.erb</tt></p>
|
1561
|
-
<div class="content"><p><pre class="
|
1057
|
+
<div class="content"><p><ins><pre class="para" lang="rhtml">%|chapter "History"
|
1562
1058
|
<span style="color:#F00;background-color:#FAA">></span> TODO: put a brief history about your project here
|
1563
1059
|
|
1564
|
-
|
1060
|
+
%|history
|
1565
1061
|
<span style="color:#F00;background-color:#FAA">></span> TODO: put release notes for your project
|
1566
1062
|
<span style="color:#F00;background-color:#FAA">></span> here -- newest first, oldest last.
|
1567
1063
|
|
1568
|
-
|
1064
|
+
%|section "Version 0.0.0 (2009-05-04)"
|
1569
1065
|
<span style="color:#F00;background-color:#FAA">></span> TODO: write a short summary of the changes in this release
|
1570
1066
|
|
1571
1067
|
This release changes __________, adds __________, and fixes __________.
|
1572
1068
|
|
1573
|
-
|
1069
|
+
%|paragraph "Thank you"
|
1070
|
+
<span style="color:#F00;background-color:#FAA">></span> TODO: list everyone who contributed to this release
|
1071
|
+
|
1072
|
+
* __________ contributed __________
|
1073
|
+
|
1074
|
+
* __________ suggested __________
|
1075
|
+
|
1076
|
+
* __________ helped to __________
|
1077
|
+
|
1078
|
+
%|paragraph "Incompatible changes"
|
1574
1079
|
<span style="color:#F00;background-color:#FAA">></span> TODO: list all backward-incompatible changes in this release
|
1575
1080
|
|
1576
|
-
* __________ has been __________ to __________
|
1081
|
+
* __________ has been __________ to __________ ---contributor name
|
1577
1082
|
|
1578
|
-
* __________
|
1083
|
+
* __________ ---contributor name
|
1579
1084
|
|
1580
|
-
* __________
|
1581
|
-
<span style="background:#eee"><span style="font-weight:bold;color:#888"><%</span> <span style="color:#080;font-weight:bold">end</span> <span style="font-weight:bold;color:#888">%></span></span>
|
1085
|
+
* __________ ---contributor name
|
1582
1086
|
|
1583
|
-
|
1087
|
+
%|paragraph "New features"
|
1584
1088
|
<span style="color:#F00;background-color:#FAA">></span> TODO: list new features added in this release
|
1585
1089
|
|
1586
|
-
* __________
|
1090
|
+
* __________ ---contributor name
|
1587
1091
|
|
1588
|
-
* __________
|
1092
|
+
* __________ ---contributor name
|
1589
1093
|
|
1590
|
-
* __________
|
1591
|
-
<span style="background:#eee"><span style="font-weight:bold;color:#888"><%</span> <span style="color:#080;font-weight:bold">end</span> <span style="font-weight:bold;color:#888">%></span></span>
|
1094
|
+
* __________ ---contributor name
|
1592
1095
|
|
1593
|
-
|
1096
|
+
%|paragraph "Bug fixes"
|
1594
1097
|
<span style="color:#F00;background-color:#FAA">></span> TODO: describe all bugs that are fixed in this release
|
1595
1098
|
|
1596
|
-
* __________ was __________
|
1099
|
+
* __________ was __________ ---contributor name
|
1597
1100
|
|
1598
|
-
* __________ were __________
|
1101
|
+
* __________ were __________ ---contributor name
|
1599
1102
|
|
1600
|
-
* __________ did __________
|
1601
|
-
<span style="background:#eee"><span style="font-weight:bold;color:#888"><%</span> <span style="color:#080;font-weight:bold">end</span> <span style="font-weight:bold;color:#888">%></span></span>
|
1103
|
+
* __________ did __________ ---contributor name
|
1602
1104
|
|
1603
|
-
|
1105
|
+
%|paragraph "Housekeeping"
|
1604
1106
|
<span style="color:#F00;background-color:#FAA">></span> TODO: list the refactorings, clean ups, and other
|
1605
1107
|
<span style="color:#F00;background-color:#FAA">></span> improvements that were done for this release
|
1606
1108
|
|
1607
|
-
* __________
|
1109
|
+
* __________ ---contributor name
|
1608
1110
|
|
1609
|
-
* __________
|
1111
|
+
* __________ ---contributor name
|
1610
1112
|
|
1611
|
-
* __________
|
1612
|
-
|
1613
|
-
|
1614
|
-
|
1615
|
-
|
1616
|
-
|
1617
|
-
</div></p></div>
|
1618
|
-
</div></p></div>
|
1619
|
-
</div> <div class="section">
|
1620
|
-
<a name="Implement-your-project"/><div class="nav" id="Implement-your-project"><a title="Reverse jump to listing" href="#rev:Implement-your-project">≡</a><a title="Jump to previous segment" href="#doc-history.erb">△</a><a title="Jump to next segment" href="#Goodbye-LOAD_PATH-hello-require">▽</a><a title="Jump to this segment" href="#Implement-your-project">◎</a></div>
|
1113
|
+
* __________ ---contributor name
|
1114
|
+
</pre></ins></p></div>
|
1115
|
+
</div><p> </p></div>
|
1116
|
+
</div><p> </p></div>
|
1117
|
+
</div><div class="section">
|
1118
|
+
<a name="Implement-your-project"/><div class="nav" id="Implement-your-project"><a title="Focus this segment" href="#Implement-your-project"><img class="icon" alt="∗" src="&icon_nav_here;"/></a> <a title="Focus previous segment" href="#doc-history.erb"><img class="icon" alt="↑" src="&icon_nav_prev;"/></a> <a title="Focus next segment" href="#Goodbye-LOAD_PATH-hello-require"><img class="icon" alt="↓" src="&icon_nav_next;"/></a> <a title="Return to listing" href="#rev:Implement-your-project"><img class="icon" alt="≡" src="&icon_nav_list;"/></a></div>
|
1621
1119
|
<h3 class="title">
|
1622
1120
|
3.3.4 Implement your project
|
1623
1121
|
</h3>
|
1624
1122
|
<div class="content"><p>Add the following code to the bottom of <tt>lib/word_count.rb</tt>, the main project library:</p>
|
1625
1123
|
|
1626
|
-
<p><pre class="
|
1627
|
-
<span style="color:#
|
1124
|
+
<p><ins><pre class="para"><span style="color:#080;font-weight:bold">module</span> <span style="color:#B06;font-weight:bold">WordCount</span>
|
1125
|
+
<span style="color:#888"># Returns the number of words in the given input.</span>
|
1628
1126
|
<span style="color:#080;font-weight:bold">def</span> <span style="color:#036;font-weight:bold">WordCount</span>.count input
|
1629
1127
|
input.to_s.split(<span style="background-color:#fff0ff"><span style="color:#404">/</span><span style="color:#04D">\W</span><span style="color:#808">+</span><span style="color:#404">/</span></span>).length
|
1630
1128
|
<span style="color:#080;font-weight:bold">end</span>
|
1631
1129
|
<span style="color:#080;font-weight:bold">end</span>
|
1632
|
-
</pre></p>
|
1130
|
+
</pre></ins></p>
|
1633
1131
|
|
1634
1132
|
<p>Add the following code to the bottom of <tt>bin/word_count</tt>, the main project executable:</p>
|
1635
1133
|
|
1636
|
-
<p><pre class="
|
1134
|
+
<p><ins><pre class="para">input = <span style="color:#038;font-weight:bold">ARGF</span>.read
|
1637
1135
|
total = <span style="color:#036;font-weight:bold">WordCount</span>.count(input)
|
1638
|
-
puts <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">"</span><span style="">There are </span><span style="background:#eee"><span style="font-weight:bold;color:#
|
1639
|
-
</pre></p>
|
1136
|
+
puts <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">"</span><span style="">There are </span><span style="background:#eee;color:black"><span style="font-weight:bold;color:#777">#{</span>total<span style="font-weight:bold;color:#777">}</span></span><span style=""> words in the input.</span><span style="color:#710">"</span></span>
|
1137
|
+
</pre></ins></p>
|
1640
1138
|
|
1641
1139
|
<p>Add the following code to the bottom of <tt>test/word_count.rb</tt>, a unit test for the main project library:</p>
|
1642
1140
|
|
1643
|
-
<p><pre class="
|
1141
|
+
<p><ins><pre class="para">describe <span style="color:#036;font-weight:bold">WordCount</span> <span style="color:#080;font-weight:bold">do</span>
|
1644
1142
|
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>
|
1645
1143
|
<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>)
|
1646
1144
|
<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>)
|
@@ -1668,39 +1166,39 @@ puts <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">
|
|
1668
1166
|
<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>)
|
1669
1167
|
<span style="color:#080;font-weight:bold">end</span>
|
1670
1168
|
<span style="color:#080;font-weight:bold">end</span>
|
1671
|
-
</pre></p>
|
1169
|
+
</pre></ins></p>
|
1672
1170
|
|
1673
|
-
<
|
1674
|
-
<a name="Goodbye-LOAD_PATH-hello-require"/><div class="nav" id="Goodbye-LOAD_PATH-hello-require"><a title="
|
1675
|
-
<p class="title">Goodbye <code class="
|
1676
|
-
<div class="content"><p>Notice that, in the Ruby files that you modified so far, there were no <code class="
|
1171
|
+
<div class="paragraph">
|
1172
|
+
<a name="Goodbye-LOAD_PATH-hello-require"/><div class="nav" id="Goodbye-LOAD_PATH-hello-require"><a title="Focus this segment" href="#Goodbye-LOAD_PATH-hello-require"><img class="icon" alt="∗" src="&icon_nav_here;"/></a> <a title="Focus previous segment" href="#Implement-your-project"><img class="icon" alt="↑" src="&icon_nav_prev;"/></a> <a title="Focus next segment" href="#Test-your-project"><img class="icon" alt="↓" src="&icon_nav_next;"/></a> <a title="Return to listing" href="#rev:Goodbye-LOAD_PATH-hello-require"><img class="icon" alt="≡" src="&icon_nav_list;"/></a></div>
|
1173
|
+
<p class="title">Goodbye <code class="line"><span style="color:#d70;font-weight:bold">$LOAD_PATH</span></code>, hello <code class="line">require()</code></p>
|
1174
|
+
<div class="content"><p>Notice that, in the Ruby files that you modified so far, there were no <code class="line"><span style="color:#d70;font-weight:bold">$LOAD_PATH</span></code> manipulations and no explicit <code class="line">require()</code> statements to pull in the various parts of your project. That is because Inochi does this for you automatically.</p>
|
1677
1175
|
|
1678
|
-
<p>Furthermore, you can always <code class="
|
1176
|
+
<p>Furthermore, you can always <code class="line">require()</code> a sub-library anywhere in your project using its canonical path because Inochi puts your main project libraries on the Ruby load path.</p>
|
1679
1177
|
|
1680
1178
|
<p>For example, if your project has a sub-library, say, <tt>lib/word_count/odf/text.rb</tt> that counts the number of words in an <a href='http://en.wikipedia.org/wiki/OpenDocument'>OpenDocument Text</a> document, then it would be loaded into the main project executable like this:</p>
|
1681
1179
|
|
1682
|
-
<p><pre class="
|
1683
|
-
</pre></p>
|
1180
|
+
<p><ins><pre class="para">require <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">word_count/odf/text</span><span style="color:#710">'</span></span>
|
1181
|
+
</pre></ins></p>
|
1684
1182
|
|
1685
|
-
<p>Regardless of whether a sub-library is used within your project itself or from within an external application, we always <code class="
|
1686
|
-
</div></p></div>
|
1687
|
-
</div
|
1688
|
-
<a name="Test-your-project"/><div class="nav" id="Test-your-project"><a title="
|
1183
|
+
<p>Regardless of whether a sub-library is used within your project itself or from within an external application, we always <code class="line">require()</code> the sub-library using the same canonical path.</p></div>
|
1184
|
+
</div><p></p></div>
|
1185
|
+
</div><div class="section">
|
1186
|
+
<a name="Test-your-project"/><div class="nav" id="Test-your-project"><a title="Focus this segment" href="#Test-your-project"><img class="icon" alt="∗" src="&icon_nav_here;"/></a> <a title="Focus previous segment" href="#Goodbye-LOAD_PATH-hello-require"><img class="icon" alt="↑" src="&icon_nav_prev;"/></a> <a title="Focus next segment" href="#Units-and-tests"><img class="icon" alt="↓" src="&icon_nav_next;"/></a> <a title="Return to listing" href="#rev:Test-your-project"><img class="icon" alt="≡" src="&icon_nav_list;"/></a></div>
|
1689
1187
|
<h3 class="title">
|
1690
1188
|
3.3.5 Test your project
|
1691
1189
|
</h3>
|
1692
|
-
<div class="content"><p>To reduce the amount of code you have to write,
|
1190
|
+
<div class="content"><p>To reduce the amount of code you have to write, Inochi defines the following convention for unit tests.</p>
|
1693
1191
|
|
1694
|
-
<
|
1695
|
-
<a name="Units-and-tests"/><div class="nav" id="Units-and-tests"><a title="
|
1192
|
+
<div class="paragraph">
|
1193
|
+
<a name="Units-and-tests"/><div class="nav" id="Units-and-tests"><a title="Focus this segment" href="#Units-and-tests"><img class="icon" alt="∗" src="&icon_nav_here;"/></a> <a title="Focus previous segment" href="#Test-your-project"><img class="icon" alt="↑" src="&icon_nav_prev;"/></a> <a title="Focus next segment" href="#Test-execution"><img class="icon" alt="↓" src="&icon_nav_next;"/></a> <a title="Return to listing" href="#rev:Units-and-tests"><img class="icon" alt="≡" src="&icon_nav_list;"/></a></div>
|
1696
1194
|
<p class="title">Units and tests</p>
|
1697
1195
|
<div class="content"><p>Every Ruby source file in your project’s <tt>lib/</tt> directory is considered to be a <strong>unit</strong>. Likewise, every Ruby source file in your project’s <tt>test/</tt> is considered to be a <strong>test</strong>.</p>
|
1698
1196
|
|
1699
1197
|
<p>As a result, your project’s <tt>test/</tt> directory structure <em>mirrors</em> the structure of your project’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 corresponding test.</p></div>
|
1700
|
-
</div
|
1701
|
-
<a name="Test-execution"/><div class="nav" id="Test-execution"><a title="
|
1198
|
+
</div><div class="paragraph">
|
1199
|
+
<a name="Test-execution"/><div class="nav" id="Test-execution"><a title="Focus this segment" href="#Test-execution"><img class="icon" alt="∗" src="&icon_nav_here;"/></a> <a title="Focus previous segment" href="#Units-and-tests"><img class="icon" alt="↑" src="&icon_nav_prev;"/></a> <a title="Focus next segment" href="#Helper-libraries"><img class="icon" alt="↓" src="&icon_nav_next;"/></a> <a title="Return to listing" href="#rev:Test-execution"><img class="icon" alt="≡" src="&icon_nav_list;"/></a></div>
|
1702
1200
|
<p class="title">Test execution</p>
|
1703
|
-
<div class="content"><
|
1201
|
+
<div class="content"><pre>rake test</pre><p></p>
|
1704
1202
|
|
1705
1203
|
<p>The above command begins the testing process, during which:</p>
|
1706
1204
|
|
@@ -1710,78 +1208,90 @@ puts <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">
|
|
1710
1208
|
</li>
|
1711
1209
|
|
1712
1210
|
<li>
|
1713
|
-
<p>Before a test is executed, its corresponding unit is automatically loaded into the Ruby environment using <code class="
|
1211
|
+
<p>Before a test is executed, its corresponding unit is automatically loaded into the Ruby environment using <code class="line">require()</code>.</p>
|
1714
1212
|
</li>
|
1715
1213
|
</ul>
|
1716
1214
|
|
1717
|
-
<p>
|
1215
|
+
<p>The details of test execution are left to the integration libraries specified by the <code class="line"><span style="color:#A60">:test_with</span></code> parameter of the <code class="line"><span style="color:#036;font-weight:bold">Inochi</span>.rake()</code> method. Possible values for this parameter are:</p>
|
1718
1216
|
|
1719
1217
|
<ul>
|
1720
|
-
<li>
|
1721
|
-
<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 xUnit TDD, alternative rSpec BDD, and mock-based validation styles.</p>
|
1722
|
-
</li>
|
1218
|
+
<li><tt>bacon</tt> — Integration for the <a href='http://github.com/chneukirchen/bacon'>Bacon library</a>.</li>
|
1723
1219
|
|
1724
|
-
<li>
|
1725
|
-
|
1726
|
-
</li>
|
1220
|
+
<li><tt>context</tt> — Integration for the <a href='http://github.com/jeremymcanally/context'>Context library</a>.</li>
|
1221
|
+
|
1222
|
+
<li><tt>dfect</tt> — Integration for the <a href='http://snk.tuxfamily.org/lib/dfect/'>Dfect library</a>.</li>
|
1223
|
+
|
1224
|
+
<li><tt>matchy</tt> — Integration for the <a href='http://github.com/jeremymcanally/matchy'>Matchy library</a></li>
|
1225
|
+
|
1226
|
+
<li><tt>minitest</tt> — Integration for the <a href='http://blog.zenspider.com/minitest/'>Minitest library</a>.</li>
|
1227
|
+
|
1228
|
+
<li><tt>mocha</tt> — Integration for the <a href='http://mocha.rubyforge.org'>Mocha library</a>.</li>
|
1229
|
+
|
1230
|
+
<li><tt>rspec</tt> — Integration for the <a href='http://rspec.info'>RSpec library</a>.</li>
|
1231
|
+
|
1232
|
+
<li><tt>shoulda</tt> — Integration for the <a href='http://thoughtbot.com/projects/shoulda/'>Shoulda library</a>.</li>
|
1233
|
+
|
1234
|
+
<li><tt>test_spec</tt> — Integration for the <a href='http://chneukirchen.org/repos/testspec/README'>test/spec library</a>.</li>
|
1235
|
+
|
1236
|
+
<li><tt>test_unit</tt> — Integration for the <a href='http://test-unit.rubyforge.org'>Test::Unit library</a>.</li>
|
1727
1237
|
</ul></div>
|
1728
|
-
</div
|
1729
|
-
<a name="Helper-libraries"/><div class="nav" id="Helper-libraries"><a title="
|
1238
|
+
</div><div class="paragraph">
|
1239
|
+
<a name="Helper-libraries"/><div class="nav" id="Helper-libraries"><a title="Focus this segment" href="#Helper-libraries"><img class="icon" alt="∗" src="&icon_nav_here;"/></a> <a title="Focus previous segment" href="#Test-execution"><img class="icon" alt="↑" src="&icon_nav_prev;"/></a> <a title="Focus next segment" href="#Translate-your-project"><img class="icon" alt="↓" src="&icon_nav_next;"/></a> <a title="Return to listing" href="#rev:Helper-libraries"><img class="icon" alt="≡" src="&icon_nav_list;"/></a></div>
|
1730
1240
|
<p class="title">Helper libraries</p>
|
1731
1241
|
<div class="content"><p>Your project’s main directory is added to Ruby’s load path. So if your tests have helper libraries stored in your project’s <tt>test/</tt> directory, you can load them into your tests by adding a “test/” prefix.</p>
|
1732
1242
|
|
1733
1243
|
<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>
|
1734
1244
|
|
1735
|
-
<p><pre class="
|
1736
|
-
</pre></p></div>
|
1737
|
-
</div
|
1738
|
-
</div
|
1739
|
-
<a name="Translate-your-project"/><div class="nav" id="Translate-your-project"><a title="
|
1245
|
+
<p><ins><pre class="para">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>
|
1246
|
+
</pre></ins></p></div>
|
1247
|
+
</div><p> </p></div>
|
1248
|
+
</div><div class="section">
|
1249
|
+
<a name="Translate-your-project"/><div class="nav" id="Translate-your-project"><a title="Focus this segment" href="#Translate-your-project"><img class="icon" alt="∗" src="&icon_nav_here;"/></a> <a title="Focus previous segment" href="#Helper-libraries"><img class="icon" alt="↑" src="&icon_nav_prev;"/></a> <a title="Focus next segment" href="#Language-phrases"><img class="icon" alt="↓" src="&icon_nav_next;"/></a> <a title="Return to listing" href="#rev:Translate-your-project"><img class="icon" alt="≡" src="&icon_nav_list;"/></a></div>
|
1740
1250
|
<h3 class="title">
|
1741
1251
|
3.3.6 Translate your project
|
1742
1252
|
</h3>
|
1743
|
-
<div class="content"><p>Although English is the <em>lingua franca</em> of today, your project’s users may prefer to interact with it in their native language.
|
1253
|
+
<div class="content"><p>Although English is the <em>lingua franca</em> of today, your project’s users may prefer to interact with it in their native language. Inochi makes it easy to translate your project and also makes it easy for users to correct and contribute translations to your project.</p>
|
1744
1254
|
|
1745
|
-
<
|
1746
|
-
<a name="Language-phrases"/><div class="nav" id="Language-phrases"><a title="
|
1255
|
+
<div class="section">
|
1256
|
+
<a name="Language-phrases"/><div class="nav" id="Language-phrases"><a title="Focus this segment" href="#Language-phrases"><img class="icon" alt="∗" src="&icon_nav_here;"/></a> <a title="Focus previous segment" href="#Translate-your-project"><img class="icon" alt="↑" src="&icon_nav_prev;"/></a> <a title="Focus next segment" href="#Parameterizing-language-phrases"><img class="icon" alt="↓" src="&icon_nav_next;"/></a> <a title="Return to listing" href="#rev:Language-phrases"><img class="icon" alt="≡" src="&icon_nav_list;"/></a></div>
|
1747
1257
|
<h4 class="title">
|
1748
1258
|
3.3.6.1 Language phrases
|
1749
1259
|
</h4>
|
1750
|
-
<div class="content"><p
|
1260
|
+
<div class="content"><p>Inochi equips your project module with a <code class="line"><span style="color:#036;font-weight:bold">PHRASES</span></code> constant (see the <code class="line"><span style="color:#036;font-weight:bold">Inochi</span>::<span style="color:#036;font-weight:bold">Phrases</span></code> class) which provides access to translations of language phrases used in your project.</p>
|
1751
1261
|
|
1752
|
-
<p>The <
|
1262
|
+
<p>The <code class="line"><span style="color:#036;font-weight:bold">Inochi</span>::<span style="color:#036;font-weight:bold">Phrases</span><span style="color:#888">#[]</span></code> method translates a given language phrase into the user’s preferred language, which is automatically inferred from their environment, but may be explictly overridden by the user via the <tt>--locale</tt> option of <a class="xref" href="#Run-project-executable" title="Paragraph. "Run project executable"">your project’s main executable</a>:</p>
|
1753
1263
|
|
1754
|
-
<p><pre class="
|
1755
|
-
</pre></p>
|
1264
|
+
<p><ins><pre class="para">your_project::<span style="color:#036;font-weight:bold">PHRASES</span>[<span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">Have a nice day!</span><span style="color:#710">'</span></span>]
|
1265
|
+
</pre></ins></p>
|
1756
1266
|
|
1757
1267
|
<p>If there is no <a class="xref" href="#Translation-files" title="Section 3.3.6.2. "Translation files"">translation file</a> for the user’s preferred language, or it does not define a translation for a particular language phrase, then the language phrase will be used untranslated:</p>
|
1758
1268
|
|
1759
|
-
<p><pre class="
|
1760
|
-
<span style="color:#
|
1761
|
-
</pre></p>
|
1269
|
+
<p><ins><pre class="para">your_project::<span style="color:#036;font-weight:bold">PHRASES</span>[<span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">No translation for this</span><span style="color:#710">'</span></span>]
|
1270
|
+
<span style="color:#888">#=> 'No translation for this'</span>
|
1271
|
+
</pre></ins></p>
|
1762
1272
|
|
1763
|
-
<
|
1764
|
-
<a name="Parameterizing-language-phrases"/><div class="nav" id="Parameterizing-language-phrases"><a title="
|
1273
|
+
<div class="paragraph">
|
1274
|
+
<a name="Parameterizing-language-phrases"/><div class="nav" id="Parameterizing-language-phrases"><a title="Focus this segment" href="#Parameterizing-language-phrases"><img class="icon" alt="∗" src="&icon_nav_here;"/></a> <a title="Focus previous segment" href="#Language-phrases"><img class="icon" alt="↑" src="&icon_nav_prev;"/></a> <a title="Focus next segment" href="#Explicit-translation-into-a-language"><img class="icon" alt="↓" src="&icon_nav_next;"/></a> <a title="Return to listing" href="#rev:Parameterizing-language-phrases"><img class="icon" alt="≡" src="&icon_nav_list;"/></a></div>
|
1765
1275
|
<p class="title">Parameterizing language phrases</p>
|
1766
|
-
<div class="content"><p>Language phrases can be parameterized using <a href='http://en.wikipedia.org/wiki/Printf#printf_format_placeholders'><code class="
|
1276
|
+
<div class="content"><p>Language phrases can be parameterized using <a href='http://en.wikipedia.org/wiki/Printf#printf_format_placeholders'><code class="line">printf</code> format placeholders</a> to ease translation:</p>
|
1767
1277
|
|
1768
|
-
<p><pre class="
|
1278
|
+
<p><ins><pre class="para">your_project::<span style="color:#036;font-weight:bold">PHRASES</span>[<span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">Good afternoon, %s.</span><span style="color:#710">'</span></span>, user_name]
|
1769
1279
|
your_project::<span style="color:#036;font-weight:bold">PHRASES</span>[<span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">You are %d years old.</span><span style="color:#710">'</span></span>, user_age]
|
1770
|
-
</pre></p></div>
|
1771
|
-
</div
|
1772
|
-
<a name="Explicit-translation-into-a-language"/><div class="nav" id="Explicit-translation-into-a-language"><a title="
|
1280
|
+
</pre></ins></p></div>
|
1281
|
+
</div><div class="paragraph">
|
1282
|
+
<a name="Explicit-translation-into-a-language"/><div class="nav" id="Explicit-translation-into-a-language"><a title="Focus this segment" href="#Explicit-translation-into-a-language"><img class="icon" alt="∗" src="&icon_nav_here;"/></a> <a title="Focus previous segment" href="#Parameterizing-language-phrases"><img class="icon" alt="↑" src="&icon_nav_prev;"/></a> <a title="Focus next segment" href="#Translation-files"><img class="icon" alt="↓" src="&icon_nav_next;"/></a> <a title="Return to listing" href="#rev:Explicit-translation-into-a-language"><img class="icon" alt="≡" src="&icon_nav_list;"/></a></div>
|
1773
1283
|
<p class="title">Explicit translation into a language</p>
|
1774
|
-
<div class="content"><p>If a language phrase must be translated into a specific language, regardless of the user’s preference, you can invoke the respective method (whose name is the same as the <a href='http://en.wikipedia.org/wiki/ISO_639'>ISO-639 language code</a> of the language into which you wish to translate) on your <code class="
|
1284
|
+
<div class="content"><p>If a language phrase must be translated into a specific language, regardless of the user’s preference, you can invoke the respective method (whose name is the same as the <a href='http://en.wikipedia.org/wiki/ISO_639'>ISO-639 language code</a> of the language into which you wish to translate) on your <code class="line"><span style="color:#036;font-weight:bold">PHRASES</span></code> object:</p>
|
1775
1285
|
|
1776
|
-
<p><pre class="
|
1286
|
+
<p><ins><pre class="para"><span style="color:#888"># explictly translate into Japanese (ja)</span>
|
1777
1287
|
your_project::<span style="color:#036;font-weight:bold">PHRASES</span>.ja(<span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">Goodbye %s!</span><span style="color:#710">'</span></span>, user_name)
|
1778
1288
|
|
1779
|
-
<span style="color:#
|
1289
|
+
<span style="color:#888"># explictly translate into French (fr)</span>
|
1780
1290
|
your_project::<span style="color:#036;font-weight:bold">PHRASES</span>.fr(<span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">Farewell %s!</span><span style="color:#710">'</span></span>, user_name)
|
1781
|
-
</pre></p></div>
|
1782
|
-
</div
|
1783
|
-
</div
|
1784
|
-
<a name="Translation-files"/><div class="nav" id="Translation-files"><a title="
|
1291
|
+
</pre></ins></p></div>
|
1292
|
+
</div><p> </p></div>
|
1293
|
+
</div><div class="section">
|
1294
|
+
<a name="Translation-files"/><div class="nav" id="Translation-files"><a title="Focus this segment" href="#Translation-files"><img class="icon" alt="∗" src="&icon_nav_here;"/></a> <a title="Focus previous segment" href="#Explicit-translation-into-a-language"><img class="icon" alt="↑" src="&icon_nav_prev;"/></a> <a title="Focus next segment" href="#Extracting-language-phrases"><img class="icon" alt="↓" src="&icon_nav_next;"/></a> <a title="Return to listing" href="#rev:Translation-files"><img class="icon" alt="≡" src="&icon_nav_list;"/></a></div>
|
1785
1295
|
<h4 class="title">
|
1786
1296
|
3.3.6.2 Translation files
|
1787
1297
|
</h4>
|
@@ -1789,7 +1299,7 @@ your_project::<span style="color:#036;font-weight:bold">PHRASES</span>.fr(<span
|
|
1789
1299
|
|
1790
1300
|
<p>For example, suppose that your language phrases are written in English, the <tt>lang/es.yaml</tt> (Spanish) translation file would appear like this:</p>
|
1791
1301
|
|
1792
|
-
<
|
1302
|
+
<pre>#
|
1793
1303
|
# (this is a comment)
|
1794
1304
|
#
|
1795
1305
|
# language phrase : translation
|
@@ -1798,55 +1308,49 @@ Hello %s! : ¡Hola %s!
|
|
1798
1308
|
Money : Dinero
|
1799
1309
|
Ticket : Tarjeta
|
1800
1310
|
See you later %s! : ¡Hasta la vista %s!
|
1801
|
-
"%s: Quickly, please!" : "%s: ¡Rápidamente, por favor!"</pre></p>
|
1311
|
+
"%s: Quickly, please!" : "%s: ¡Rápidamente, por favor!"</pre><p></p>
|
1802
1312
|
|
1803
1313
|
<p>On each line, the original language phrase (as used in your project) appears first, then a single semicolon (:), followed by the translation.</p>
|
1804
1314
|
|
1805
1315
|
<p>Also, notice that if a language phrase contains a semicolon, then the entire phrase must be enclosed in quotation marks. The same rule applies to its corresponding translation.</p></div>
|
1806
|
-
</div
|
1807
|
-
<a name="Extracting-language-phrases"/><div class="nav" id="Extracting-language-phrases"><a title="
|
1316
|
+
</div><div class="section">
|
1317
|
+
<a name="Extracting-language-phrases"/><div class="nav" id="Extracting-language-phrases"><a title="Focus this segment" href="#Extracting-language-phrases"><img class="icon" alt="∗" src="&icon_nav_here;"/></a> <a title="Focus previous segment" href="#Translation-files"><img class="icon" alt="↑" src="&icon_nav_prev;"/></a> <a title="Focus next segment" href="#Dynamic-analysis"><img class="icon" alt="↓" src="&icon_nav_next;"/></a> <a title="Return to listing" href="#rev:Extracting-language-phrases"><img class="icon" alt="≡" src="&icon_nav_list;"/></a></div>
|
1808
1318
|
<h4 class="title">
|
1809
1319
|
3.3.6.3 Extracting language phrases
|
1810
1320
|
</h4>
|
1811
|
-
<div class="content"><
|
1812
|
-
(in /tmp/
|
1813
|
-
|
1814
|
-
|
1815
|
-
|
1816
|
-
Finished in 0.001141 seconds.
|
1817
|
-
|
1818
|
-
1 tests, 25 assertions, 0 failures, 0 errors, 0 skips
|
1819
|
-
Extracted 0 language phrases into "lang/phrases.yaml"
|
1820
|
-
</pre></p>
|
1321
|
+
<div class="content"><pre># rake lang:dump
|
1322
|
+
(in /tmp/rake20090504-12012-13p4oou-0/word_count)
|
1323
|
+
Inochi establishment tests passed!
|
1324
|
+
Extracted 0 language phrases into "/tmp/rake20090504-12012-13p4oou-0/word_count/lang/phrases.yaml"
|
1325
|
+
</pre><p></p>
|
1821
1326
|
|
1822
1327
|
<p>The above command exercises your project’s code and extracts all <em>utilized</em> language phrases into the <tt>lang/phrases.yaml</tt> file. Continue reading to learn how this is accomplished.</p>
|
1823
1328
|
|
1824
|
-
<
|
1825
|
-
<a name="Dynamic-analysis"/><div class="nav" id="Dynamic-analysis"><a title="
|
1329
|
+
<div class="paragraph">
|
1330
|
+
<a name="Dynamic-analysis"/><div class="nav" id="Dynamic-analysis"><a title="Focus this segment" href="#Dynamic-analysis"><img class="icon" alt="∗" src="&icon_nav_here;"/></a> <a title="Focus previous segment" href="#Extracting-language-phrases"><img class="icon" alt="↑" src="&icon_nav_prev;"/></a> <a title="Focus next segment" href="#Static-analysis"><img class="icon" alt="↓" src="&icon_nav_next;"/></a> <a title="Return to listing" href="#rev:Dynamic-analysis"><img class="icon" alt="≡" src="&icon_nav_list;"/></a></div>
|
1826
1331
|
<p class="title">Dynamic analysis</p>
|
1827
1332
|
<div class="content"><p>Because Ruby is a dynamically interpreted language, the easiest way to extract language phrases is to evaluate the code that defines them and keep track of which phrases are defined.</p>
|
1828
1333
|
|
1829
|
-
<p>But how can
|
1334
|
+
<p>But how can Inochi exercise all Ruby code in your project? The answer is through <em>unit tests</em>. Because unit tests already exercise your project’s code, Inochi can use them to reach and extract all language phrases from your project.</p>
|
1830
1335
|
|
1831
|
-
<p>However, note that if your unit tests <em>do not</em> exercise a part of your project that defines language phrases, then those phrases <em>will not</em> be extracted by
|
1336
|
+
<p>However, note that if your unit tests <em>do not</em> exercise a part of your project that defines language phrases, then those phrases <em>will not</em> be extracted by Inochi.</p>
|
1832
1337
|
|
1833
1338
|
<p>This gives you extra motivation to improve the coverage of your test suite—at least to the point where all code that defines language phrases is covered.</p></div>
|
1834
|
-
</div
|
1835
|
-
<a name="Static-analysis"/><div class="nav" id="Static-analysis"><a title="
|
1339
|
+
</div><div class="paragraph">
|
1340
|
+
<a name="Static-analysis"/><div class="nav" id="Static-analysis"><a title="Focus this segment" href="#Static-analysis"><img class="icon" alt="∗" src="&icon_nav_here;"/></a> <a title="Focus previous segment" href="#Dynamic-analysis"><img class="icon" alt="↑" src="&icon_nav_prev;"/></a> <a title="Focus next segment" href="#Translating-language-phrases"><img class="icon" alt="↓" src="&icon_nav_next;"/></a> <a title="Return to listing" href="#rev:Static-analysis"><img class="icon" alt="≡" src="&icon_nav_list;"/></a></div>
|
1836
1341
|
<p class="title">Static analysis</p>
|
1837
1342
|
<div class="content"><p>In a future release, I plan to extract language phrases through static analysis of Ruby code. This approach will supplement the current practice of reaching language phrases through unit tests.</p>
|
1838
1343
|
|
1839
1344
|
<p>Patches are welcome! :-)</p></div>
|
1840
|
-
</div
|
1841
|
-
</div
|
1842
|
-
<a name="Translating-language-phrases"/><div class="nav" id="Translating-language-phrases"><a title="
|
1345
|
+
</div><p> </p></div>
|
1346
|
+
</div><div class="section">
|
1347
|
+
<a name="Translating-language-phrases"/><div class="nav" id="Translating-language-phrases"><a title="Focus this segment" href="#Translating-language-phrases"><img class="icon" alt="∗" src="&icon_nav_here;"/></a> <a title="Focus previous segment" href="#Static-analysis"><img class="icon" alt="↑" src="&icon_nav_prev;"/></a> <a title="Focus next segment" href="#Publish-your-project"><img class="icon" alt="↓" src="&icon_nav_next;"/></a> <a title="Return to listing" href="#rev:Translating-language-phrases"><img class="icon" alt="≡" src="&icon_nav_list;"/></a></div>
|
1843
1348
|
<h4 class="title">
|
1844
1349
|
3.3.6.4 Translating language phrases
|
1845
1350
|
</h4>
|
1846
|
-
<div class="content"><p>After you have extracted all language phrases from your project (either manually or via <a class="xref" href="#Extracting-language-phrases"
|
1351
|
+
<div class="content"><p>After you have extracted all language phrases from your project (either manually or via <a class="xref" href="#Extracting-language-phrases" title="Section 3.3.6.3">Extracting language phrases</a>) into the <tt>lang/phrases.yaml</tt> file, Inochi can automatically translate them into various languages using the <a href='http://babelfish.yahoo.com'>Yahoo! BabelFish translation service</a>:</p>
|
1847
1352
|
|
1848
|
-
<
|
1849
|
-
/usr/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake/gempackagetask.rb:13:Warning: Gem::manage_gems is deprecated and will be removed on or after March 2009.
|
1353
|
+
<pre># rake lang:conv from=LANGUAGE_CODE
|
1850
1354
|
rake aborted!
|
1851
1355
|
The "from" parameter must be specified as follows:
|
1852
1356
|
rake lang:conv from=it # from Italian
|
@@ -1864,46 +1368,52 @@ The "from" parameter must be specified as follows:
|
|
1864
1368
|
rake lang:conv from=en # from English
|
1865
1369
|
|
1866
1370
|
(See full trace by running task with --trace)
|
1867
|
-
(in /tmp/
|
1868
|
-
</pre></p>
|
1371
|
+
(in /tmp/rake20090504-12012-13p4oou-0/word_count)
|
1372
|
+
</pre><p></p>
|
1869
1373
|
|
1870
|
-
<p>Notice that you must specify the language in which your phrases are written, via the <tt>from=</tt> parameter.
|
1871
|
-
</div
|
1872
|
-
</div
|
1873
|
-
<a name="Publish-your-project"/><div class="nav" id="Publish-your-project"><a title="
|
1374
|
+
<p>Notice that you must specify the language in which your phrases are written, via the <tt>from=</tt> parameter. Inochi cannot determine this automatically.</p></div>
|
1375
|
+
</div><p> </p></div>
|
1376
|
+
</div><div class="section">
|
1377
|
+
<a name="Publish-your-project"/><div class="nav" id="Publish-your-project"><a title="Focus this segment" href="#Publish-your-project"><img class="icon" alt="∗" src="&icon_nav_here;"/></a> <a title="Focus previous segment" href="#Translating-language-phrases"><img class="icon" alt="↑" src="&icon_nav_prev;"/></a> <a title="Focus next segment" href="#Build-a-RubyGem"><img class="icon" alt="↓" src="&icon_nav_next;"/></a> <a title="Return to listing" href="#rev:Publish-your-project"><img class="icon" alt="≡" src="&icon_nav_list;"/></a></div>
|
1874
1378
|
<h3 class="title">
|
1875
1379
|
3.3.7 Publish your project
|
1876
1380
|
</h3>
|
1877
|
-
<div class="content"><
|
1381
|
+
<div class="content"><pre># rake pub</pre><p></p>
|
1878
1382
|
|
1879
1383
|
<p>The above command performs all automated steps described in the following sections.</p>
|
1880
1384
|
|
1881
|
-
<
|
1882
|
-
<a name="Build-a-RubyGem"/><div class="nav" id="Build-a-RubyGem"><a title="
|
1385
|
+
<div class="section">
|
1386
|
+
<a name="Build-a-RubyGem"/><div class="nav" id="Build-a-RubyGem"><a title="Focus this segment" href="#Build-a-RubyGem"><img class="icon" alt="∗" src="&icon_nav_here;"/></a> <a title="Focus previous segment" href="#Publish-your-project"><img class="icon" alt="↑" src="&icon_nav_prev;"/></a> <a title="Focus next segment" href="#Publish-a-RubyGem"><img class="icon" alt="↓" src="&icon_nav_next;"/></a> <a title="Return to listing" href="#rev:Build-a-RubyGem"><img class="icon" alt="≡" src="&icon_nav_list;"/></a></div>
|
1883
1387
|
<h4 class="title">
|
1884
1388
|
3.3.7.1 Build a RubyGem
|
1885
1389
|
</h4>
|
1886
1390
|
<div class="content"><p>Build a RubyGem by running:</p>
|
1887
1391
|
|
1888
|
-
<
|
1889
|
-
(in /tmp/
|
1890
|
-
(
|
1891
|
-
|
1892
|
-
|
1893
|
-
.
|
1894
|
-
|
1895
|
-
|
1896
|
-
|
1392
|
+
<pre># rake gem
|
1393
|
+
(in /tmp/rake20090504-12012-13p4oou-0/word_count)
|
1394
|
+
Parsing sources with 2 thread(s)...
|
1395
|
+
33% [ 1/ 3] LICENSE
|
1396
|
+
66% [ 2/ 3] CREDITS
|
1397
|
+
100% [ 3/ 3] lib/word_count.rb
|
1398
|
+
|
1399
|
+
|
1400
|
+
Files: 3
|
1401
|
+
Classes: 0
|
1402
|
+
Modules: 0
|
1403
|
+
Methods: 0
|
1404
|
+
Elapsed: 0.2s
|
1405
|
+
(in /tmp/rake20090504-12012-13p4oou-0/word_count)
|
1406
|
+
Inochi establishment tests passed!
|
1897
1407
|
Successfully built RubyGem
|
1898
1408
|
Name: word_count
|
1899
1409
|
Version: 0.0.0
|
1900
1410
|
File: word_count-0.0.0.gem
|
1901
|
-
</pre></p>
|
1411
|
+
</pre><p></p>
|
1902
1412
|
|
1903
1413
|
<p>See the RubyGem contents:</p>
|
1904
1414
|
|
1905
|
-
<
|
1906
|
-
<pre class="
|
1415
|
+
<pre># gem spec pkg/*.gem
|
1416
|
+
<ins><pre class="para" lang="yaml"><span style="color:#f8f;background:#505"><span style="color:#f4f">---</span></span> <span style="color:#339;font-weight:bold">!ruby/object</span>:<span style="color:#B06;font-weight:bold">Gem::Specification</span>
|
1907
1417
|
<span style="color:#808">name</span>: <span style="background-color:#fff0f0;color:#D20">word_count</span>
|
1908
1418
|
<span style="color:#808">version</span>: <span style="color:#339;font-weight:bold">!ruby/object</span>:<span style="color:#B06;font-weight:bold">Gem::Version</span>
|
1909
1419
|
<span style="color:#808">version</span>: <span style="background-color:#fff0f0;color:#D20">0.0.0</span>
|
@@ -1914,9 +1424,19 @@ Finished in 0.001130 seconds.
|
|
1914
1424
|
<span style="color:#808">bindir</span>: <span style="background-color:#fff0f0;color:#D20">bin</span>
|
1915
1425
|
<span style="color:#808">cert_chain</span>: <span style="background-color:#fff0f0;color:#D20">[]</span>
|
1916
1426
|
|
1917
|
-
<span style="color:#808">date</span>: <span style="background-color:#fff0f0;color:#D20">2009-
|
1427
|
+
<span style="color:#808">date</span>: <span style="background-color:#fff0f0;color:#D20">2009-05-04 00:00:00 -07:00</span>
|
1918
1428
|
<span style="color:#808">default_executable</span>:
|
1919
1429
|
<span style="color:#808">dependencies</span>:
|
1430
|
+
- <span style="color:#339;font-weight:bold">!ruby/object</span>:<span style="color:#B06;font-weight:bold">Gem::Dependency</span>
|
1431
|
+
<span style="color:#808">name</span>: <span style="background-color:#fff0f0;color:#D20">inochi</span>
|
1432
|
+
<span style="color:#808">type</span>: <span style="background-color:#fff0f0;color:#D20">:development</span>
|
1433
|
+
<span style="color:#808">version_requirement</span>:
|
1434
|
+
<span style="color:#808">version_requirements</span>: <span style="color:#339;font-weight:bold">!ruby/object</span>:<span style="color:#B06;font-weight:bold">Gem::Requirement</span>
|
1435
|
+
<span style="color:#808">requirements</span>:
|
1436
|
+
- <span style="background-color:#fff0f0;color:#D20">- ~></span>
|
1437
|
+
- <span style="color:#339;font-weight:bold">!ruby/object</span>:<span style="color:#B06;font-weight:bold">Gem::Version</span>
|
1438
|
+
<span style="color:#808">version</span>: <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">"</span><span style="">1</span><span style="color:#710">"</span></span>
|
1439
|
+
<span style="color:#808">version</span>:
|
1920
1440
|
- <span style="color:#339;font-weight:bold">!ruby/object</span>:<span style="color:#B06;font-weight:bold">Gem::Dependency</span>
|
1921
1441
|
<span style="color:#808">name</span>: <span style="background-color:#fff0f0;color:#D20">inochi</span>
|
1922
1442
|
<span style="color:#808">type</span>: <span style="background-color:#fff0f0;color:#D20">:runtime</span>
|
@@ -1925,9 +1445,9 @@ Finished in 0.001130 seconds.
|
|
1925
1445
|
<span style="color:#808">requirements</span>:
|
1926
1446
|
- <span style="background-color:#fff0f0;color:#D20">- ~></span>
|
1927
1447
|
- <span style="color:#339;font-weight:bold">!ruby/object</span>:<span style="color:#B06;font-weight:bold">Gem::Version</span>
|
1928
|
-
<span style="color:#808">version</span>: <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">"</span><span style="">
|
1448
|
+
<span style="color:#808">version</span>: <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">"</span><span style="">1</span><span style="color:#710">"</span></span>
|
1929
1449
|
<span style="color:#808">version</span>:
|
1930
|
-
<span style="color:#808">description</span>: <span style="background-color:#fff0f0;color:#D20"
|
1450
|
+
<span style="color:#808">description</span>: <span style="background-color:#fff0f0;color:#D20">put a single line description of your project here</span>
|
1931
1451
|
<span style="color:#808">email</span>: <span style="background-color:#fff0f0;color:#D20">your@email.here</span>
|
1932
1452
|
<span style="color:#808">executables</span>:
|
1933
1453
|
- <span style="background-color:#fff0f0;color:#D20">word_count</span>
|
@@ -1936,35 +1456,42 @@ Finished in 0.001130 seconds.
|
|
1936
1456
|
<span style="color:#808">extra_rdoc_files</span>: <span style="background-color:#fff0f0;color:#D20">[]</span>
|
1937
1457
|
|
1938
1458
|
<span style="color:#808">files</span>:
|
1939
|
-
- <span style="background-color:#fff0f0;color:#D20">lib</span>
|
1940
1459
|
- <span style="background-color:#fff0f0;color:#D20">lib/word_count.rb</span>
|
1941
|
-
- <span style="background-color:#fff0f0;color:#D20">test</span>
|
1942
1460
|
- <span style="background-color:#fff0f0;color:#D20">test/word_count.rb</span>
|
1943
|
-
- <span style="background-color:#fff0f0;color:#D20">bin</span>
|
1944
1461
|
- <span style="background-color:#fff0f0;color:#D20">bin/word_count</span>
|
1945
|
-
- <span style="background-color:#fff0f0;color:#D20">Rakefile</span>
|
1946
1462
|
- <span style="background-color:#fff0f0;color:#D20">LICENSE</span>
|
1947
|
-
- <span style="background-color:#fff0f0;color:#D20">
|
1463
|
+
- <span style="background-color:#fff0f0;color:#D20">rakefile</span>
|
1464
|
+
- <span style="background-color:#fff0f0;color:#D20">CREDITS</span>
|
1948
1465
|
- <span style="background-color:#fff0f0;color:#D20">doc/usage.erb</span>
|
1949
1466
|
- <span style="background-color:#fff0f0;color:#D20">doc/index.erb</span>
|
1950
1467
|
- <span style="background-color:#fff0f0;color:#D20">doc/history.erb</span>
|
1951
1468
|
- <span style="background-color:#fff0f0;color:#D20">doc/intro.erb</span>
|
1952
1469
|
- <span style="background-color:#fff0f0;color:#D20">doc/index.xhtml</span>
|
1953
1470
|
- <span style="background-color:#fff0f0;color:#D20">doc/setup.erb</span>
|
1954
|
-
- <span style="background-color:#fff0f0;color:#D20">doc/api</span>
|
1471
|
+
- <span style="background-color:#fff0f0;color:#D20">doc/api/i/tree_bg.png</span>
|
1472
|
+
- <span style="background-color:#fff0f0;color:#D20">doc/api/i/results_bg.png</span>
|
1473
|
+
- <span style="background-color:#fff0f0;color:#D20">doc/api/i/arrows.png</span>
|
1955
1474
|
- <span style="background-color:#fff0f0;color:#D20">doc/api/index.html</span>
|
1956
|
-
- <span style="background-color:#fff0f0;color:#D20">doc/api/
|
1957
|
-
- <span style="background-color:#fff0f0;color:#D20">doc/api/
|
1958
|
-
- <span style="background-color:#fff0f0;color:#D20">doc/api/
|
1959
|
-
- <span style="background-color:#fff0f0;color:#D20">doc/api/
|
1960
|
-
- <span style="background-color:#fff0f0;color:#D20">doc/api/
|
1961
|
-
- <span style="background-color:#fff0f0;color:#D20">doc/api/
|
1962
|
-
- <span style="background-color:#fff0f0;color:#D20">doc/api/
|
1475
|
+
- <span style="background-color:#fff0f0;color:#D20">doc/api/panel/index.html</span>
|
1476
|
+
- <span style="background-color:#fff0f0;color:#D20">doc/api/panel/search_index.js</span>
|
1477
|
+
- <span style="background-color:#fff0f0;color:#D20">doc/api/panel/tree.js</span>
|
1478
|
+
- <span style="background-color:#fff0f0;color:#D20">doc/api/css/panel.css</span>
|
1479
|
+
- <span style="background-color:#fff0f0;color:#D20">doc/api/css/reset.css</span>
|
1480
|
+
- <span style="background-color:#fff0f0;color:#D20">doc/api/css/main.css</span>
|
1481
|
+
- <span style="background-color:#fff0f0;color:#D20">doc/api/files/LICENSE.html</span>
|
1482
|
+
- <span style="background-color:#fff0f0;color:#D20">doc/api/files/lib/word_count_rb.html</span>
|
1483
|
+
- <span style="background-color:#fff0f0;color:#D20">doc/api/files/CREDITS.html</span>
|
1484
|
+
- <span style="background-color:#fff0f0;color:#D20">doc/api/created.rid</span>
|
1485
|
+
- <span style="background-color:#fff0f0;color:#D20">doc/api/js/main.js</span>
|
1486
|
+
- <span style="background-color:#fff0f0;color:#D20">doc/api/js/searchdoc.js</span>
|
1487
|
+
- <span style="background-color:#fff0f0;color:#D20">doc/api/js/jquery-1.3.2.min.js</span>
|
1488
|
+
- <span style="background-color:#fff0f0;color:#D20">doc/api/js/jquery-effect.js</span>
|
1963
1489
|
- <span style="background-color:#fff0f0;color:#D20">doc/theory.erb</span>
|
1964
|
-
- <span style="background-color:#fff0f0;color:#D20">lang</span>
|
1965
1490
|
- <span style="background-color:#fff0f0;color:#D20">lang/phrases.yaml</span>
|
1966
1491
|
<span style="color:#808">has_rdoc</span>: <span style="background-color:#fff0f0;color:#D20">true</span>
|
1967
1492
|
<span style="color:#808">homepage</span>: <span style="background-color:#fff0f0;color:#D20">http://word_count.rubyforge.org</span>
|
1493
|
+
<span style="color:#808">licenses</span>: <span style="background-color:#fff0f0;color:#D20">[]</span>
|
1494
|
+
|
1968
1495
|
<span style="color:#808">post_install_message</span>:
|
1969
1496
|
<span style="color:#808">rdoc_options</span>: <span style="background-color:#fff0f0;color:#D20">[]</span>
|
1970
1497
|
|
@@ -1985,60 +1512,60 @@ Finished in 0.001130 seconds.
|
|
1985
1512
|
<span style="color:#808">requirements</span>: <span style="background-color:#fff0f0;color:#D20">[]</span>
|
1986
1513
|
|
1987
1514
|
<span style="color:#808">rubyforge_project</span>: <span style="background-color:#fff0f0;color:#D20">word_count</span>
|
1988
|
-
<span style="color:#808">rubygems_version</span>: <span style="background-color:#fff0f0;color:#D20">1.3.
|
1515
|
+
<span style="color:#808">rubygems_version</span>: <span style="background-color:#fff0f0;color:#D20">1.3.2</span>
|
1989
1516
|
<span style="color:#808">signing_key</span>:
|
1990
|
-
<span style="color:#808">specification_version</span>: <span style="background-color:#fff0f0;color:#D20">
|
1991
|
-
<span style="color:#808">summary</span>: <span style="background-color:#fff0f0;color:#D20"
|
1992
|
-
<span style="color:#808">test_files</span>: <span style="background-color:#fff0f0;color:#D20">[]</span></pre></pre></p></div>
|
1993
|
-
</div
|
1994
|
-
<a name="Publish-a-RubyGem"/><div class="nav" id="Publish-a-RubyGem"><a title="
|
1517
|
+
<span style="color:#808">specification_version</span>: <span style="background-color:#fff0f0;color:#D20">3</span>
|
1518
|
+
<span style="color:#808">summary</span>: <span style="background-color:#fff0f0;color:#D20">put a single line description of your project here</span>
|
1519
|
+
<span style="color:#808">test_files</span>: <span style="background-color:#fff0f0;color:#D20">[]</span></pre></ins></pre><p></p></div>
|
1520
|
+
</div><div class="section">
|
1521
|
+
<a name="Publish-a-RubyGem"/><div class="nav" id="Publish-a-RubyGem"><a title="Focus this segment" href="#Publish-a-RubyGem"><img class="icon" alt="∗" src="&icon_nav_here;"/></a> <a title="Focus previous segment" href="#Build-a-RubyGem"><img class="icon" alt="↑" src="&icon_nav_prev;"/></a> <a title="Focus next segment" href="#Announce-a-release"><img class="icon" alt="↓" src="&icon_nav_next;"/></a> <a title="Return to listing" href="#rev:Publish-a-RubyGem"><img class="icon" alt="≡" src="&icon_nav_list;"/></a></div>
|
1995
1522
|
<h4 class="title">
|
1996
1523
|
3.3.7.2 Publish a RubyGem
|
1997
1524
|
</h4>
|
1998
|
-
<div class="content"><p>You must first register your project on <a href='http://rubyforge.org'>RubyForge</a> before you can publish a RubyGem. If your RubyForge project name is different from your actual project name, then you should pass the <code class="
|
1525
|
+
<div class="content"><p>You must first register your project on <a href='http://rubyforge.org'>RubyForge</a> before you can publish a RubyGem. If your RubyForge project name is different from your actual project name, then you should pass the <code class="line"><span style="color:#A60">:rubyforge_project</span></code> and <code class="line"><span style="color:#A60">:rubyforge_section</span></code> options to the <code class="line"><span style="color:#036;font-weight:bold">Inochi</span>.rake()</code> method.</p>
|
1999
1526
|
|
2000
1527
|
<p>Publish a RubyGem by running:</p>
|
2001
1528
|
|
2002
|
-
<
|
2003
|
-
</div
|
2004
|
-
<a name="Announce-a-release"/><div class="nav" id="Announce-a-release"><a title="
|
1529
|
+
<pre># rake pub:gem</pre><p></p></div>
|
1530
|
+
</div><div class="section">
|
1531
|
+
<a name="Announce-a-release"/><div class="nav" id="Announce-a-release"><a title="Focus this segment" href="#Announce-a-release"><img class="icon" alt="∗" src="&icon_nav_here;"/></a> <a title="Focus previous segment" href="#Publish-a-RubyGem"><img class="icon" alt="↑" src="&icon_nav_prev;"/></a> <a title="Focus next segment" href="#Login-information"><img class="icon" alt="↓" src="&icon_nav_next;"/></a> <a title="Return to listing" href="#rev:Announce-a-release"><img class="icon" alt="≡" src="&icon_nav_list;"/></a></div>
|
2005
1532
|
<h4 class="title">
|
2006
1533
|
3.3.7.3 Announce a release
|
2007
1534
|
</h4>
|
2008
|
-
<div class="content"><p>You must first provide your <a class="xref" href="#Login-information">
|
1535
|
+
<div class="content"><p>You must first provide your <a class="xref" href="#Login-information" title="Paragraph">Login information</a> to Inochi. If you do not want to do this, then see <a class="xref" href="#Manual-release-announcement" title="Section 3.3.7.3.1">Manual release announcement</a>.</p>
|
2009
1536
|
|
2010
1537
|
<p>Announce a release by running:</p>
|
2011
1538
|
|
2012
|
-
<
|
1539
|
+
<pre># rake pub:ann</pre><p></p>
|
2013
1540
|
|
2014
|
-
<
|
2015
|
-
<a name="Login-information"/><div class="nav" id="Login-information"><a title="
|
1541
|
+
<div class="paragraph">
|
1542
|
+
<a name="Login-information"/><div class="nav" id="Login-information"><a title="Focus this segment" href="#Login-information"><img class="icon" alt="∗" src="&icon_nav_here;"/></a> <a title="Focus previous segment" href="#Announce-a-release"><img class="icon" alt="↑" src="&icon_nav_prev;"/></a> <a title="Focus next segment" href="#Manual-release-announcement"><img class="icon" alt="↓" src="&icon_nav_next;"/></a> <a title="Return to listing" href="#rev:Login-information"><img class="icon" alt="≡" src="&icon_nav_list;"/></a></div>
|
2016
1543
|
<p class="title">Login information</p>
|
2017
|
-
<div class="content"><p>In order to automate the announcement of releases,
|
1544
|
+
<div class="content"><p>In order to automate the announcement of releases, Inochi needs to know your login information for the <a href='http://raa.ruby-lang.org'>RAA (Ruby Application Archive)</a> and <a href='http://www.ruby-forum.com/forum/4'>RubyForum</a>, which serves as a gateway to the <a href='http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/'>ruby-talk mailing list</a>.</p>
|
2018
1545
|
|
2019
|
-
<p>This information is expected to be stored in a <tt>~/.config/inochi/logins.yaml</tt> file (this location can be overridden by passing the <code class="
|
1546
|
+
<p>This information is expected to be stored in a <tt>~/.config/inochi/logins.yaml</tt> file (this location can be overridden by passing the <code class="line"><span style="color:#A60">:logins_file</span></code> option to the <code class="line"><span style="color:#036;font-weight:bold">Inochi</span>.rake()</code> method), where <tt>~</tt> denotes the path to your home directory. This file is a <a href='http://yaml.kwiki.org/?YamlInFiveMinutes'>YAML document</a> containing the following parameters:</p>
|
2020
1547
|
|
2021
|
-
<p><pre class="
|
1548
|
+
<p><ins><pre class="para" lang="yaml"><span style="color:#F00;background-color:#FAA">www.ruby-forum.com</span>:
|
2022
1549
|
<span style="color:#808">user</span>: <span style="background-color:#fff0f0;color:#D20">YOUR_USERNAME_HERE</span>
|
2023
1550
|
<span style="color:#808">pass</span>: <span style="background-color:#fff0f0;color:#D20">YOUR_PASSWORD_HERE</span>
|
2024
1551
|
|
2025
1552
|
<span style="color:#F00;background-color:#FAA">raa.ruby-lang.org</span>:
|
2026
1553
|
<span style="color:#808">pass</span>: <span style="background-color:#fff0f0;color:#D20">YOUR_PASSWORD_HERE</span>
|
2027
|
-
</pre></p>
|
1554
|
+
</pre></ins></p>
|
2028
1555
|
|
2029
1556
|
<p>For better security, you should ensure that this file is only readable and writable by you and is not accessible by anyone else. In a UNIX environment, this can be accomplished by running the following command:</p>
|
2030
1557
|
|
2031
1558
|
<pre># chmod 0600 ~/.config/inochi/logins.yaml</pre></div>
|
2032
|
-
</div
|
2033
|
-
<a name="Manual-release-announcement"/><div class="nav" id="Manual-release-announcement"><a title="
|
1559
|
+
</div><div class="section">
|
1560
|
+
<a name="Manual-release-announcement"/><div class="nav" id="Manual-release-announcement"><a title="Focus this segment" href="#Manual-release-announcement"><img class="icon" alt="∗" src="&icon_nav_here;"/></a> <a title="Focus previous segment" href="#Login-information"><img class="icon" alt="↑" src="&icon_nav_prev;"/></a> <a title="Focus next segment" href="#Publish-the-documentation"><img class="icon" alt="↓" src="&icon_nav_next;"/></a> <a title="Return to listing" href="#rev:Manual-release-announcement"><img class="icon" alt="≡" src="&icon_nav_list;"/></a></div>
|
2034
1561
|
<h5 class="title">
|
2035
1562
|
3.3.7.3.1 Manual release announcement
|
2036
1563
|
</h5>
|
2037
1564
|
<div class="content"><p>Build release announcements by running:</p>
|
2038
1565
|
|
2039
|
-
<
|
2040
|
-
(in /tmp/
|
2041
|
-
</pre></p>
|
1566
|
+
<pre># rake ann
|
1567
|
+
(in /tmp/rake20090504-12012-13p4oou-0/word_count)
|
1568
|
+
</pre><p></p>
|
2042
1569
|
|
2043
1570
|
<p>This produces the following files in your project directory:</p>
|
2044
1571
|
|
@@ -2051,36 +1578,150 @@ Finished in 0.001130 seconds.
|
|
2051
1578
|
</ul>
|
2052
1579
|
|
2053
1580
|
<p>Now you can manually announce your release using these files.</p></div>
|
2054
|
-
</div
|
2055
|
-
</div
|
2056
|
-
<a name="Publish-the-documentation"/><div class="nav" id="Publish-the-documentation"><a title="
|
1581
|
+
</div><p> </p></div>
|
1582
|
+
</div><div class="section">
|
1583
|
+
<a name="Publish-the-documentation"/><div class="nav" id="Publish-the-documentation"><a title="Focus this segment" href="#Publish-the-documentation"><img class="icon" alt="∗" src="&icon_nav_here;"/></a> <a title="Focus previous segment" href="#Manual-release-announcement"><img class="icon" alt="↑" src="&icon_nav_prev;"/></a> <a title="Focus next segment" href="#History"><img class="icon" alt="↓" src="&icon_nav_next;"/></a> <a title="Return to listing" href="#rev:Publish-the-documentation"><img class="icon" alt="≡" src="&icon_nav_list;"/></a></div>
|
2057
1584
|
<h4 class="title">
|
2058
1585
|
3.3.7.4 Publish the documentation
|
2059
1586
|
</h4>
|
2060
1587
|
<div class="content"><p>Publish the user manual and API documentation by running:</p>
|
2061
1588
|
|
2062
|
-
<
|
1589
|
+
<pre># rake pub:doc</pre><p></p>
|
2063
1590
|
|
2064
|
-
<p>If your documentation website (see the <code class="
|
2065
|
-
</div
|
2066
|
-
</div></p></div>
|
2067
|
-
</div
|
2068
|
-
</div
|
2069
|
-
|
1591
|
+
<p>If your documentation website (see the <code class="line"><span style="color:#A60">:docsite</span></code> option for the <code class="line"><span style="color:#036;font-weight:bold">Inochi</span>.init()</code> method) is hosted on RubyForge, then the above command will automatically upload your project’s documentation to the correct place.</p></div>
|
1592
|
+
</div><p> </p></div>
|
1593
|
+
</div><p></p></div>
|
1594
|
+
</div><p> </p></div>
|
1595
|
+
</div>
|
1596
|
+
|
1597
|
+
<div class="chapter">
|
1598
|
+
<a name="History"/><div class="nav" id="History"><a title="Focus this segment" href="#History"><img class="icon" alt="∗" src="&icon_nav_here;"/></a> <a title="Focus previous segment" href="#Publish-the-documentation"><img class="icon" alt="↑" src="&icon_nav_prev;"/></a> <a title="Focus next segment" href="#Version-1.0.0-2009-05-03"><img class="icon" alt="↓" src="&icon_nav_next;"/></a> <a title="Return to listing" href="#rev:History"><img class="icon" alt="≡" src="&icon_nav_list;"/></a></div>
|
2070
1599
|
<h1 class="title">
|
2071
1600
|
Chapter 4
|
2072
1601
|
<br/>
|
2073
1602
|
<big>History</big>
|
2074
1603
|
</h1>
|
2075
|
-
<div class="content"><
|
2076
|
-
<a name="Version-0.
|
1604
|
+
<div class="content"><div class="section">
|
1605
|
+
<a name="Version-1.0.0-2009-05-03"/><div class="nav" id="Version-1.0.0-2009-05-03"><a title="Focus this segment" href="#Version-1.0.0-2009-05-03"><img class="icon" alt="∗" src="&icon_nav_here;"/></a> <a title="Focus previous segment" href="#History"><img class="icon" alt="↑" src="&icon_nav_prev;"/></a> <a title="Focus next segment" href="#Incompatible-changes"><img class="icon" alt="↓" src="&icon_nav_next;"/></a> <a title="Return to listing" href="#rev:Version-1.0.0-2009-05-03"><img class="icon" alt="≡" src="&icon_nav_list;"/></a></div>
|
2077
1606
|
<h2 class="title">
|
2078
|
-
4.1 Version 0.
|
1607
|
+
4.1 Version 1.0.0 (2009-05-03)
|
1608
|
+
</h2>
|
1609
|
+
<div class="content"><p>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.</p>
|
1610
|
+
|
1611
|
+
<div class="paragraph">
|
1612
|
+
<a name="Incompatible-changes"/><div class="nav" id="Incompatible-changes"><a title="Focus this segment" href="#Incompatible-changes"><img class="icon" alt="∗" src="&icon_nav_here;"/></a> <a title="Focus previous segment" href="#Version-1.0.0-2009-05-03"><img class="icon" alt="↑" src="&icon_nav_prev;"/></a> <a title="Focus next segment" href="#New-features"><img class="icon" alt="↓" src="&icon_nav_next;"/></a> <a title="Return to listing" href="#rev:Incompatible-changes"><img class="icon" alt="≡" src="&icon_nav_list;"/></a></div>
|
1613
|
+
<p class="title">Incompatible changes</p>
|
1614
|
+
<div class="content"><ul>
|
1615
|
+
<li>
|
1616
|
+
<p>Your program is no longer halted by <code class="line"><span style="color:#036;font-weight:bold">Inochi</span>.init()</code> and <code class="line"><span style="color:#036;font-weight:bold">Inochi</span>.rake()</code> if gem dependencies are not satified. A warning is issued instead.</p>
|
1617
|
+
</li>
|
1618
|
+
|
1619
|
+
<li>
|
1620
|
+
<p>The <code class="line">project_summary</code> and <code class="line">project_history</code> nodes, which are provided by <code class="line"><span style="color:#036;font-weight:bold">Inochi</span>.book()</code> to the user manual, have been renamed to <code class="line">project</code> and “history” respectively.</p>
|
1621
|
+
</li>
|
1622
|
+
|
1623
|
+
<li>
|
1624
|
+
<p>ERBook 7.0.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.</p>
|
1625
|
+
</li>
|
1626
|
+
|
1627
|
+
<li>
|
1628
|
+
<p><a href='http://github.com/voloko/sdoc/tree/master'>SDoc</a> is now used to generate API documentation instead of <a href='http://yard.rubyforge.org'>YARD</a>. If you link to particular classes or methods in the generated API documentation, be sure to update your link addresses!</p>
|
1629
|
+
</li>
|
1630
|
+
|
1631
|
+
<li>
|
1632
|
+
<p>Minitest is no longer the default testing library. You must specify which testing library you want to use via the <code class="line"><span style="color:#A60">:test_with</span></code> option of the <code class="line"><span style="color:#036;font-weight:bold">Inochi</span>.rake()</code> method. See <a class="xref" href="#Test-execution" title="Paragraph">Test execution</a> for details.</p>
|
1633
|
+
</li>
|
1634
|
+
|
1635
|
+
<li>
|
1636
|
+
<p>The “pak” rake task, which is provided by <code class="line"><span style="color:#036;font-weight:bold">Inochi</span>.rake()</code>, has been renamed to “gem”.</p>
|
1637
|
+
</li>
|
1638
|
+
</ul></div>
|
1639
|
+
</div><div class="paragraph">
|
1640
|
+
<a name="New-features"/><div class="nav" id="New-features"><a title="Focus this segment" href="#New-features"><img class="icon" alt="∗" src="&icon_nav_here;"/></a> <a title="Focus previous segment" href="#Incompatible-changes"><img class="icon" alt="↑" src="&icon_nav_prev;"/></a> <a title="Focus next segment" href="#Bug-fixes"><img class="icon" alt="↓" src="&icon_nav_next;"/></a> <a title="Return to listing" href="#rev:New-features"><img class="icon" alt="≡" src="&icon_nav_list;"/></a></div>
|
1641
|
+
<p class="title">New features</p>
|
1642
|
+
<div class="content"><ul>
|
1643
|
+
<li>
|
1644
|
+
<p>Add <code class="line"><span style="color:#A60">:inochi_consumer</span></code> and <code class="line"><span style="color:#A60">:inochi_producer</span></code> options to <code class="line"><span style="color:#036;font-weight:bold">Inochi</span>.rake()</code> which allows you to <em>avoid</em> having Inochi as a runtime and development dependency, respectively, for your project’s gem.</p>
|
1645
|
+
|
1646
|
+
<p>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’s runtime convenience facilities.</p>
|
1647
|
+
</li>
|
1648
|
+
|
1649
|
+
<li>
|
1650
|
+
<p>Add <code class="line"><span style="color:#A60">:develop</span></code> option for <code class="line"><span style="color:#036;font-weight:bold">Inochi</span>.init()</code> which lets you specify RubyGems as development dependencies in the same way as the <code class="line"><span style="color:#A60">:require</span></code> option.</p>
|
1651
|
+
</li>
|
1652
|
+
|
1653
|
+
<li>
|
1654
|
+
<p>Add “lint” rake task which reports <a href='http://www.infoq.com/news/2008/11/static-analysis-tool-roundup'>code quality statistics</a>.</p>
|
1655
|
+
</li>
|
1656
|
+
|
1657
|
+
<li>
|
1658
|
+
<p>Add “test:cov” rake task which reports code coverage statistics.</p>
|
1659
|
+
</li>
|
1660
|
+
|
1661
|
+
<li>
|
1662
|
+
<p>Add “test:ruby” task which runs all tests with <a href='http://www.infoq.com/news/2008/02/multiruby-testing'>multiruby</a>.</p>
|
1663
|
+
</li>
|
1664
|
+
|
1665
|
+
<li>
|
1666
|
+
<p>Add ‘rake opts=’ environment variable, which lets you specify command-line arguments directly to the Ruby interpreter, for all test* rake tasks.</p>
|
1667
|
+
</li>
|
1668
|
+
|
1669
|
+
<li>
|
1670
|
+
<p>Add <tt>inochi/util/combo</tt> combinatorics library for enumerations, permutations, and combinations which are all useful in exhaustive brute-force unit testing.</p>
|
1671
|
+
</li>
|
1672
|
+
|
1673
|
+
<li>
|
1674
|
+
<p>Add <tt>inochi/util/tempdir</tt> library which really should be in the Ruby standard library.</p>
|
1675
|
+
</li>
|
1676
|
+
</ul></div>
|
1677
|
+
</div><div class="paragraph">
|
1678
|
+
<a name="Bug-fixes"/><div class="nav" id="Bug-fixes"><a title="Focus this segment" href="#Bug-fixes"><img class="icon" alt="∗" src="&icon_nav_here;"/></a> <a title="Focus previous segment" href="#New-features"><img class="icon" alt="↑" src="&icon_nav_prev;"/></a> <a title="Focus next segment" href="#Housekeeping"><img class="icon" alt="↓" src="&icon_nav_next;"/></a> <a title="Return to listing" href="#rev:Bug-fixes"><img class="icon" alt="≡" src="&icon_nav_list;"/></a></div>
|
1679
|
+
<p class="title">Bug fixes</p>
|
1680
|
+
<div class="content"><ul>
|
1681
|
+
<li>
|
1682
|
+
<p>The “enable email notification” checkbox was not activated properly when posting announcement to ruby-talk mailing list via Ruby-Forum.</p>
|
1683
|
+
</li>
|
1684
|
+
|
1685
|
+
<li>
|
1686
|
+
<p>Mark gems needed by <code class="line"><span style="color:#036;font-weight:bold">Inochi</span>.rake()</code> as <em>development</em> dependencies.</p>
|
1687
|
+
|
1688
|
+
<p>A user would now have to install Inochi using <pre>gem install --development</pre> to install all these gems. This also solves the recursive dependency problem between Inochi and ERBook.</p>
|
1689
|
+
</li>
|
1690
|
+
|
1691
|
+
<li>
|
1692
|
+
<p>Set executable in gem specification only if it exists.</p>
|
1693
|
+
</li>
|
1694
|
+
|
1695
|
+
<li>
|
1696
|
+
<p>Fix parsing of stack trace in Ruby 1.9.</p>
|
1697
|
+
</li>
|
1698
|
+
</ul></div>
|
1699
|
+
</div><div class="paragraph">
|
1700
|
+
<a name="Housekeeping"/><div class="nav" id="Housekeeping"><a title="Focus this segment" href="#Housekeeping"><img class="icon" alt="∗" src="&icon_nav_here;"/></a> <a title="Focus previous segment" href="#Bug-fixes"><img class="icon" alt="↑" src="&icon_nav_prev;"/></a> <a title="Focus next segment" href="#Version-0.3.0-2009-02-12"><img class="icon" alt="↓" src="&icon_nav_next;"/></a> <a title="Return to listing" href="#rev:Housekeeping"><img class="icon" alt="≡" src="&icon_nav_list;"/></a></div>
|
1701
|
+
<p class="title">Housekeeping</p>
|
1702
|
+
<div class="content"><ul>
|
1703
|
+
<li>
|
1704
|
+
<p>Write contributor names in <tt>CREDITS</tt> file instead of in the user manual.</p>
|
1705
|
+
</li>
|
1706
|
+
|
1707
|
+
<li>
|
1708
|
+
<p>Use completely lowercase name for <tt>Rakefile</tt>.</p>
|
1709
|
+
</li>
|
1710
|
+
|
1711
|
+
<li>
|
1712
|
+
<p>Add copyright statement at the top of every source file.</p>
|
1713
|
+
</li>
|
1714
|
+
</ul></div>
|
1715
|
+
</div><p> </p></div>
|
1716
|
+
</div><div class="section">
|
1717
|
+
<a name="Version-0.3.0-2009-02-12"/><div class="nav" id="Version-0.3.0-2009-02-12"><a title="Focus this segment" href="#Version-0.3.0-2009-02-12"><img class="icon" alt="∗" src="&icon_nav_here;"/></a> <a title="Focus previous segment" href="#Housekeeping"><img class="icon" alt="↑" src="&icon_nav_prev;"/></a> <a title="Focus next segment" href="#New-features-609439008"><img class="icon" alt="↓" src="&icon_nav_next;"/></a> <a title="Return to listing" href="#rev:Version-0.3.0-2009-02-12"><img class="icon" alt="≡" src="&icon_nav_list;"/></a></div>
|
1718
|
+
<h2 class="title">
|
1719
|
+
4.2 Version 0.3.0 (2009-02-12)
|
2079
1720
|
</h2>
|
2080
1721
|
<div class="content"><p>This release adds support for <a class="xref" href="#Translate-your-project" title="Section 3.3.6. "Translate your project"">language translations / internationalization / multilingualization</a>, improves the user interface, and fixes a show-stopper bug for Windows users.</p>
|
2081
1722
|
|
2082
|
-
<
|
2083
|
-
<a name="New-features"/><div class="nav" id="New-features"><a title="
|
1723
|
+
<div class="paragraph">
|
1724
|
+
<a name="New-features-609439008"/><div class="nav" id="New-features-609439008"><a title="Focus this segment" href="#New-features-609439008"><img class="icon" alt="∗" src="&icon_nav_here;"/></a> <a title="Focus previous segment" href="#Version-0.3.0-2009-02-12"><img class="icon" alt="↑" src="&icon_nav_prev;"/></a> <a title="Focus next segment" href="#Bug-fixes-609465768"><img class="icon" alt="↓" src="&icon_nav_next;"/></a> <a title="Return to listing" href="#rev:New-features-609439008"><img class="icon" alt="≡" src="&icon_nav_list;"/></a></div>
|
2084
1725
|
<p class="title">New features</p>
|
2085
1726
|
<div class="content"><ul>
|
2086
1727
|
<li>
|
@@ -2105,12 +1746,12 @@ Finished in 0.001130 seconds.
|
|
2105
1746
|
<p>Notify user when attempting to publish announcements in the “pub” Rake tasks.</p>
|
2106
1747
|
</li>
|
2107
1748
|
</ul></div>
|
2108
|
-
</div
|
2109
|
-
<a name="Bug-fixes"/><div class="nav" id="Bug-fixes"><a title="
|
1749
|
+
</div><div class="paragraph">
|
1750
|
+
<a name="Bug-fixes-609465768"/><div class="nav" id="Bug-fixes-609465768"><a title="Focus this segment" href="#Bug-fixes-609465768"><img class="icon" alt="∗" src="&icon_nav_here;"/></a> <a title="Focus previous segment" href="#New-features-609439008"><img class="icon" alt="↑" src="&icon_nav_prev;"/></a> <a title="Focus next segment" href="#Housekeeping-609499748"><img class="icon" alt="↓" src="&icon_nav_next;"/></a> <a title="Return to listing" href="#rev:Bug-fixes-609465768"><img class="icon" alt="≡" src="&icon_nav_list;"/></a></div>
|
2110
1751
|
<p class="title">Bug fixes</p>
|
2111
1752
|
<div class="content"><ul>
|
2112
1753
|
<li>
|
2113
|
-
<p>In Windows, <code class="
|
1754
|
+
<p>In Windows, <code class="line"><span style="color:#036;font-weight:bold">ENV</span>[<span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">USERPROFILE</span><span style="color:#710">'</span></span>]</code> gives the path to the user’s home directory and <code class="line"><span style="color:#036;font-weight:bold">ENV</span>[<span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">HOME</span><span style="color:#710">'</span></span>]</code> is not defined.</p>
|
2114
1755
|
</li>
|
2115
1756
|
|
2116
1757
|
<li>
|
@@ -2118,11 +1759,11 @@ Finished in 0.001130 seconds.
|
|
2118
1759
|
|
2119
1760
|
<pre>gem install --force</pre>
|
2120
1761
|
|
2121
|
-
<p>You should update <a class="xref" href="#Setup"
|
1762
|
+
<p>You should update <a class="xref" href="#Setup" title="Chapter 2">Setup</a> in your projects’ user manuals accordingly.</p>
|
2122
1763
|
</li>
|
2123
1764
|
</ul></div>
|
2124
|
-
</div
|
2125
|
-
<a name="Housekeeping"/><div class="nav" id="Housekeeping"><a title="
|
1765
|
+
</div><div class="paragraph">
|
1766
|
+
<a name="Housekeeping-609499748"/><div class="nav" id="Housekeeping-609499748"><a title="Focus this segment" href="#Housekeeping-609499748"><img class="icon" alt="∗" src="&icon_nav_here;"/></a> <a title="Focus previous segment" href="#Bug-fixes-609465768"><img class="icon" alt="↑" src="&icon_nav_prev;"/></a> <a title="Focus next segment" href="#Version-0.2.0-2009-01-25"><img class="icon" alt="↓" src="&icon_nav_next;"/></a> <a title="Return to listing" href="#rev:Housekeeping-609499748"><img class="icon" alt="≡" src="&icon_nav_list;"/></a></div>
|
2126
1767
|
<p class="title">Housekeeping</p>
|
2127
1768
|
<div class="content"><ul>
|
2128
1769
|
<li>
|
@@ -2145,16 +1786,16 @@ Finished in 0.001130 seconds.
|
|
2145
1786
|
<p>Mention that the project license is ISC for the reader’s convenience.</p>
|
2146
1787
|
</li>
|
2147
1788
|
</ul></div>
|
2148
|
-
</div
|
2149
|
-
</div
|
2150
|
-
<a name="Version-0.2.0-2009-01-25"/><div class="nav" id="Version-0.2.0-2009-01-25"><a title="
|
1789
|
+
</div><p> </p></div>
|
1790
|
+
</div><div class="section">
|
1791
|
+
<a name="Version-0.2.0-2009-01-25"/><div class="nav" id="Version-0.2.0-2009-01-25"><a title="Focus this segment" href="#Version-0.2.0-2009-01-25"><img class="icon" alt="∗" src="&icon_nav_here;"/></a> <a title="Focus previous segment" href="#Housekeeping-609499748"><img class="icon" alt="↑" src="&icon_nav_prev;"/></a> <a title="Focus next segment" href="#New-features-609532608"><img class="icon" alt="↓" src="&icon_nav_next;"/></a> <a title="Return to listing" href="#rev:Version-0.2.0-2009-01-25"><img class="icon" alt="≡" src="&icon_nav_list;"/></a></div>
|
2151
1792
|
<h2 class="title">
|
2152
|
-
4.
|
1793
|
+
4.3 Version 0.2.0 (2009-01-25)
|
2153
1794
|
</h2>
|
2154
1795
|
<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>
|
2155
1796
|
|
2156
|
-
<
|
2157
|
-
<a name="New-features-
|
1797
|
+
<div class="paragraph">
|
1798
|
+
<a name="New-features-609532608"/><div class="nav" id="New-features-609532608"><a title="Focus this segment" href="#New-features-609532608"><img class="icon" alt="∗" src="&icon_nav_here;"/></a> <a title="Focus previous segment" href="#Version-0.2.0-2009-01-25"><img class="icon" alt="↑" src="&icon_nav_prev;"/></a> <a title="Focus next segment" href="#Bug-fixes-609551988"><img class="icon" alt="↓" src="&icon_nav_next;"/></a> <a title="Return to listing" href="#rev:New-features-609532608"><img class="icon" alt="≡" src="&icon_nav_list;"/></a></div>
|
2158
1799
|
<p class="title">New features</p>
|
2159
1800
|
<div class="content"><ul>
|
2160
1801
|
<li>
|
@@ -2181,13 +1822,13 @@ Finished in 0.001130 seconds.
|
|
2181
1822
|
<li>
|
2182
1823
|
<p>Allow project authors to be specified via</p>
|
2183
1824
|
|
2184
|
-
<p><code class="
|
1825
|
+
<p><code class="line"><span style="color:#036;font-weight:bold">Inochi</span>.init <span style="color:#A60">:YourProject</span>, <span style="color:#A60">:authors</span> => [[<span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">name</span><span style="color:#710">'</span></span>, <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">mail</span><span style="color:#710">'</span></span>]]</code></p>
|
2185
1826
|
|
2186
1827
|
<p>(Florian Gilcher)</p>
|
2187
1828
|
</li>
|
2188
1829
|
</ul></div>
|
2189
|
-
</div
|
2190
|
-
<a name="Bug-fixes-
|
1830
|
+
</div><div class="paragraph">
|
1831
|
+
<a name="Bug-fixes-609551988"/><div class="nav" id="Bug-fixes-609551988"><a title="Focus this segment" href="#Bug-fixes-609551988"><img class="icon" alt="∗" src="&icon_nav_here;"/></a> <a title="Focus previous segment" href="#New-features-609532608"><img class="icon" alt="↑" src="&icon_nav_prev;"/></a> <a title="Focus next segment" href="#Housekeeping-609561708"><img class="icon" alt="↓" src="&icon_nav_next;"/></a> <a title="Return to listing" href="#rev:Bug-fixes-609551988"><img class="icon" alt="≡" src="&icon_nav_list;"/></a></div>
|
2191
1832
|
<p class="title">Bug fixes</p>
|
2192
1833
|
<div class="content"><ul>
|
2193
1834
|
<li>
|
@@ -2195,7 +1836,7 @@ Finished in 0.001130 seconds.
|
|
2195
1836
|
</li>
|
2196
1837
|
|
2197
1838
|
<li>
|
2198
|
-
<p>Use <code class="
|
1839
|
+
<p>Use <code class="line"><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>
|
2199
1840
|
</li>
|
2200
1841
|
|
2201
1842
|
<li>
|
@@ -2206,50 +1847,50 @@ Finished in 0.001130 seconds.
|
|
2206
1847
|
<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>
|
2207
1848
|
</li>
|
2208
1849
|
</ul></div>
|
2209
|
-
</div
|
2210
|
-
<a name="Housekeeping-
|
1850
|
+
</div><div class="paragraph">
|
1851
|
+
<a name="Housekeeping-609561708"/><div class="nav" id="Housekeeping-609561708"><a title="Focus this segment" href="#Housekeeping-609561708"><img class="icon" alt="∗" src="&icon_nav_here;"/></a> <a title="Focus previous segment" href="#Bug-fixes-609551988"><img class="icon" alt="↑" src="&icon_nav_prev;"/></a> <a title="Focus next segment" href="#Version-0.1.0-2009-01-13"><img class="icon" alt="↓" src="&icon_nav_next;"/></a> <a title="Return to listing" href="#rev:Housekeeping-609561708"><img class="icon" alt="≡" src="&icon_nav_list;"/></a></div>
|
2211
1852
|
<p class="title">Housekeeping</p>
|
2212
1853
|
<div class="content"><ul>
|
2213
1854
|
<li>Added unit tests for utility methods provided by the <strong>Inochi</strong> module: project name calculation and CamelCase to snake_case conversion.</li>
|
2214
1855
|
</ul></div>
|
2215
|
-
</div
|
2216
|
-
</div
|
2217
|
-
<a name="Version-0.1.0-2009-01-13"/><div class="nav" id="Version-0.1.0-2009-01-13"><a title="
|
1856
|
+
</div><p> </p></div>
|
1857
|
+
</div><div class="section">
|
1858
|
+
<a name="Version-0.1.0-2009-01-13"/><div class="nav" id="Version-0.1.0-2009-01-13"><a title="Focus this segment" href="#Version-0.1.0-2009-01-13"><img class="icon" alt="∗" src="&icon_nav_here;"/></a> <a title="Focus previous segment" href="#Housekeeping-609561708"><img class="icon" alt="↑" src="&icon_nav_prev;"/></a> <a title="Focus next segment" href="#New-features-609595238"><img class="icon" alt="↓" src="&icon_nav_next;"/></a> <a title="Return to listing" href="#rev:Version-0.1.0-2009-01-13"><img class="icon" alt="≡" src="&icon_nav_list;"/></a></div>
|
2218
1859
|
<h2 class="title">
|
2219
|
-
4.
|
1860
|
+
4.4 Version 0.1.0 (2009-01-13)
|
2220
1861
|
</h2>
|
2221
1862
|
<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>
|
2222
1863
|
|
2223
|
-
<
|
2224
|
-
<a name="New-features-
|
1864
|
+
<div class="paragraph">
|
1865
|
+
<a name="New-features-609595238"/><div class="nav" id="New-features-609595238"><a title="Focus this segment" href="#New-features-609595238"><img class="icon" alt="∗" src="&icon_nav_here;"/></a> <a title="Focus previous segment" href="#Version-0.1.0-2009-01-13"><img class="icon" alt="↑" src="&icon_nav_prev;"/></a> <a title="Focus next segment" href="#Bug-fixes-609627068"><img class="icon" alt="↓" src="&icon_nav_next;"/></a> <a title="Return to listing" href="#rev:New-features-609595238"><img class="icon" alt="≡" src="&icon_nav_list;"/></a></div>
|
2225
1866
|
<p class="title">New features</p>
|
2226
1867
|
<div class="content"><ul>
|
2227
|
-
<li><code class="
|
1868
|
+
<li><code class="line"><span style="color:#036;font-weight:bold">Inochi</span>.init()</code> now adds <code class="line"><span style="color:#888">#major()</span></code>, <code class="line"><span style="color:#888">#series()</span></code>, and <code class="line"><span style="color:#888">#requirement()</span></code> instance methods to a project’s <code class="line"><span style="color:#036;font-weight:bold">VERSION</span></code> constant.</li>
|
2228
1869
|
</ul></div>
|
2229
|
-
</div
|
2230
|
-
<a name="Bug-fixes-
|
1870
|
+
</div><div class="paragraph">
|
1871
|
+
<a name="Bug-fixes-609627068"/><div class="nav" id="Bug-fixes-609627068"><a title="Focus this segment" href="#Bug-fixes-609627068"><img class="icon" alt="∗" src="&icon_nav_here;"/></a> <a title="Focus previous segment" href="#New-features-609595238"><img class="icon" alt="↑" src="&icon_nav_prev;"/></a> <a title="Focus next segment" href="#Version-0.0.1-2009-01-13"><img class="icon" alt="↓" src="&icon_nav_next;"/></a> <a title="Return to listing" href="#rev:Bug-fixes-609627068"><img class="icon" alt="≡" src="&icon_nav_list;"/></a></div>
|
2231
1872
|
<p class="title">Bug fixes</p>
|
2232
1873
|
<div class="content"><ul>
|
2233
1874
|
<li>
|
2234
|
-
<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="
|
1875
|
+
<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="line">gem install</code> command for <strong>Inochi</strong>.</p>
|
2235
1876
|
|
2236
|
-
<p><a class="xref" href="#Installation"
|
1877
|
+
<p><a class="xref" href="#Installation" title="Section 2.2">Installation</a> has been updated accordingly.</p>
|
2237
1878
|
</li>
|
2238
1879
|
|
2239
1880
|
<li>
|
2240
1881
|
<p>Add forgotten Rake dependency for <strong>Inochi</strong> gem.</p>
|
2241
1882
|
</li>
|
2242
1883
|
</ul></div>
|
2243
|
-
</div
|
2244
|
-
</div
|
2245
|
-
<a name="Version-0.0.1-2009-01-13"/><div class="nav" id="Version-0.0.1-2009-01-13"><a title="
|
1884
|
+
</div><p> </p></div>
|
1885
|
+
</div><div class="section">
|
1886
|
+
<a name="Version-0.0.1-2009-01-13"/><div class="nav" id="Version-0.0.1-2009-01-13"><a title="Focus this segment" href="#Version-0.0.1-2009-01-13"><img class="icon" alt="∗" src="&icon_nav_here;"/></a> <a title="Focus previous segment" href="#Bug-fixes-609627068"><img class="icon" alt="↑" src="&icon_nav_prev;"/></a> <a title="Focus next segment" href="#Bug-fixes-609677068"><img class="icon" alt="↓" src="&icon_nav_next;"/></a> <a title="Return to listing" href="#rev:Version-0.0.1-2009-01-13"><img class="icon" alt="≡" src="&icon_nav_list;"/></a></div>
|
2246
1887
|
<h2 class="title">
|
2247
|
-
4.
|
1888
|
+
4.5 Version 0.0.1 (2009-01-13)
|
2248
1889
|
</h2>
|
2249
1890
|
<div class="content"><p>This release fixes some show-stopper bugs.</p>
|
2250
1891
|
|
2251
|
-
<
|
2252
|
-
<a name="Bug-fixes-
|
1892
|
+
<div class="paragraph">
|
1893
|
+
<a name="Bug-fixes-609677068"/><div class="nav" id="Bug-fixes-609677068"><a title="Focus this segment" href="#Bug-fixes-609677068"><img class="icon" alt="∗" src="&icon_nav_here;"/></a> <a title="Focus previous segment" href="#Version-0.0.1-2009-01-13"><img class="icon" alt="↑" src="&icon_nav_prev;"/></a> <a title="Focus next segment" href="#Housekeeping-609697358"><img class="icon" alt="↓" src="&icon_nav_next;"/></a> <a title="Return to listing" href="#rev:Bug-fixes-609677068"><img class="icon" alt="≡" src="&icon_nav_list;"/></a></div>
|
2253
1894
|
<p class="title">Bug fixes</p>
|
2254
1895
|
<div class="content"><ul>
|
2255
1896
|
<li>
|
@@ -2259,64 +1900,84 @@ Finished in 0.001130 seconds.
|
|
2259
1900
|
<li>
|
2260
1901
|
<p>There was a <a href='http://www.ruby-forum.com/topic/176173#771281'>circular dependency problem</a> when installing the <strong>Inochi</strong> gem. (Florian Gilcher)</p>
|
2261
1902
|
|
2262
|
-
<p>The solution is to specify the <tt>--force</tt> option when installing the gem. <a class="xref" href="#Installation"
|
1903
|
+
<p>The solution is to specify the <tt>--force</tt> option when installing the gem. <a class="xref" href="#Installation" title="Section 2.2">Installation</a> has been updated accordingly.</p>
|
2263
1904
|
</li>
|
2264
1905
|
|
2265
1906
|
<li>
|
2266
1907
|
<p>Generated project scaffolds now check against the major version of the <strong>Inochi</strong> gem, to avoid runtime version conflicts.</p>
|
2267
1908
|
</li>
|
2268
1909
|
</ul></div>
|
2269
|
-
</div
|
2270
|
-
<a name="Housekeeping-
|
1910
|
+
</div><div class="paragraph">
|
1911
|
+
<a name="Housekeeping-609697358"/><div class="nav" id="Housekeeping-609697358"><a title="Focus this segment" href="#Housekeeping-609697358"><img class="icon" alt="∗" src="&icon_nav_here;"/></a> <a title="Focus previous segment" href="#Bug-fixes-609677068"><img class="icon" alt="↑" src="&icon_nav_prev;"/></a> <a title="Focus next segment" href="#Version-0.0.0-2009-01-13"><img class="icon" alt="↓" src="&icon_nav_next;"/></a> <a title="Return to listing" href="#rev:Housekeeping-609697358"><img class="icon" alt="≡" src="&icon_nav_list;"/></a></div>
|
2271
1912
|
<p class="title">Housekeeping</p>
|
2272
1913
|
<div class="content"><ul>
|
2273
|
-
<li>Only add project libraries to <code class="
|
1914
|
+
<li>Only add project libraries to <code class="line"><span style="color:#d70;font-weight:bold">$LOAD_PATH</span></code> if not already there.</li>
|
2274
1915
|
</ul></div>
|
2275
|
-
</div
|
2276
|
-
</div
|
2277
|
-
<a name="Version-0.0.0-2009-01-13"/><div class="nav" id="Version-0.0.0-2009-01-13"><a title="
|
1916
|
+
</div><p> </p></div>
|
1917
|
+
</div><div class="section">
|
1918
|
+
<a name="Version-0.0.0-2009-01-13"/><div class="nav" id="Version-0.0.0-2009-01-13"><a title="Focus this segment" href="#Version-0.0.0-2009-01-13"><img class="icon" alt="∗" src="&icon_nav_here;"/></a> <a title="Focus previous segment" href="#Housekeeping-609697358"><img class="icon" alt="↑" src="&icon_nav_prev;"/></a> <a title="Return to listing" href="#rev:Version-0.0.0-2009-01-13"><img class="icon" alt="≡" src="&icon_nav_list;"/></a></div>
|
2278
1919
|
<h2 class="title">
|
2279
|
-
4.
|
1920
|
+
4.6 Version 0.0.0 (2009-01-13)
|
2280
1921
|
</h2>
|
2281
1922
|
<div class="content"><p>This is the first release of <strong>Inochi</strong>.</p>
|
2282
1923
|
|
2283
1924
|
<p>Happy birthday!</p></div>
|
2284
|
-
</div></p></p></div>
|
2285
|
-
</div
|
1925
|
+
</div><p></p><p></p></div>
|
1926
|
+
</div>
|
1927
|
+
</div>
|
2286
1928
|
|
2287
1929
|
|
2288
1930
|
<br style="display: none"/>
|
2289
1931
|
<hr style="display: none"/>
|
2290
1932
|
<br style="display: none"/>
|
2291
1933
|
|
2292
|
-
|
2293
|
-
<div id="footer">
|
2294
|
-
|
2295
|
-
|
2296
|
-
<div id="footer-credits">
|
2297
|
-
<p>
|
2298
|
-
<img class="icon" src="&icon_caution;" alt="caution"/>
|
2299
|
-
<img class="icon" src="&icon_tip;" alt="tip"/>
|
2300
|
-
<img class="icon" src="&icon_important;" alt="important"/>
|
2301
|
-
<img class="icon" src="&icon_note;" alt="note"/>
|
2302
|
-
<img class="icon" src="&icon_warning;" alt="warning"/>
|
2303
|
-
<img class="icon" src="&icon_quote;" alt="quote"/>
|
2304
1934
|
|
2305
|
-
<br/>
|
2306
|
-
|
2307
|
-
The icons shown above are part of <a href="http://tango.freedesktop.org/Tango_Icon_Library">Tango Icon Theme</a>, which is copyright © 2005 <a href="http://tango.freedesktop.org">Tango Desktop Project</a> and is distributed under <a href="http://creativecommons.org/licenses/by-sa/2.5/">Creative Commons Attribution-ShareAlike 2.5 License Agreement</a>.
|
2308
|
-
</p>
|
2309
|
-
|
2310
|
-
<p>
|
2311
|
-
<img class="icon" src="&icon_link;" alt="link"/>
|
2312
|
-
|
2313
|
-
<br/>
|
2314
|
-
|
2315
|
-
The icons shown above are part of <a href="http://www.mediawiki.org/wiki/MediaWiki">MediaWiki</a>, which is copyright © 2007 <a href="https://www.ohloh.net/projects/mediawiki/contributors">MediaWiki contributors</a> and is distributed under <a href="http://www.gnu.org/licenses/old-licenses/gpl-2.0.html">GNU General Public License, version 2</a>.
|
2316
|
-
</p>
|
2317
|
-
</div>
|
2318
1935
|
|
1936
|
+
|
1937
|
+
<div id="footer">
|
1938
|
+
|
1939
|
+
Generated by <a href="http://snk.tuxfamily.org/lib/erbook/">ERBook 7.0.0</a> on Mon May 04 01:16:05 -0700 2009.
|
1940
|
+
|
1941
|
+
<div id="footer-credits">
|
1942
|
+
<p>
|
1943
|
+
<img class="icon" alt="here_frag" src="&icon_here_frag;"/>
|
1944
|
+
<img class="icon" alt="caution" src="&icon_caution;"/>
|
1945
|
+
<img class="icon" alt="nav_here" src="&icon_nav_here;"/>
|
1946
|
+
<img class="icon" alt="nav_prev" src="&icon_nav_prev;"/>
|
1947
|
+
<img class="icon" alt="tip" src="&icon_tip;"/>
|
1948
|
+
<img class="icon" alt="important" src="&icon_important;"/>
|
1949
|
+
<img class="icon" alt="nav_list" src="&icon_nav_list;"/>
|
1950
|
+
<img class="icon" alt="note" src="&icon_note;"/>
|
1951
|
+
<img class="icon" alt="warning" src="&icon_warning;"/>
|
1952
|
+
<img class="icon" alt="quote" src="&icon_quote;"/>
|
1953
|
+
<img class="icon" alt="nav_next" src="&icon_nav_next;"/>
|
1954
|
+
|
1955
|
+
<br/>
|
1956
|
+
|
1957
|
+
The icons shown above are part of <a href="http://tango.freedesktop.org/Tango_Icon_Library">Tango Icon Theme</a>, which is copyright © 2005 <a href="http://tango.freedesktop.org">Tango Desktop Project</a> and is distributed under <a href="http://creativecommons.org/licenses/by-sa/2.5/">Creative Commons Attribution-ShareAlike 2.5 License Agreement</a>.
|
1958
|
+
</p>
|
1959
|
+
|
1960
|
+
<p>
|
1961
|
+
<img class="icon" alt="hyperlink" src="&icon_hyperlink;"/>
|
1962
|
+
|
1963
|
+
<br/>
|
1964
|
+
|
1965
|
+
The icons shown above are part of <a href="http://www.mediawiki.org/wiki/MediaWiki">MediaWiki</a>, which is copyright © 2007 <a href="https://www.ohloh.net/projects/mediawiki/contributors">MediaWiki contributors</a> and is distributed under <a href="http://www.gnu.org/licenses/old-licenses/gpl-2.0.html">GNU General Public License, version 2</a>.
|
1966
|
+
</p>
|
1967
|
+
|
1968
|
+
<p style="margin-top: 3em">
|
1969
|
+
<a href="http://validator.w3.org/check?uri=referer"><img
|
1970
|
+
src="http://www.w3.org/Icons/valid-xhtml10-blue"
|
1971
|
+
alt="Valid XHTML 1.0 Transitional" height="31" width="88" /></a>
|
1972
|
+
|
1973
|
+
<a href="http://jigsaw.w3.org/css-validator/check/referer?profile=css3"><img
|
1974
|
+
src="http://jigsaw.w3.org/css-validator/images/vcss-blue"
|
1975
|
+
alt="Valid CSS!" height="31" width="88" /></a>
|
1976
|
+
</p>
|
1977
|
+
</div>
|
1978
|
+
|
2319
1979
|
</div>
|
1980
|
+
|
2320
1981
|
|
2321
1982
|
</div>
|
2322
1983
|
</body>
|