review 4.2.0 → 5.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.
Files changed (165) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ruby-win.yml +11 -5
  3. data/.rubocop.yml +113 -24
  4. data/NEWS.ja.md +94 -0
  5. data/NEWS.md +94 -0
  6. data/bin/review-catalog-converter +1 -1
  7. data/bin/review-check +2 -4
  8. data/bin/review-checkdep +1 -1
  9. data/bin/review-compile +8 -14
  10. data/bin/review-validate +1 -1
  11. data/doc/config.yml.sample +4 -1
  12. data/doc/config.yml.sample-simple +1 -1
  13. data/doc/format.ja.md +83 -4
  14. data/doc/format.md +84 -7
  15. data/doc/makeindex.ja.md +2 -2
  16. data/doc/quickstart.ja.md +3 -3
  17. data/doc/quickstart.md +2 -2
  18. data/lib/epubmaker/content.rb +3 -2
  19. data/lib/epubmaker/epubcommon.rb +33 -25
  20. data/lib/epubmaker/epubv2.rb +5 -6
  21. data/lib/epubmaker/epubv3.rb +20 -18
  22. data/lib/review/book.rb +2 -2
  23. data/lib/review/book/base.rb +61 -25
  24. data/lib/review/book/bib.rb +21 -0
  25. data/lib/review/book/book_unit.rb +155 -0
  26. data/lib/review/book/chapter.rb +30 -26
  27. data/lib/review/book/index.rb +23 -185
  28. data/lib/review/book/index/item.rb +7 -1
  29. data/lib/review/book/part.rb +21 -9
  30. data/lib/review/book/volume.rb +1 -1
  31. data/lib/review/builder.rb +68 -13
  32. data/lib/review/catalog.rb +2 -2
  33. data/lib/review/compiler.rb +159 -73
  34. data/lib/review/configure.rb +22 -1
  35. data/lib/review/converter.rb +1 -1
  36. data/lib/review/epub2html.rb +6 -1
  37. data/lib/review/epubmaker.rb +12 -23
  38. data/lib/review/htmlbuilder.rb +36 -7
  39. data/lib/review/htmlutils.rb +7 -10
  40. data/lib/review/i18n.rb +1 -1
  41. data/lib/review/idgxmlbuilder.rb +51 -6
  42. data/lib/review/idgxmlmaker.rb +9 -14
  43. data/lib/review/index_builder.rb +653 -0
  44. data/lib/review/init.rb +5 -13
  45. data/lib/review/latexbuilder.rb +65 -4
  46. data/lib/review/logger.rb +2 -2
  47. data/lib/review/makerhelper.rb +11 -0
  48. data/lib/review/markdownbuilder.rb +19 -1
  49. data/lib/review/pdfmaker.rb +17 -36
  50. data/lib/review/plaintextbuilder.rb +48 -2
  51. data/lib/review/preprocessor.rb +5 -5
  52. data/lib/review/rstbuilder.rb +25 -6
  53. data/lib/review/sec_counter.rb +13 -0
  54. data/lib/review/textmaker.rb +4 -12
  55. data/lib/review/tocprinter.rb +2 -3
  56. data/lib/review/topbuilder.rb +26 -0
  57. data/lib/review/update.rb +7 -7
  58. data/lib/review/version.rb +1 -1
  59. data/lib/review/volumeprinter.rb +2 -3
  60. data/lib/review/webmaker.rb +9 -20
  61. data/review.gemspec +2 -2
  62. data/samples/sample-book/src/config.yml +1 -1
  63. data/samples/syntax-book/Gemfile +1 -1
  64. data/samples/syntax-book/config.yml +1 -1
  65. data/templates/latex/config.erb +27 -23
  66. data/templates/latex/review-jlreq/README.md +3 -1
  67. data/templates/latex/review-jlreq/review-base.sty +31 -15
  68. data/templates/latex/review-jlreq/review-jlreq.cls +8 -24
  69. data/templates/latex/review-jsbook/README.md +7 -5
  70. data/templates/latex/review-jsbook/review-base.sty +34 -16
  71. data/templates/latex/review-jsbook/review-jsbook.cls +4 -2
  72. data/templates/web/html/layout-html5.html.erb +1 -1
  73. data/test/assets/test_template.tex +3 -3
  74. data/test/assets/test_template_backmatter.tex +3 -3
  75. data/test/book_test_helper.rb +11 -5
  76. data/test/test_book.rb +54 -63
  77. data/test/test_book_chapter.rb +93 -52
  78. data/test/test_builder.rb +24 -15
  79. data/test/test_converter.rb +1 -0
  80. data/test/test_epub3maker.rb +2 -2
  81. data/test/test_epubmaker.rb +8 -0
  82. data/test/test_helper.rb +4 -1
  83. data/test/test_htmlbuilder.rb +627 -56
  84. data/test/test_htmlutils.rb +0 -12
  85. data/test/test_i18n.rb +33 -33
  86. data/test/test_idgxmlbuilder.rb +358 -11
  87. data/test/test_idgxmlmaker_cmd.rb +1 -1
  88. data/test/test_index.rb +62 -52
  89. data/test/test_indexbuilder.rb +52 -0
  90. data/test/test_latexbuilder.rb +547 -10
  91. data/test/test_latexbuilder_v2.rb +43 -5
  92. data/test/test_logger.rb +7 -7
  93. data/test/test_makerhelper.rb +0 -12
  94. data/test/test_markdownbuilder.rb +3 -0
  95. data/test/test_pdfmaker.rb +13 -12
  96. data/test/test_pdfmaker_cmd.rb +1 -1
  97. data/test/test_plaintextbuilder.rb +422 -7
  98. data/test/test_review_ext.rb +2 -1
  99. data/test/test_rstbuilder.rb +25 -1
  100. data/test/test_sec_counter.rb +156 -0
  101. data/test/test_textmaker_cmd.rb +1 -1
  102. data/test/test_topbuilder.rb +187 -10
  103. data/test/test_update.rb +10 -10
  104. data/test/test_webtocprinter.rb +12 -12
  105. data/vendor/gentombow/LICENSE +1 -1
  106. data/vendor/gentombow/Makefile +0 -1
  107. data/vendor/gentombow/bounddvi-en.pdf +0 -0
  108. data/vendor/gentombow/bounddvi-en.tex +1 -0
  109. data/vendor/gentombow/bounddvi.pdf +0 -0
  110. data/vendor/gentombow/bounddvi.sty +30 -7
  111. data/vendor/gentombow/bounddvi.tex +1 -0
  112. data/vendor/gentombow/create_archive.sh +1 -0
  113. data/vendor/gentombow/gentombow-ja.pdf +0 -0
  114. data/vendor/gentombow/gentombow-ja.tex +9 -0
  115. data/vendor/gentombow/gentombow.pdf +0 -0
  116. data/vendor/gentombow/gentombow.sty +32 -10
  117. data/vendor/gentombow/gentombow.tex +8 -0
  118. data/vendor/gentombow/tests/gentombow-01-pdfx.tex +8 -0
  119. data/vendor/gentombow/tests/gentombow-02-pdfx.tex +8 -0
  120. data/vendor/jsclasses/Makefile +3 -2
  121. data/vendor/jsclasses/create_archive.sh +5 -5
  122. data/vendor/jsclasses/jis/Makefile +3 -2
  123. data/vendor/jsclasses/jis/jsarticle.cls +22 -18
  124. data/vendor/jsclasses/jis/jsbook.cls +22 -18
  125. data/vendor/jsclasses/jis/jsclasses.dtx +94 -13
  126. data/vendor/jsclasses/jis/jsclasses.ins +15 -5
  127. data/vendor/jsclasses/jis/jslogo.ins +9 -0
  128. data/vendor/jsclasses/jis/jslogo.sty +1 -13
  129. data/vendor/jsclasses/jis/jspf.cls +22 -18
  130. data/vendor/jsclasses/jis/jsreport.cls +22 -18
  131. data/vendor/jsclasses/jis/jsverb.ins +9 -0
  132. data/vendor/jsclasses/jis/jsverb.sty +1 -13
  133. data/vendor/jsclasses/jis/kiyou.cls +22 -18
  134. data/vendor/jsclasses/jis/minijs.sty +65 -22
  135. data/vendor/jsclasses/jis/okumacro.ins +9 -0
  136. data/vendor/jsclasses/jis/okumacro.sty +1 -13
  137. data/vendor/jsclasses/jis/okuverb.ins +9 -0
  138. data/vendor/jsclasses/jis/okuverb.sty +1 -13
  139. data/vendor/jsclasses/jis/winjis.sty +23 -19
  140. data/vendor/jsclasses/jsarticle.cls +22 -18
  141. data/vendor/jsclasses/jsbook.cls +22 -18
  142. data/vendor/jsclasses/jsclasses.dtx +94 -13
  143. data/vendor/jsclasses/jsclasses.ins +15 -5
  144. data/vendor/jsclasses/jsclasses.pdf +0 -0
  145. data/vendor/jsclasses/jslogo.ins +9 -0
  146. data/vendor/jsclasses/jslogo.pdf +0 -0
  147. data/vendor/jsclasses/jslogo.sty +1 -13
  148. data/vendor/jsclasses/jspf.cls +22 -18
  149. data/vendor/jsclasses/jsreport.cls +22 -18
  150. data/vendor/jsclasses/jsverb.ins +9 -0
  151. data/vendor/jsclasses/jsverb.pdf +0 -0
  152. data/vendor/jsclasses/jsverb.sty +1 -13
  153. data/vendor/jsclasses/kiyou.cls +22 -18
  154. data/vendor/jsclasses/minijs.sty +68 -22
  155. data/vendor/jsclasses/okumacro.ins +9 -0
  156. data/vendor/jsclasses/okumacro.pdf +0 -0
  157. data/vendor/jsclasses/okumacro.sty +1 -13
  158. data/vendor/jsclasses/okuverb.ins +9 -0
  159. data/vendor/jsclasses/okuverb.pdf +0 -0
  160. data/vendor/jsclasses/okuverb.sty +1 -13
  161. data/vendor/jsclasses/tests/relfont.tex +10 -0
  162. data/vendor/jsclasses/winjis.sty +23 -19
  163. metadata +14 -6
  164. data/.rubocop_todo.yml +0 -7
  165. data/lib/review/book/compilable.rb +0 -174
