erbook 7.1.0 → 7.1.1
Sign up to get free protection for your applications and to get access to all the features.
- data/doc/api/classes/ERBook/Document.html +10 -10
- data/doc/api/classes/ERBook/Document/Node.html +5 -5
- data/doc/api/classes/ERBook/Template.html +20 -20
- data/doc/api/classes/ERBook/Template/Sandbox.html +5 -5
- data/doc/api/classes/RDoc/AnyMethod.html +20 -20
- data/doc/api/classes/RDoc/TopLevel.html +30 -30
- data/doc/api/classes/String.html +10 -10
- data/doc/api/created.rid +1 -1
- data/doc/api/files/lib/erbook/to_xhtml_rb.html +3 -3
- data/doc/api/files/lib/erbook_rb.html +1 -1
- data/doc/api/panel/search_index.js +1 -1
- data/doc/api/panel/tree.js +1 -1
- data/doc/formats.erb +10 -9
- data/doc/history.erb +38 -8
- data/doc/index.html +4330 -0
- data/doc/intro.erb +29 -64
- data/doc/setup.erb +45 -2
- data/doc/usage.erb +7 -4
- data/fmt/xhtml.yaml +67 -71
- data/lib/erbook.rb +3 -3
- metadata +9 -8
- data/doc/index.xhtml +0 -3945
data/doc/intro.erb
CHANGED
@@ -5,8 +5,8 @@
|
|
5
5
|
|
6
6
|
% eruby_url = "http://en.wikipedia.org/wiki/ERuby"
|
7
7
|
% api_url = './api/index.html'
|
8
|
-
%
|
9
|
-
%
|
8
|
+
% src_url = 'http://github.com/sunaku/' + $program
|
9
|
+
% src_scm = '[Git](http://git-scm.com)'
|
10
10
|
|
11
11
|
|
12
12
|
%|chapter "Introduction"
|
@@ -14,9 +14,16 @@
|
|
14
14
|
|
15
15
|
%|project
|
16
16
|
|
17
|
-
<%= $project %> is an extensible document processor that emits <%= xref "HelloWorld", "any document you can imagine" %> from [eRuby templates](<%= eruby_url %>) which allow scripting and dynamic content generation.
|
17
|
+
<%= $project %> is an extensible document processor that emits <%= xref "HelloWorld", "any document you can imagine" %> from [eRuby templates](<%= eruby_url %>), which allow scripting and dynamic content generation.
|
18
18
|
|
19
|
-
|
19
|
+
|
20
|
+
* <%= xref "History", "What's new?" %> --- history of project releases.
|
21
|
+
* [Source code](<%= src_url %>) --- obtain via <%= src_scm %> or browse online.
|
22
|
+
* [API reference](<%= api_url %>) --- documentation for source code.
|
23
|
+
* [Project home](<%= $website %>) --- the <%= $project %> project home page.
|
24
|
+
|
25
|
+
To get help or provide feedback, simply
|
26
|
+
<%= xref "License", "contact the author(s)" %>.
|
20
27
|
|
21
28
|
|
22
29
|
%|section "Features"
|
@@ -24,68 +31,13 @@
|
|
24
31
|
<%= $project %> is exciting because:
|
25
32
|
* Its documents are scriptable [eRuby templates](<%= eruby_url %>).
|
26
33
|
* It lets you <%= xref "HelloWorld", "define your own document formats" %>.
|
27
|
-
*
|
34
|
+
* It emits beautiful <%= xref "xhtml", "XHTML (web page)" %> documents.
|
35
|
+
* It consists of a mere <%= `sloccount .`[/^Total.+=\s*(\d+)$/, 1] %> lines of code.
|
28
36
|
|
29
|
-
These features distinguish <%= $project %> from the competition, who offer neither scriptable documents nor definable document formats:
|
30
|
-
* [DocBook](http://www.docbook.org)
|
31
|
-
* [Deplate](http://deplate.sourceforge.net)
|
32
|
-
* [SiSU](http://www.jus.uio.no/sisu/SiSU/)
|
33
|
-
* [AsciiDoc](http://www.methods.co.nz/asciidoc/)
|
34
|
-
* [txt2tags](http://txt2tags.sourceforge.net)
|
35
|
-
* [Grutatxt](http://www.triptico.com/software/grutatxt.html)
|
36
37
|
|
38
|
+
%|note "More document formats are planned"
|
37
39
|
|
38
|
-
|
39
|
-
|
40
|
-
* <%= xref "History", "What's new?" %> --- history of project releases.
|
41
|
-
* [Source code](<%= repo_url %>) --- obtain via <%= repo_scm %> or browse online.
|
42
|
-
* [API reference](<%= api_url %>) --- documentation for source code.
|
43
|
-
* [Project home](<%= $website %>) --- the <%= $project %> project home page.
|
44
|
-
|
45
|
-
To get help or provide feedback, simply
|
46
|
-
<%= xref "License", "contact the authors" %>.
|
47
|
-
|
48
|
-
|
49
|
-
%|paragraph "Version numbers"
|
50
|
-
|
51
|
-
<%= $project %> releases are numbered in *major.minor.patch*
|
52
|
-
form according to the [RubyGems rational versioning
|
53
|
-
policy](http://www.rubygems.org/read/chapter/7), which
|
54
|
-
can be summarized thus:
|
55
|
-
|
56
|
-
<table markdown="1">
|
57
|
-
<thead>
|
58
|
-
<tr>
|
59
|
-
<td rowspan="2">What increased in the version number?</td>
|
60
|
-
<td colspan="3">The increase indicates that the release:</td>
|
61
|
-
</tr>
|
62
|
-
<tr>
|
63
|
-
<th>Is backward compatible?</th>
|
64
|
-
<th>Has new features?</th>
|
65
|
-
<th>Has bug fixes?</th>
|
66
|
-
</tr>
|
67
|
-
</thead>
|
68
|
-
<tbody>
|
69
|
-
<tr>
|
70
|
-
<th>major</th>
|
71
|
-
<td style="background-color: #FFE4E1;">No</td>
|
72
|
-
<td>Yes</td>
|
73
|
-
<td>Yes</td>
|
74
|
-
</tr>
|
75
|
-
<tr>
|
76
|
-
<th>minor</th>
|
77
|
-
<td>Yes</td>
|
78
|
-
<td>Yes</td>
|
79
|
-
<td>Yes</td>
|
80
|
-
</tr>
|
81
|
-
<tr>
|
82
|
-
<th>patch</th>
|
83
|
-
<td>Yes</td>
|
84
|
-
<td style="background-color: #FFE4E1;">No</td>
|
85
|
-
<td>Yes</td>
|
86
|
-
</tr>
|
87
|
-
</tbody>
|
88
|
-
</table>
|
40
|
+
<%= xref "latex", "LaTeX (PDF)" %>, <%= xref "man", "UNIX manual page" %>, and <%= xref "text", "plain text" %> document formats are planned for future releases... <%= xref "License", "patches are welcome" %>!
|
89
41
|
|
90
42
|
|
91
43
|
%|section "License"
|
@@ -100,7 +52,7 @@
|
|
100
52
|
%< "README"
|
101
53
|
|
102
54
|
<%= $project %> is made possible by
|
103
|
-
|
55
|
+
%= xref "History", "contributions"
|
104
56
|
from users like you:
|
105
57
|
|
106
58
|
%< "../CREDITS"
|
@@ -126,3 +78,16 @@
|
|
126
78
|
Martin DeMello in [ruby-talk](http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/283304):
|
127
79
|
|
128
80
|
> Very nice work indeed!
|
81
|
+
|
82
|
+
|
83
|
+
%|section "Related works"
|
84
|
+
|
85
|
+
Note that, unlike <%= $project %>, these related works offer *neither* scriptable documents nor definable document formats. I have yet to encounter another project that does. If you happen to know, please enlighten me.
|
86
|
+
|
87
|
+
* [DocBook](http://www.docbook.org)
|
88
|
+
* [Deplate](http://deplate.sourceforge.net)
|
89
|
+
* [SiSU](http://www.jus.uio.no/sisu/SiSU/)
|
90
|
+
* [AsciiDoc](http://www.methods.co.nz/asciidoc/)
|
91
|
+
* [txt2tags](http://txt2tags.sourceforge.net)
|
92
|
+
* [Grutatxt](http://www.triptico.com/software/grutatxt.html)
|
93
|
+
|
data/doc/setup.erb
CHANGED
@@ -33,7 +33,7 @@
|
|
33
33
|
Otherwise, you can <%= xref "License", "contact the author" %> for help.
|
34
34
|
|
35
35
|
|
36
|
-
%|section "
|
36
|
+
%|section "Package contents"
|
37
37
|
|
38
38
|
You will see the following items inside <%= $project %>'s installation directory, whose path you can determine by running this command:
|
39
39
|
|
@@ -46,7 +46,7 @@
|
|
46
46
|
* <tt>fmt/</tt> --- contains the predefined set of <%= xref "SpecFile", "format specification files" %>. If you ever need to install your custom format specification file globally, then put it inside this directory.
|
47
47
|
|
48
48
|
%|ERBook::FORMAT_FILES.each do |file|
|
49
|
-
|
49
|
+
%= ' * <tt>%s</tt> --- %s' % [File.basename(file), YAML.load_file(file)['desc']]
|
50
50
|
|
51
51
|
* <tt>lib/</tt>
|
52
52
|
|
@@ -67,3 +67,46 @@
|
|
67
67
|
* <tt>api/</tt> --- API reference documentation.
|
68
68
|
|
69
69
|
* <tt>LICENSE</tt> --- project license and copyright notice.
|
70
|
+
|
71
|
+
|
72
|
+
%|section "Version numbers"
|
73
|
+
|
74
|
+
<%= $project %> releases are numbered in *major.minor.patch*
|
75
|
+
form according to the [RubyGems rational versioning
|
76
|
+
policy](http://www.rubygems.org/read/chapter/7), which
|
77
|
+
can be summarized as follows:
|
78
|
+
|
79
|
+
<table markdown="1">
|
80
|
+
<thead>
|
81
|
+
<tr>
|
82
|
+
<td rowspan="2">What increased in the version number?</td>
|
83
|
+
<td colspan="3">The increase indicates that the release:</td>
|
84
|
+
</tr>
|
85
|
+
<tr>
|
86
|
+
<th>Is backward compatible?</th>
|
87
|
+
<th>Has new features?</th>
|
88
|
+
<th>Has bug fixes?</th>
|
89
|
+
</tr>
|
90
|
+
</thead>
|
91
|
+
<tbody>
|
92
|
+
<tr>
|
93
|
+
<th>major</th>
|
94
|
+
<td style="background-color: #FFE4E1;">No</td>
|
95
|
+
<td>Yes</td>
|
96
|
+
<td>Yes</td>
|
97
|
+
</tr>
|
98
|
+
<tr>
|
99
|
+
<th>minor</th>
|
100
|
+
<td>Yes</td>
|
101
|
+
<td>Yes</td>
|
102
|
+
<td>Yes</td>
|
103
|
+
</tr>
|
104
|
+
<tr>
|
105
|
+
<th>patch</th>
|
106
|
+
<td>Yes</td>
|
107
|
+
<td style="background-color: #FFE4E1;">No</td>
|
108
|
+
<td>Yes</td>
|
109
|
+
</tr>
|
110
|
+
</tbody>
|
111
|
+
</table>
|
112
|
+
|
data/doc/usage.erb
CHANGED
@@ -12,7 +12,7 @@
|
|
12
12
|
|
13
13
|
The first command-line argument to <%= $project %> is either the name of a predefined format (FormatName) or the path to a <%= xref "SpecFile", "format specification file" %> (FormatFile).
|
14
14
|
|
15
|
-
Predefined formats are simply short-hand names of format specification files located in the <tt>fmt/</tt> subdirectory of the <%= $project %> installation directory (see <%= xref "
|
15
|
+
Predefined formats are simply short-hand names of format specification files located in the <tt>fmt/</tt> subdirectory of the <%= $project %> installation directory (see <%= xref "Package contents" %>).
|
16
16
|
|
17
17
|
|
18
18
|
%|section "Saving the output to a file"
|
@@ -24,11 +24,13 @@
|
|
24
24
|
In the above example, *YOUR\_PATH\_HERE* is the path of the file in which the output should be saved.
|
25
25
|
|
26
26
|
|
27
|
-
%|important "
|
27
|
+
%|important "Serve XHTML as HTML for Microsoft web browsers"
|
28
28
|
|
29
|
-
|
29
|
+
If you do not care whether people can read your XHTML documents using Microsoft web browsers, please disregard this message. Otherwise, please heed the following instructions.
|
30
30
|
|
31
|
-
|
31
|
+
When you use the XHTML format, ensure that either (1) your saved output document is served to web browsers under the <tt>text/html</tt> mime type, or (2) the file extension of your saved output document is either <tt>.html</tt> or <tt>.htm</tt>.
|
32
|
+
|
33
|
+
Otherwise, Microsoft web browsers _will not display_ your XHTML document and will instead prompt the reader to save your XHTML document as a file on their computer. See [this detailed explanation](http://www.howtocreate.co.uk/wrongWithIE/?chapter=XHTML) for details.
|
32
34
|
|
33
35
|
|
34
36
|
%|section "Unindenting nodes hierarchically"
|
@@ -36,3 +38,4 @@
|
|
36
38
|
When writing <%= $project %> documents, I prefer to indent the content of nodes according to their depth because my [text editor of choice](http://jedit.org) automatically folds blocks of text based on indentation.
|
37
39
|
|
38
40
|
If you also prefer to write documents in this way, be sure to pass the <tt>--unindent</tt> option to <%= $project %> so that the indentation will not affect the resulting output.
|
41
|
+
|
data/fmt/xhtml.yaml
CHANGED
@@ -119,28 +119,11 @@ code: |
|
|
119
119
|
end
|
120
120
|
|
121
121
|
##
|
122
|
-
# Returns
|
123
|
-
# embedded image data) ready for insertion into XML.
|
124
|
-
#
|
125
|
-
def entity_xml
|
126
|
-
"&#{entity_name};"
|
127
|
-
end
|
128
|
-
|
129
|
-
##
|
130
|
-
# Returns the name of the XML entity whose
|
131
|
-
# value contains embedded image data.
|
132
|
-
#
|
133
|
-
def entity_name
|
134
|
-
"icon_#{name}"
|
135
|
-
end
|
136
|
-
|
137
|
-
##
|
138
|
-
# Returns an <img/> tag that renders the image
|
139
|
-
# data embedded as an ENTITY in the html DOCTYPE.
|
122
|
+
# Returns an <img/> tag that renders an embedded data URI.
|
140
123
|
#
|
141
124
|
def to_xhtml atts = {}
|
142
125
|
atts[:alt] ||= name
|
143
|
-
atts[:src] =
|
126
|
+
atts[:src] = data_uri
|
144
127
|
atts[:class] = :icon
|
145
128
|
"<img#{atts.to_xml_atts}/>"
|
146
129
|
end
|
@@ -338,10 +321,10 @@ code: |
|
|
338
321
|
NEXT_TEXT = ERBook::PHRASES['Focus next segment']
|
339
322
|
LIST_TEXT = ERBook::PHRASES['Return to listing']
|
340
323
|
|
341
|
-
HERE_SIGN = ICON_BY_NAME['nav_here'].to_xhtml(:alt =>
|
342
|
-
PREV_SIGN = ICON_BY_NAME['nav_prev'].to_xhtml(:alt =>
|
343
|
-
NEXT_SIGN = ICON_BY_NAME['nav_next'].to_xhtml(:alt =>
|
344
|
-
LIST_SIGN = ICON_BY_NAME['nav_list'].to_xhtml(:alt =>
|
324
|
+
HERE_SIGN = ICON_BY_NAME['nav_here'].to_xhtml(:alt => HERE_TEXT)
|
325
|
+
PREV_SIGN = ICON_BY_NAME['nav_prev'].to_xhtml(:alt => PREV_TEXT)
|
326
|
+
NEXT_SIGN = ICON_BY_NAME['nav_next'].to_xhtml(:alt => NEXT_TEXT)
|
327
|
+
LIST_SIGN = ICON_BY_NAME['nav_list'].to_xhtml(:alt => LIST_TEXT)
|
345
328
|
|
346
329
|
##
|
347
330
|
# Calculates a local navigation menu containing links
|
@@ -469,7 +452,7 @@ nodes:
|
|
469
452
|
index: false
|
470
453
|
number: false
|
471
454
|
silent: true
|
472
|
-
bypass:
|
455
|
+
bypass: false
|
473
456
|
output: |
|
474
457
|
<div id="<%= @node.type_frag %>">
|
475
458
|
<%= @node.navigation %>
|
@@ -646,6 +629,8 @@ output: |
|
|
646
629
|
$subtitle = '$subtitle' unless defined? $subtitle
|
647
630
|
$authors = {'$authors' => nil} unless defined? $authors
|
648
631
|
$date = Time.now.strftime("%d %B %Y") unless defined? $date
|
632
|
+
$logo = nil unless defined? $logo
|
633
|
+
$feeds = nil unless defined? $feeds
|
649
634
|
|
650
635
|
abstract = @nodes_by_type['abstract'].first
|
651
636
|
|
@@ -700,14 +685,14 @@ output: |
|
|
700
685
|
end
|
701
686
|
%><?xml version="1.0" encoding="utf-8"?>
|
702
687
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
703
|
-
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
|
704
|
-
%|ICONS.each |icon|
|
705
|
-
<!ENTITY <%= icon.entity_name %> "<%= icon.data_uri %>">
|
706
|
-
]>
|
688
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
707
689
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
708
690
|
<head>
|
709
|
-
<meta http-equiv="content-type" content="
|
710
|
-
|
691
|
+
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
|
692
|
+
|
693
|
+
<meta name="generator" content="<%=
|
694
|
+
[ERBook::DISPLAY, ERBook::WEBSITE].join(' — ')
|
695
|
+
%>"/>
|
711
696
|
|
712
697
|
% if $title || $subtitle
|
713
698
|
<title><%=
|
@@ -798,6 +783,10 @@ output: |
|
|
798
783
|
%< File.join(JQUERY_DIR, 'jquery-ui-1.7.2.custom.min.js')
|
799
784
|
|
800
785
|
$(function() {
|
786
|
+
/*
|
787
|
+
%< File.join(ERBook::INSTALL, 'LICENSE')
|
788
|
+
*/
|
789
|
+
|
801
790
|
//
|
802
791
|
// respond to changes in window location
|
803
792
|
//
|
@@ -822,6 +811,10 @@ output: |
|
|
822
811
|
// the element corresponding to the given hash.
|
823
812
|
//
|
824
813
|
function set_hash(hash, prevent_jump) {
|
814
|
+
if ($last_hash == hash) {
|
815
|
+
return;
|
816
|
+
}
|
817
|
+
|
825
818
|
var set_the_hash = function() {
|
826
819
|
//
|
827
820
|
// XXX: bypass on_hash_change() by setting $last_hash
|
@@ -872,9 +865,11 @@ output: |
|
|
872
865
|
// temporarily place a dummy element at the current
|
873
866
|
// screen position and give it the ID of the target
|
874
867
|
//
|
868
|
+
var original_screen_position = $(window).scrollTop();
|
869
|
+
|
875
870
|
var dummy = $('<span/>').attr('id', target_id).css({
|
876
871
|
position: 'absolute',
|
877
|
-
top:
|
872
|
+
top: original_screen_position
|
878
873
|
});
|
879
874
|
|
880
875
|
target.removeAttr('id').before(dummy);
|
@@ -892,6 +887,12 @@ output: |
|
|
892
887
|
dummy.remove();
|
893
888
|
target.attr('id', target_id);
|
894
889
|
|
890
|
+
//
|
891
|
+
// the above approach does not work for Opera and IE.
|
892
|
+
// they ignore the dummy and jump to the actual target
|
893
|
+
//
|
894
|
+
$(window).scrollTop(original_screen_position);
|
895
|
+
|
895
896
|
return;
|
896
897
|
}
|
897
898
|
}
|
@@ -955,47 +956,35 @@ output: |
|
|
955
956
|
}
|
956
957
|
}
|
957
958
|
|
958
|
-
|
959
|
-
|
960
|
-
|
961
|
-
|
962
|
-
|
963
|
-
|
964
|
-
|
965
|
-
|
966
|
-
|
967
|
-
|
968
|
-
|
969
|
-
|
970
|
-
|
971
|
-
|
972
|
-
|
973
|
-
|
974
|
-
|
975
|
-
|
976
|
-
|
977
|
-
|
978
|
-
|
979
|
-
|
980
|
-
|
981
|
-
|
982
|
-
|
983
|
-
|
984
|
-
|
985
|
-
$(window).scrollTop() == screen_before_scroll
|
986
|
-
) {
|
987
|
-
//
|
988
|
-
// nothing changed on the screen.
|
989
|
-
// the target was already visible.
|
990
|
-
// highlight it to notify the user.
|
991
|
-
//
|
992
|
-
target.effect('highlight', 'slow');
|
993
|
-
}
|
994
|
-
});
|
959
|
+
//
|
960
|
+
// scroll to the tab bar instead of the target
|
961
|
+
// because it contains the title for the target
|
962
|
+
//
|
963
|
+
var scroll_target = target_is_panel ?
|
964
|
+
target.parent('.ui-tabs') : target;
|
965
|
+
|
966
|
+
var screen_before_scroll = $(window).scrollTop();
|
967
|
+
|
968
|
+
$('html, body').animate(
|
969
|
+
{ scrollTop: Math.floor(scroll_target.offset().top) },
|
970
|
+
'slow', 'swing', function() {
|
971
|
+
var screen_after_scroll = $(window).scrollTop();
|
972
|
+
|
973
|
+
set_hash(hash, target_is_panel);
|
974
|
+
|
975
|
+
if (
|
976
|
+
!target_initially_hidden &&
|
977
|
+
screen_after_scroll == screen_before_scroll
|
978
|
+
) {
|
979
|
+
//
|
980
|
+
// nothing changed on the screen.
|
981
|
+
// the target was already visible.
|
982
|
+
// highlight it to notify the user.
|
983
|
+
//
|
984
|
+
target.effect('highlight', 'slow');
|
985
|
+
}
|
995
986
|
}
|
996
|
-
|
997
|
-
|
998
|
-
scroll_to_target_and_set_hash();
|
987
|
+
);
|
999
988
|
}
|
1000
989
|
}
|
1001
990
|
|
@@ -1277,6 +1266,13 @@ styles: # these are SASS templates
|
|
1277
1266
|
code.para
|
1278
1267
|
white-space: pre
|
1279
1268
|
|
1269
|
+
ins > pre
|
1270
|
+
text-decoration: none
|
1271
|
+
|
1272
|
+
ins
|
1273
|
+
// for IE only, because the above "ins > pre" does not work
|
1274
|
+
.text-decoration: none
|
1275
|
+
|
1280
1276
|
|
1281
1277
|
a > img
|
1282
1278
|
border: none
|
data/lib/erbook.rb
CHANGED
@@ -9,10 +9,10 @@ require 'inochi'
|
|
9
9
|
|
10
10
|
Inochi.init :ERBook,
|
11
11
|
:program => 'erbook',
|
12
|
-
:version => '7.1.
|
13
|
-
:release => '2009-
|
12
|
+
:version => '7.1.1',
|
13
|
+
:release => '2009-09-06',
|
14
14
|
:website => 'http://snk.tuxfamily.org/lib/erbook/',
|
15
|
-
:tagline => '
|
15
|
+
:tagline => 'Write books, manuals, and documents in eRuby',
|
16
16
|
:require => {
|
17
17
|
'ember' => '~> 0', # for eRuby template processing
|
18
18
|
'maruku' => '~> 0.5', # for Markdown to XHTML conversion
|