erbook 7.3.0 → 8.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/doc/HelloWorld.spec +9 -10
- data/doc/api/classes/ERBook/Document.html +50 -38
- data/doc/api/classes/ERBook/Document/Node.html +185 -8
- 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/document_rb.html +1 -1
- data/doc/api/files/lib/erbook/to_xhtml_rb.html +2 -2
- data/doc/api/files/lib/erbook_rb.html +1 -1
- data/doc/api/panel/search_index.js +1 -1
- data/doc/formats.erb +196 -61
- data/doc/history.erb +45 -0
- data/doc/index.html +608 -537
- data/doc/intro.erb +1 -1
- data/doc/setup.erb +66 -38
- data/doc/theory.erb +292 -61
- data/doc/usage.erb +1 -1
- data/fmt/xhtml.yaml +139 -150
- data/lib/erbook.rb +2 -2
- data/lib/erbook/document.rb +62 -26
- metadata +5 -5
data/doc/usage.erb
CHANGED
@@ -24,7 +24,7 @@
|
|
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 "Serve XHTML as HTML for Microsoft web browsers"
|
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
|
|
data/fmt/xhtml.yaml
CHANGED
@@ -201,21 +201,31 @@ code: |
|
|
201
201
|
atts[:src] = ERBook.base_64_embed_image_data(data, format)
|
202
202
|
"<img#{atts.to_xml_atts}/>"
|
203
203
|
end
|
204
|
-
end
|
205
204
|
|
206
|
-
class Document::Node
|
207
205
|
##
|
208
|
-
#
|
206
|
+
# Allows float nodes to be instantiated implicitly by name.
|
209
207
|
#
|
210
|
-
def
|
211
|
-
|
208
|
+
def method_missing name, *args, &block
|
209
|
+
if name.to_s =~ /!$/
|
210
|
+
args[2] = $` # the type of this float node
|
211
|
+
float(*args, &block)
|
212
|
+
else
|
213
|
+
super
|
214
|
+
end
|
212
215
|
end
|
216
|
+
end
|
213
217
|
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
218
|
+
class Document::Node
|
219
|
+
def index?
|
220
|
+
definition['index']
|
221
|
+
end
|
222
|
+
|
223
|
+
def index_toc?
|
224
|
+
Array(definition['index']).include? 'tree'
|
225
|
+
end
|
226
|
+
|
227
|
+
def index_lof?
|
228
|
+
Array(definition['index']).include? 'list'
|
219
229
|
end
|
220
230
|
|
221
231
|
# utility methods
|
@@ -242,6 +252,13 @@ code: |
|
|
242
252
|
content.join.to_xhtml
|
243
253
|
end
|
244
254
|
|
255
|
+
##
|
256
|
+
# Returns the content of this node as inline XHTML.
|
257
|
+
#
|
258
|
+
def content_inline_xhtml
|
259
|
+
content.join.to_inline_xhtml
|
260
|
+
end
|
261
|
+
|
245
262
|
##
|
246
263
|
# Returns the content of this node as XHTML inside a <div/>.
|
247
264
|
#
|
@@ -257,34 +274,34 @@ code: |
|
|
257
274
|
end
|
258
275
|
|
259
276
|
##
|
260
|
-
# Returns a hyperlink to this node
|
261
|
-
# containing its LaTeX-style index number.
|
277
|
+
# Returns a hyperlink to this node containing its section number.
|
262
278
|
#
|
263
|
-
def
|
264
|
-
|
279
|
+
def section_number_link
|
280
|
+
section_number
|
265
281
|
end
|
266
282
|
|
267
283
|
##
|
268
|
-
# Returns a hyperlink to this node containing its
|
284
|
+
# Returns a hyperlink to this node containing its ordinal number.
|
269
285
|
#
|
270
|
-
def
|
271
|
-
[type_label,
|
286
|
+
def ordinal_number_link
|
287
|
+
[type_label, ordinal_number].compact.join(' ')
|
272
288
|
end
|
273
289
|
|
274
290
|
##
|
275
291
|
# Returns a hyperlink to this node containing
|
276
292
|
# its ocurrence number and its title.
|
277
293
|
#
|
278
|
-
def
|
279
|
-
"#{
|
294
|
+
def ordinal_number_and_title_link #:nodoc:
|
295
|
+
"#{ordinal_number_link}. #{title_link}"
|
280
296
|
end
|
281
297
|
|
282
298
|
##
|
283
|
-
# Returns a hyperlink to this
|
284
|
-
#
|
299
|
+
# Returns a hyperlink to this
|
300
|
+
# node containing its section
|
301
|
+
# number and its title.
|
285
302
|
#
|
286
|
-
def
|
287
|
-
"#{
|
303
|
+
def section_number_and_title_link #:nodoc:
|
304
|
+
"#{section_number_link} #{title_link}"
|
288
305
|
end
|
289
306
|
|
290
307
|
##
|
@@ -293,7 +310,7 @@ code: |
|
|
293
310
|
def navigation
|
294
311
|
self.class.navigation(
|
295
312
|
here_frag,
|
296
|
-
(list_frag if
|
313
|
+
(list_frag if index?),
|
297
314
|
(prev_node.here_frag if prev_node),
|
298
315
|
(next_node.here_frag if next_node)
|
299
316
|
)
|
@@ -322,7 +339,7 @@ code: |
|
|
322
339
|
# configured to appear in the table of contents.
|
323
340
|
#
|
324
341
|
def toc_children
|
325
|
-
children.select {|c| c.
|
342
|
+
children.select {|c| c.index_toc? }
|
326
343
|
end
|
327
344
|
|
328
345
|
HERE_TEXT = ERBook::PHRASES['Focus this segment']
|
@@ -358,7 +375,8 @@ code: |
|
|
358
375
|
# this node will be used as the label instead.
|
359
376
|
#
|
360
377
|
def xref_link label = nil
|
361
|
-
prefix = [type_label,
|
378
|
+
prefix = [type_label, section_number || ordinal_number].
|
379
|
+
compact.join(' ')
|
362
380
|
|
363
381
|
caption =
|
364
382
|
if type == 'reference'
|
@@ -386,7 +404,8 @@ code: |
|
|
386
404
|
|
387
405
|
# make it unique
|
388
406
|
while @@frags.include? frag
|
389
|
-
frag =
|
407
|
+
frag = [frag, section_number || ordinal_number || salt].
|
408
|
+
join(' ').to_uri_fragment
|
390
409
|
end
|
391
410
|
|
392
411
|
@@frags << frag
|
@@ -408,37 +427,23 @@ code: |
|
|
408
427
|
|
409
428
|
|
410
429
|
nodes:
|
411
|
-
#
|
412
|
-
|
413
|
-
|
414
|
-
|
415
|
-
depth: false
|
416
|
-
index: false
|
430
|
+
# theory
|
431
|
+
|
432
|
+
node: &wrapper
|
433
|
+
index: false
|
417
434
|
number: false
|
418
|
-
silent: false
|
419
435
|
inline: true
|
420
|
-
|
436
|
+
silent: false
|
421
437
|
output: <%= @node.content_xhtml %>
|
422
438
|
|
423
|
-
#
|
439
|
+
# structure
|
440
|
+
|
424
441
|
header: &header
|
425
|
-
|
426
|
-
lof: false
|
427
|
-
depth: false
|
428
|
-
index: false
|
429
|
-
number: false
|
442
|
+
<<: *wrapper
|
430
443
|
silent: true
|
431
|
-
inline: true
|
432
|
-
output: <%= @node.content_xhtml %>
|
433
444
|
|
434
445
|
header_outside_above: &header_insert
|
435
|
-
|
436
|
-
lof: false
|
437
|
-
depth: false
|
438
|
-
index: false
|
439
|
-
number: false
|
440
|
-
silent: true
|
441
|
-
inline: true
|
446
|
+
<<: *header
|
442
447
|
output: |
|
443
448
|
<%= @node.parent_tabs_begin %>
|
444
449
|
<div class="<%= @node.type %>" id="<%= @node.here_frag %>"><%= @node.content_xhtml %></div>
|
@@ -455,33 +460,27 @@ nodes:
|
|
455
460
|
footer_outside_below: *header_insert
|
456
461
|
|
457
462
|
abstract:
|
458
|
-
|
459
|
-
lof: false
|
460
|
-
depth: false
|
461
|
-
index: false
|
462
|
-
number: false
|
463
|
-
silent: true
|
464
|
-
bypass: false
|
463
|
+
<<: *wrapper
|
465
464
|
output: |
|
466
465
|
<div id="<%= @node.type_frag %>">
|
467
466
|
<h1 class="title"><%= @node.type_label %></h1>
|
468
467
|
<%= @node.content_xhtml_div %>
|
469
468
|
</div>
|
470
469
|
|
471
|
-
#
|
470
|
+
# organization
|
471
|
+
|
472
472
|
part: &latex
|
473
|
-
|
474
|
-
|
475
|
-
|
476
|
-
index: true
|
477
|
-
number: true
|
473
|
+
index: tree
|
474
|
+
number: section
|
475
|
+
inline: false
|
478
476
|
silent: false
|
477
|
+
params: [title, id]
|
479
478
|
output: |
|
480
479
|
<%= @node.parent_tabs_begin %>
|
481
480
|
<div class="<%= @node.type %>" id="<%= @node.here_frag %>">
|
482
481
|
<%= @node.navigation %>
|
483
482
|
<h1 class="title">
|
484
|
-
<%= @node.type_label %> <%= @node.
|
483
|
+
<%= @node.type_label %> <%= @node.section_number_link %>
|
485
484
|
<br/>
|
486
485
|
<big><%= @node.title_link %></big>
|
487
486
|
</h1>
|
@@ -492,31 +491,22 @@ nodes:
|
|
492
491
|
chapter: *latex
|
493
492
|
|
494
493
|
section:
|
495
|
-
|
496
|
-
lof: false
|
497
|
-
depth: true
|
498
|
-
index: true
|
499
|
-
number: true
|
500
|
-
silent: false
|
494
|
+
<<: *latex
|
501
495
|
output: |
|
502
496
|
<% depth = [6, @node.depth + 1].min %>
|
503
497
|
<%= @node.parent_tabs_begin %>
|
504
498
|
<div class="<%= @node.type %>" id="<%= @node.here_frag %>">
|
505
499
|
<%= @node.navigation %>
|
506
500
|
<h<%= depth %> class="title">
|
507
|
-
<%= @node.
|
501
|
+
<%= @node.section_number_and_title_link %>
|
508
502
|
</h<%= depth %>>
|
509
503
|
<%= @node.content_xhtml_div %>
|
510
504
|
</div>
|
511
505
|
<%= @node.parent_tabs_end %>
|
512
506
|
|
513
507
|
paragraph:
|
514
|
-
|
515
|
-
lof: false
|
516
|
-
depth: false
|
517
|
-
index: false
|
508
|
+
<<: *latex
|
518
509
|
number: false
|
519
|
-
silent: false
|
520
510
|
output: |
|
521
511
|
<%= @node.parent_tabs_begin %>
|
522
512
|
<div class="<%= @node.type %>" id="<%= @node.here_frag %>">
|
@@ -526,107 +516,104 @@ nodes:
|
|
526
516
|
</div>
|
527
517
|
<%= @node.parent_tabs_end %>
|
528
518
|
|
529
|
-
#
|
530
|
-
|
531
|
-
|
532
|
-
|
533
|
-
|
534
|
-
|
535
|
-
|
519
|
+
# arbitrary floats
|
520
|
+
# see also http://www.sagehill.net/docbookxsl/FormalTitles.html
|
521
|
+
|
522
|
+
float:
|
523
|
+
index: list
|
524
|
+
number: ordinal
|
525
|
+
inline: false
|
536
526
|
silent: false
|
527
|
+
params: [title, id, type]
|
537
528
|
output: |
|
538
529
|
<%= @node.parent_tabs_begin %>
|
539
530
|
<div class="<%= @node.type %>" id="<%= @node.here_frag %>">
|
540
531
|
<%= @node.navigation %>
|
541
|
-
<p class="title"><%= @node.
|
542
|
-
|
543
|
-
|
544
|
-
|
545
|
-
|
532
|
+
<p class="title"><%= @node.ordinal_number_and_title_link %></p>
|
533
|
+
<% if ICON_BY_NAME.key? @node.type %>
|
534
|
+
<div class="content">
|
535
|
+
<%= ICON_BY_NAME[@node.type].to_xhtml %>
|
536
|
+
<%= @node.content_xhtml %>
|
537
|
+
</div>
|
538
|
+
<% else %>
|
539
|
+
<%= @node.content_xhtml_div %>
|
540
|
+
<% end %>
|
546
541
|
</div>
|
547
542
|
<%= @node.parent_tabs_end %>
|
548
543
|
|
549
|
-
|
550
|
-
|
551
|
-
|
552
|
-
important: *admonition
|
553
|
-
|
554
|
-
# Auxilary materials (formal blocks)
|
555
|
-
# see http://www.sagehill.net/docbookxsl/FormalTitles.html
|
556
|
-
figure: &formal
|
557
|
-
toc: false
|
558
|
-
lof: true
|
559
|
-
depth: true
|
544
|
+
# tables
|
545
|
+
|
546
|
+
table: &table
|
560
547
|
index: false
|
561
|
-
number:
|
548
|
+
number: false
|
549
|
+
inline: true
|
562
550
|
silent: false
|
551
|
+
params: [xml_atts]
|
563
552
|
output: |
|
564
|
-
<%=
|
565
|
-
|
566
|
-
|
567
|
-
|
568
|
-
|
569
|
-
|
570
|
-
|
553
|
+
<table border="1"<%=
|
554
|
+
(@node.xml_atts || {}).to_xml_atts
|
555
|
+
%>><%= @node.content_xhtml %></table>
|
556
|
+
|
557
|
+
thead: &table_child
|
558
|
+
<<: *table
|
559
|
+
output: |
|
560
|
+
<<%= @node.type %><%=
|
561
|
+
(@node.xml_atts || {}).to_xml_atts
|
562
|
+
%>><%= @node.content_inline_xhtml %></<%= @node.type %>>
|
571
563
|
|
572
|
-
|
573
|
-
|
574
|
-
|
575
|
-
|
564
|
+
tbody: *table_child
|
565
|
+
tfoot: *table_child
|
566
|
+
th: *table_child
|
567
|
+
tr: *table_child
|
568
|
+
td: *table_child
|
576
569
|
|
577
570
|
# cross-references
|
578
571
|
xref:
|
579
|
-
|
580
|
-
lof: false
|
581
|
-
depth: true
|
582
|
-
index: false
|
572
|
+
index: false
|
583
573
|
number: false
|
584
|
-
silent: false
|
585
574
|
inline: true
|
575
|
+
silent: false
|
576
|
+
params: [query, label]
|
586
577
|
output: |
|
587
578
|
<%=
|
588
|
-
query, label = @node.args
|
589
|
-
|
590
579
|
scope = @nodes.select {|n| n.content }
|
591
|
-
target = scope.find {|n| n.id == query } || # id has
|
592
|
-
scope.find {|n| n.title == query }
|
580
|
+
target = scope.find {|n| n.id == @node.query } || # id has priority
|
581
|
+
scope.find {|n| n.title == @node.query }
|
593
582
|
|
594
583
|
if target
|
595
|
-
target.xref_link label
|
584
|
+
target.xref_link @node.label
|
596
585
|
else
|
597
|
-
raise ArgumentError, "invalid cross-reference to #{@node.
|
586
|
+
raise ArgumentError, "invalid cross-reference to #{@node.query.inspect}", @node.backtrace
|
598
587
|
end
|
599
588
|
%>
|
600
589
|
|
601
|
-
#
|
602
|
-
|
603
|
-
|
604
|
-
|
605
|
-
|
606
|
-
|
607
|
-
number: true
|
590
|
+
# bibliography
|
591
|
+
|
592
|
+
reference: &reference
|
593
|
+
index: false
|
594
|
+
number: ordinal
|
595
|
+
inline: false
|
608
596
|
silent: true
|
609
|
-
|
597
|
+
params: [title, id]
|
610
598
|
|
611
599
|
cite:
|
612
|
-
|
613
|
-
lof: false
|
614
|
-
depth: false
|
615
|
-
index: false
|
600
|
+
index: false
|
616
601
|
number: false
|
617
|
-
silent: false
|
618
602
|
inline: true
|
603
|
+
silent: false
|
604
|
+
params: [target]
|
619
605
|
output: |
|
620
606
|
<%=
|
621
|
-
target = @nodes_by_type['reference'].find
|
607
|
+
target = @nodes_by_type['reference'].find do |n|
|
608
|
+
n.title == @node.target
|
609
|
+
end
|
622
610
|
|
623
611
|
if target
|
624
612
|
'<sup>[%s]</sup>' % [
|
625
|
-
target.xref_link(target.
|
626
|
-
|
627
|
-
].join(', ')
|
613
|
+
target.xref_link(target.ordinal_number), *@node.arguments
|
614
|
+
].compact.join(', ')
|
628
615
|
else
|
629
|
-
raise ArgumentError, "invalid citation for #{@node.
|
616
|
+
raise ArgumentError, "invalid citation for #{@node.target.inspect}", @node.backtrace
|
630
617
|
end
|
631
618
|
%>
|
632
619
|
|
@@ -652,9 +639,9 @@ output: |
|
|
652
639
|
nested = n.children.inject('') {|s,c| s << toc_builder[c] }
|
653
640
|
nested = nil if nested.empty?
|
654
641
|
|
655
|
-
if n.
|
642
|
+
if n.index_toc?
|
656
643
|
entry = '%s<a id="%s" href="#%s">%s</a>' % [
|
657
|
-
(n.
|
644
|
+
(n.section_number.to_s + ' ' if n.section_number),
|
658
645
|
n.list_frag,
|
659
646
|
n.here_frag,
|
660
647
|
n.title.to_s.to_inline_xhtml
|
@@ -669,17 +656,19 @@ output: |
|
|
669
656
|
toc = @roots.inject('') {|s,n| s << toc_builder[n] }
|
670
657
|
|
671
658
|
# compute list of figures
|
672
|
-
|
673
|
-
|
674
|
-
|
675
|
-
|
676
|
-
nodes = @nodes_by_type[name]
|
677
|
-
lof_enums[name] = nodes unless nodes.empty?
|
659
|
+
lof_nodes_by_type = Hash.new {|h,k| h[k] = [] }
|
660
|
+
@nodes.each do |node|
|
661
|
+
if node.index_lof?
|
662
|
+
lof_nodes_by_type[node.type] << node
|
678
663
|
end
|
679
664
|
end
|
680
665
|
|
681
|
-
|
666
|
+
lof_enums = {} # type => nodes
|
667
|
+
lof_nodes_by_type.each do |type, nodes|
|
668
|
+
lof_enums[type] = nodes unless nodes.empty?
|
669
|
+
end
|
682
670
|
|
671
|
+
lof_sections_frag_and_label = []
|
683
672
|
lof = lof_enums.sort.map do |type, nodes|
|
684
673
|
nested = nodes.map do |n|
|
685
674
|
%{<li><a id="#{n.list_frag}" href="##{n.here_frag}">#{n.title.to_s.to_inline_xhtml}</a></li>}
|
@@ -878,7 +867,7 @@ output: |
|
|
878
867
|
<div id="__doc__" class="tabs">
|
879
868
|
<h1 style="display: none"><%= ERBook::PHRASES['Document'] %></h1>
|
880
869
|
<ul>
|
881
|
-
% @roots.select {|n| n.
|
870
|
+
% @roots.select {|n| n.index_toc? }.each do |n|
|
882
871
|
<li><a href="#<%= n.here_frag %>"><%= n.title.to_s.to_inline_xhtml %></a></li>
|
883
872
|
</ul>
|
884
873
|
|