@@ -1,4 +1,13 @@
1
+ \input docstrip
2
+ \preamble
3
+
4
+ Maintained on GitHub: https://github.com/texjporg/jsclasses
5
+
6
+ \endpreamble
7
+
1
8
  \def\batchfile{okumacro.ins}
2
9
  \input docstrip.tex
3
10
  \keepsilent
4
11
  \generateFile{okumacro.sty}{f}{\from{okumacro.dtx}{okumacro}}
12
+
13
+ \endbatchfile
@@ -6,20 +6,8 @@
6
6
  %%
7
7
  %% okumacro.dtx (with options: `okumacro')
8
8
  %%
9
- %% IMPORTANT NOTICE:
9
+ %% Maintained on GitHub: https://github.com/texjporg/jsclasses
10
10
  %%
11
- %% For the copyright see the source file.
12
- %%
13
- %% Any modified versions of this file must be renamed
14
- %% with new filenames distinct from okumacro.sty.
15
- %%
16
- %% For distribution of the original source see the terms
17
- %% for copying and modification in the file okumacro.dtx.
18
- %%
19
- %% This generated file may be distributed as long as the
20
- %% original source files, as listed above, are part of the
21
- %% same distribution. (The sources need not necessarily be
22
- %% in the same archive or directory.)
23
11
  \ifx\epTeXinputencoding\undefined\else
24
12
  \epTeXinputencoding utf8 % ^^A added (2017-10-04)
25
13
  \fi
@@ -1,4 +1,13 @@
1
+ \input docstrip
2
+ \preamble
3
+
4
+ Maintained on GitHub: https://github.com/texjporg/jsclasses
5
+
6
+ \endpreamble
7
+
1
8
  \def\batchfile{okuverb.ins}
2
9
  \input docstrip.tex
3
10
  \keepsilent
4
11
  \generateFile{okuverb.sty}{f}{\from{okuverb.dtx}{okuverb}}
12
+
13
+ \endbatchfile
Binary file
@@ -6,20 +6,8 @@
6
6
  %%
7
7
  %% okuverb.dtx (with options: `okuverb')
8
8
  %%
9
- %% IMPORTANT NOTICE:
9
+ %% Maintained on GitHub: https://github.com/texjporg/jsclasses
10
10
  %%
11
- %% For the copyright see the source file.
12
- %%
13
- %% Any modified versions of this file must be renamed
14
- %% with new filenames distinct from okuverb.sty.
15
- %%
16
- %% For distribution of the original source see the terms
17
- %% for copying and modification in the file okuverb.dtx.
18
- %%
19
- %% This generated file may be distributed as long as the
20
- %% original source files, as listed above, are part of the
21
- %% same distribution. (The sources need not necessarily be
22
- %% in the same archive or directory.)
23
11
  \NeedsTeXFormat{pLaTeX2e}
24
12
  \ProvidesFile{okuverb.sty}[2003/09/03 okumura]
25
13
  \newif\if@yen \@yenfalse
@@ -0,0 +1,10 @@
1
+ \documentclass{jsarticle}
2
+ \begin{document}
3
+
4
+ ad-hocな従属書体のテスト。Serifと明朝
5
+
6
+ \textsf{ad-hocな従属書体のテスト。San-Serifとゴシック}
7
+
8
+ \texttt{ad-hocな従属書体のテスト。Typewriterとゴシック}
9
+
10
+ \end{document}
@@ -8,9 +8,10 @@
8
8
  % both from http://psitau.kitunebi.com/utf.html by psitau
9
9
  %
10
10
  \NeedsTeXFormat{pLaTeX2e}
11
- \ProvidesPackage{winjis}[2018/02/04 okumura, texjporg]
11
+ \ProvidesPackage{winjis}
12
+ [2020/10/04 okumura, texjporg]
12
13
  %
13
- % if upLaTeX detected, abort loading this package
14
+ %% if upLaTeX detected, abort loading this package
14
15
  \ifnum \ifx\ucs\@undefined\z@\else\ucs"3000 \fi ="3000 % upTeX
15
16
  \PackageError{winjis}{This package is not required on upLaTeX}
16
17
  {Package `winjis' is meant for using platform-dependent
@@ -20,8 +21,8 @@
20
21
  \expandafter\endinput
21
22
  \fi
22
23
  %
23
- % if jsclasses (<= 2017) loaded, winjis option is available;
24
- % abort loading this package
24
+ %% if jsclasses (<= 2017) loaded, winjis option is available;
25
+ %% abort loading this package
25
26
  \ifx\winjistrue\@undefined\else
26
27
  \PackageWarning{winjis}{%
27
28
  Your version of jsclasses should have\MessageBreak
@@ -29,10 +30,10 @@
29
30
  \expandafter\endinput
30
31
  \fi
31
32
  %
32
- % "fake" jsarticle
33
+ %% "fake" jsarticle
33
34
  \expandafter\def\csname ver@jsarticle.cls\endcsname{}
34
35
  %
35
- % use winjis; force jsclasses-style scaling
36
+ %% use winjis; force jsclasses-style scaling
36
37
  \@for\@tempa:=5,6,7,8,9,10,10.95,12,14.4,17.28,20.74,24.88\do{%
37
38
  \expandafter\let\csname JY1/mc/m/n/\@tempa\endcsname\relax
38
39
  \expandafter\let\csname JY1/gt/m/n/\@tempa\endcsname\relax
@@ -55,24 +56,15 @@
55
56
  \DeclareFontShape{JT1}{gt}{m}{n}{<-> s * [0.93885] winjisg-v}{}
56
57
  \fi
57
58
  %
58
- % if jsclasses loaded, the rest of this package is already done;
59
- % exit now
59
+ %% if jsclasses loaded, the rest of this package is already done;
60
+ %% exit now
60
61
  \ifx\@jsc@uplatextrue\@undefined\else
61
62
  \normalsize
62
63
  \expandafter\endinput
63
64
  \fi
64
65
  %
65
- % \@setfontsize with \parindent and \(x)kanjiskip settings
66
- \def\@setfontsize#1#2#3{\@nomath#1%
67
- \ifx\protect\@typeset@protect
68
- \let\@currsize#1%
69
- \fi
70
- \fontsize{#2}{#3}\selectfont
71
- \ifdim\parindent>\z@ \parindent=1zw \fi
72
- \kanjiskip=0zw plus .1zw minus .01zw
73
- \xkanjiskip=0.25em plus 0.15em minus 0.06em}
74
- %
75
- % ad-hoc "relation font"
66
+ %% ad-hoc "relation font"
67
+ %% does not support LaTeX2e 2020-02-02 or later!
76
68
  \DeclareRobustCommand\rmfamily
77
69
  {\not@math@alphabet\rmfamily\mathrm
78
70
  \romanfamily\rmdefault\kanjifamily\mcdefault\selectfont}
@@ -82,6 +74,18 @@
82
74
  \DeclareRobustCommand\ttfamily
83
75
  {\not@math@alphabet\ttfamily\mathtt
84
76
  \romanfamily\ttdefault\kanjifamily\gtdefault\selectfont}
77
+ %
78
+ %% \@setfontsize with \parindent and \(x)kanjiskip settings
79
+ \def\@setfontsize#1#2#3{\@nomath#1%
80
+ \ifx\protect\@typeset@protect
81
+ \let\@currsize#1%
82
+ \fi
83
+ \fontsize{#2}{#3}\selectfont
84
+ \ifdim\parindent>\z@ \parindent=1zw \fi
85
+ \kanjiskip=0zw plus .1zw minus .01zw
86
+ \xkanjiskip=0.25em plus 0.15em minus 0.06em}
87
+ %
88
+ %% initialize
85
89
  \normalsize
86
90
  %
87
91
  \endinput
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: review
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.2.0
4
+ version: 5.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - kmuto
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2020-06-29 00:00:00.000000000 Z
12
+ date: 2020-10-29 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: image_size
@@ -87,14 +87,14 @@ dependencies:
87
87
  requirements:
88
88
  - - "~>"
89
89
  - !ruby/object:Gem::Version
90
- version: 0.77.0
90
+ version: 0.92.0
91
91
  type: :development
92
92
  prerelease: false
93
93
  version_requirements: !ruby/object:Gem::Requirement
94
94
  requirements:
95
95
  - - "~>"
96
96
  - !ruby/object:Gem::Version
97
- version: 0.77.0
97
+ version: 0.92.0
98
98
  - !ruby/object:Gem::Dependency
99
99
  name: rubocop-performance
100
100
  requirement: !ruby/object:Gem::Requirement
@@ -179,7 +179,6 @@ files:
179
179
  - ".github/workflows/ruby.yml"
180
180
  - ".gitignore"
181
181
  - ".rubocop.yml"
182
- - ".rubocop_todo.yml"
183
182
  - ".travis.yml"
184
183
  - COPYING
185
184
  - Dockerfile
@@ -254,8 +253,9 @@ files:
254
253
  - lib/review.rb
255
254
  - lib/review/book.rb
256
255
  - lib/review/book/base.rb
256
+ - lib/review/book/bib.rb
257
+ - lib/review/book/book_unit.rb
257
258
  - lib/review/book/chapter.rb
258
- - lib/review/book/compilable.rb
259
259
  - lib/review/book/image_finder.rb
260
260
  - lib/review/book/index.rb
261
261
  - lib/review/book/index/item.rb
@@ -283,6 +283,7 @@ files:
283
283
  - lib/review/i18n.yml
284
284
  - lib/review/idgxmlbuilder.rb
285
285
  - lib/review/idgxmlmaker.rb
286
+ - lib/review/index_builder.rb
286
287
  - lib/review/init-web/finish.html
287
288
  - lib/review/init-web/index.html
288
289
  - lib/review/init-web/review-layout-design.js
@@ -428,6 +429,7 @@ files:
428
429
  - test/test_idgxmlmaker_cmd.rb
429
430
  - test/test_image_finder.rb
430
431
  - test/test_index.rb
432
+ - test/test_indexbuilder.rb
431
433
  - test/test_latexbuilder.rb
432
434
  - test/test_latexbuilder_v2.rb
433
435
  - test/test_lineinput.rb
@@ -442,6 +444,7 @@ files:
442
444
  - test/test_preprocessor.rb
443
445
  - test/test_review_ext.rb
444
446
  - test/test_rstbuilder.rb
447
+ - test/test_sec_counter.rb
445
448
  - test/test_template.rb
446
449
  - test/test_textmaker_cmd.rb
447
450
  - test/test_textutils.rb
@@ -476,6 +479,8 @@ files:
476
479
  - vendor/gentombow/tests/bounddvi-05a-geodvips.tex
477
480
  - vendor/gentombow/tests/bounddvi-06-geodvipdfmx.tex
478
481
  - vendor/gentombow/tests/bounddvi-06a-geodvipdfmx.tex
482
+ - vendor/gentombow/tests/gentombow-01-pdfx.tex
483
+ - vendor/gentombow/tests/gentombow-02-pdfx.tex
479
484
  - vendor/gentombow/tests/pxgentombow-01-usage.tex
480
485
  - vendor/gentombow/tests/pxgentombow-02-js.tex
481
486
  - vendor/gentombow/tests/pxgentombow-02a-js-error.tex
@@ -534,6 +539,7 @@ files:
534
539
  - vendor/jsclasses/okuverb.ins
535
540
  - vendor/jsclasses/okuverb.pdf
536
541
  - vendor/jsclasses/okuverb.sty
542
+ - vendor/jsclasses/tests/relfont.tex
537
543
  - vendor/jsclasses/winjis.sty
538
544
  - vendor/jumoline/README
539
545
  - vendor/jumoline/jumoline.dtx
@@ -602,6 +608,7 @@ test_files:
602
608
  - test/test_idgxmlmaker_cmd.rb
603
609
  - test/test_image_finder.rb
604
610
  - test/test_index.rb
611
+ - test/test_indexbuilder.rb
605
612
  - test/test_latexbuilder.rb
606
613
  - test/test_latexbuilder_v2.rb
607
614
  - test/test_lineinput.rb
@@ -616,6 +623,7 @@ test_files:
616
623
  - test/test_preprocessor.rb
617
624
  - test/test_review_ext.rb
618
625
  - test/test_rstbuilder.rb
626
+ - test/test_sec_counter.rb
619
627
  - test/test_template.rb
620
628
  - test/test_textmaker_cmd.rb
621
629
  - test/test_textutils.rb
@@ -1,7 +0,0 @@
1
- # This configuration was generated by
2
- # `rubocop --auto-gen-config`
3
- # on 2017-02-18 14:39:22 +0900 using RuboCop version 0.47.1.
4
- # The point is for the user to remove these configuration records
5
- # one by one as the offenses are removed from the code base.
6
- # Note that changes in the inspected code, or installation of new
7
- # versions of RuboCop, may require this file to be generated again.
@@ -1,174 +0,0 @@
1
- # Copyright (c) 2009-2017 Minero Aoki, Kenshi Muto
2
- # 2002-2008 Minero Aoki
3
- #
4
- # This program is free software.
5
- # You can distribute or modify this program under the terms of
6
- # the GNU LGPL, Lesser General Public License version 2.1.
7
- # For details of the GNU LGPL, see the file "COPYING".
8
- #
9
- require 'review/textutils'
10
-
11
- module ReVIEW
12
- module Book
13
- module Compilable
14
- include TextUtils
15
- attr_reader :book
16
- attr_reader :path
17
- attr_accessor :content
18
-
19
- def dirname
20
- return nil unless @path
21
- File.dirname(@path)
22
- end
23
-
24
- def basename
25
- return nil unless @path
26
- File.basename(@path)
27
- end
28
-
29
- def name
30
- return nil unless @name
31
- File.basename(@name, '.*')
32
- end
33
-
34
- alias_method :id, :name
35
-
36
- def title
37
- return @title if @title
38
-
39
- @title = ''
40
- return @title unless content
41
- content.each_line do |line|
42
- if line =~ /\A=+/
43
- @title = line.sub(/\A=+(\[.+?\])?(\{.+?\})?/, '').strip
44
- break
45
- end
46
- end
47
- @title
48
- end
49
-
50
- def size
51
- content.size
52
- end
53
-
54
- def volume
55
- @volume ||= Volume.count_file(path)
56
- end
57
-
58
- def lines
59
- # FIXME: we cannot duplicate Enumerator on ruby 1.9 HEAD
60
- (@lines ||= content.lines.to_a).dup
61
- end
62
-
63
- def list(id)
64
- list_index[id]
65
- end
66
-
67
- def list_index
68
- @list_index ||= ListIndex.parse(lines)
69
- @list_index
70
- end
71
-
72
- def table(id)
73
- table_index[id]
74
- end
75
-
76
- def table_index
77
- @table_index ||= TableIndex.parse(lines)
78
- @table_index
79
- end
80
-
81
- def equation(id)
82
- equation_index[id]
83
- end
84
-
85
- def equation_index
86
- @equation_index ||= EquationIndex.parse(lines)
87
- @equation_index
88
- end
89
-
90
- def footnote(id)
91
- footnote_index[id]
92
- end
93
-
94
- def footnote_index
95
- @footnote_index ||= FootnoteIndex.parse(lines)
96
- @footnote_index
97
- end
98
-
99
- def image(id)
100
- return image_index[id] if image_index.key?(id)
101
- return icon_index[id] if icon_index.key?(id)
102
- return numberless_image_index[id] if numberless_image_index.key?(id)
103
- indepimage_index[id]
104
- end
105
-
106
- def numberless_image_index
107
- @numberless_image_index ||=
108
- NumberlessImageIndex.parse(lines, id,
109
- @book.imagedir,
110
- @book.image_types, @book.config['builder'])
111
- end
112
-
113
- def image_index
114
- @image_index ||= ImageIndex.parse(lines, id,
115
- @book.imagedir,
116
- @book.image_types, @book.config['builder'])
117
- @image_index
118
- end
119
-
120
- def icon_index
121
- @icon_index ||= IconIndex.parse(lines, id,
122
- @book.imagedir,
123
- @book.image_types, @book.config['builder'])
124
- @icon_index
125
- end
126
-
127
- def indepimage_index
128
- @indepimage_index ||=
129
- IndepImageIndex.parse(lines, id,
130
- @book.imagedir,
131
- @book.image_types, @book.config['builder'])
132
- end
133
-
134
- def bibpaper(id)
135
- bibpaper_index[id]
136
- end
137
-
138
- def bibpaper_index
139
- raise FileNotFound, "no such bib file: #{@book.bib_file}" unless @book.bib_exist?
140
- @bibpaper_index ||= BibpaperIndex.parse(@book.read_bib.lines.to_a)
141
- @bibpaper_index
142
- end
143
-
144
- def headline(caption)
145
- headline_index[caption]
146
- end
147
-
148
- def headline_index
149
- @headline_index ||= HeadlineIndex.parse(lines, self)
150
- end
151
-
152
- def column(id)
153
- column_index[id]
154
- end
155
-
156
- def column_index
157
- @column_index ||= ColumnIndex.parse(lines)
158
- end
159
-
160
- def next_chapter
161
- book.next_chapter(self)
162
- end
163
-
164
- def prev_chapter
165
- book.prev_chapter(self)
166
- end
167
-
168
- def image_bound?(item_id)
169
- item = self.image(item_id)
170
- item.path
171
- end
172
- end
173
- end
174
- end