review 4.0.0 → 5.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (268) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ruby-tex.yml +31 -0
  3. data/.github/workflows/ruby-win.yml +45 -0
  4. data/.github/workflows/ruby.yml +27 -0
  5. data/.rubocop.yml +141 -38
  6. data/Dockerfile +21 -5
  7. data/NEWS.ja.md +338 -1
  8. data/NEWS.md +339 -2
  9. data/README.md +11 -7
  10. data/Rakefile +7 -2
  11. data/appveyor.yml +0 -20
  12. data/bin/review +2 -4
  13. data/bin/review-catalog-converter +4 -4
  14. data/bin/review-check +8 -12
  15. data/bin/review-checkdep +2 -5
  16. data/bin/review-compile +11 -20
  17. data/bin/review-epub2html +1 -4
  18. data/bin/review-epubmaker +3 -4
  19. data/bin/review-idgxmlmaker +1 -3
  20. data/bin/review-index +5 -86
  21. data/bin/review-init +1 -4
  22. data/bin/review-pdfmaker +1 -3
  23. data/bin/review-preproc +3 -5
  24. data/bin/review-textmaker +1 -3
  25. data/bin/review-update +1 -4
  26. data/bin/review-validate +5 -5
  27. data/bin/review-vol +5 -82
  28. data/bin/review-webmaker +1 -3
  29. data/doc/config.yml.sample +55 -12
  30. data/doc/config.yml.sample-simple +4 -3
  31. data/doc/format.ja.md +119 -17
  32. data/doc/format.md +106 -17
  33. data/doc/makeindex.ja.md +2 -2
  34. data/doc/pdfmaker.ja.md +42 -0
  35. data/doc/pdfmaker.md +41 -0
  36. data/doc/quickstart.ja.md +55 -25
  37. data/doc/quickstart.md +47 -17
  38. data/lib/review.rb +1 -1
  39. data/lib/review/book.rb +2 -2
  40. data/lib/review/book/base.rb +69 -30
  41. data/lib/review/book/bib.rb +21 -0
  42. data/lib/review/book/book_unit.rb +158 -0
  43. data/lib/review/book/chapter.rb +33 -26
  44. data/lib/review/book/index.rb +39 -206
  45. data/lib/review/book/index/item.rb +8 -2
  46. data/lib/review/book/page_metric.rb +7 -7
  47. data/lib/review/book/part.rb +26 -11
  48. data/lib/review/book/volume.rb +5 -5
  49. data/lib/review/builder.rb +124 -27
  50. data/lib/review/call_hook.rb +20 -0
  51. data/lib/review/catalog.rb +3 -2
  52. data/lib/review/compiler.rb +197 -91
  53. data/lib/review/configure.rb +95 -9
  54. data/lib/review/converter.rb +1 -1
  55. data/lib/review/epub2html.rb +6 -1
  56. data/lib/review/epubmaker.rb +116 -117
  57. data/lib/review/epubmaker/content.rb +113 -0
  58. data/lib/review/epubmaker/epubcommon.rb +372 -0
  59. data/lib/review/epubmaker/epubv2.rb +178 -0
  60. data/lib/review/epubmaker/epubv3.rb +231 -0
  61. data/lib/review/epubmaker/producer.rb +168 -0
  62. data/lib/review/epubmaker/reviewheaderlistener.rb +12 -2
  63. data/lib/review/epubmaker/zip_exporter.rb +84 -0
  64. data/lib/review/exception.rb +6 -0
  65. data/lib/review/extentions/string.rb +0 -4
  66. data/lib/review/htmlbuilder.rb +132 -87
  67. data/lib/review/htmlutils.rb +8 -11
  68. data/lib/review/i18n.rb +2 -1
  69. data/lib/review/idgxmlbuilder.rb +156 -76
  70. data/lib/review/idgxmlmaker.rb +22 -18
  71. data/lib/review/img_math.rb +245 -0
  72. data/lib/review/index_builder.rb +654 -0
  73. data/lib/review/init.rb +17 -18
  74. data/lib/review/latexbox.rb +58 -0
  75. data/lib/review/latexbuilder.rb +173 -43
  76. data/lib/review/latexutils.rb +9 -1
  77. data/lib/review/lineinput.rb +112 -2
  78. data/lib/review/logger.rb +42 -3
  79. data/lib/review/makerhelper.rb +12 -187
  80. data/lib/review/markdownbuilder.rb +51 -2
  81. data/lib/review/pdfmaker.rb +78 -73
  82. data/lib/review/plaintextbuilder.rb +98 -14
  83. data/lib/review/preprocessor.rb +18 -12
  84. data/lib/review/rstbuilder.rb +28 -9
  85. data/lib/review/sec_counter.rb +14 -0
  86. data/lib/review/template.rb +6 -0
  87. data/lib/review/textmaker.rb +21 -19
  88. data/lib/review/textutils.rb +3 -12
  89. data/lib/review/tocprinter.rb +242 -97
  90. data/lib/review/topbuilder.rb +91 -24
  91. data/lib/review/update.rb +12 -13
  92. data/lib/review/version.rb +1 -1
  93. data/lib/review/volumeprinter.rb +97 -0
  94. data/lib/review/webmaker.rb +34 -33
  95. data/lib/review/webtocprinter.rb +39 -35
  96. data/lib/review/yamlloader.rb +2 -1
  97. data/review.gemspec +5 -3
  98. data/samples/sample-book/src/.gitignore +1 -0
  99. data/samples/sample-book/src/config-ebook.yml +4 -0
  100. data/samples/sample-book/src/config-epub2.yml +1 -1
  101. data/samples/sample-book/src/config-jlreq-ebook.yml +4 -0
  102. data/samples/sample-book/src/config.yml +3 -3
  103. data/samples/sample-book/src/lib/tasks/review.rake +26 -6
  104. data/samples/syntax-book/Gemfile +1 -1
  105. data/samples/syntax-book/ch01.re +3 -1
  106. data/samples/syntax-book/ch02.re +28 -21
  107. data/samples/syntax-book/ch03.re +1 -1
  108. data/samples/syntax-book/config-jlreq-lualatex.yml +4 -0
  109. data/samples/syntax-book/config-print.yml +3 -0
  110. data/samples/syntax-book/config.yml +1 -1
  111. data/samples/syntax-book/images/img3-2.png +0 -0
  112. data/samples/syntax-book/lib/tasks/review.rake +23 -8
  113. data/templates/html/_colophon.html.erb +23 -0
  114. data/templates/html/_colophon_history.html.erb +9 -0
  115. data/templates/html/_cover.html.erb +10 -0
  116. data/templates/html/_part_body.html.erb +6 -0
  117. data/templates/html/_titlepage.html.erb +20 -0
  118. data/templates/html/layout-html5.html.erb +6 -0
  119. data/templates/html/layout-xhtml1.html.erb +6 -0
  120. data/templates/latex/config.erb +41 -29
  121. data/templates/latex/review-jlreq/README.md +3 -1
  122. data/templates/latex/review-jlreq/review-base.sty +47 -22
  123. data/templates/latex/review-jlreq/review-jlreq.cls +25 -24
  124. data/templates/latex/review-jlreq/review-style.sty +6 -1
  125. data/templates/latex/review-jlreq/review-tcbox.sty +348 -0
  126. data/templates/latex/review-jlreq/reviewmacro.sty +5 -0
  127. data/templates/latex/review-jsbook/README.md +7 -5
  128. data/templates/latex/review-jsbook/review-base.sty +47 -21
  129. data/templates/latex/review-jsbook/review-jsbook.cls +12 -2
  130. data/templates/latex/review-jsbook/review-style.sty +6 -1
  131. data/templates/latex/review-jsbook/review-tcbox.sty +348 -0
  132. data/templates/latex/review-jsbook/reviewmacro.sty +5 -0
  133. data/templates/opf/epubv2.opf.erb +7 -7
  134. data/templates/opf/epubv3.opf.erb +7 -7
  135. data/templates/opf/opf_manifest_epubv2.opf.erb +10 -0
  136. data/templates/opf/opf_manifest_epubv3.opf.erb +10 -0
  137. data/templates/opf/opf_metainfo_epubv2.opf.erb +17 -0
  138. data/templates/opf/opf_metainfo_epubv3.opf.erb +49 -0
  139. data/templates/opf/opf_tocx_epubv2.opf.erb +9 -0
  140. data/templates/opf/opf_tocx_epubv3.opf.erb +17 -0
  141. data/templates/web/html/layout-html5.html.erb +9 -8
  142. data/templates/web/html/layout-xhtml1.html.erb +6 -0
  143. data/test/assets/header_listener.html +35 -0
  144. data/test/assets/img_math/img1.png +0 -0
  145. data/test/assets/img_math/img2.png +0 -0
  146. data/test/assets/img_math/img3.png +0 -0
  147. data/test/assets/syntax_book_index_detail.txt +58 -0
  148. data/test/assets/test_template.tex +12 -9
  149. data/test/assets/test_template_backmatter.tex +12 -9
  150. data/test/book_test_helper.rb +11 -5
  151. data/test/run_test.rb +1 -1
  152. data/test/test_book.rb +62 -63
  153. data/test/test_book_chapter.rb +99 -56
  154. data/test/test_book_part.rb +3 -3
  155. data/test/test_builder.rb +24 -15
  156. data/test/test_catalog.rb +1 -0
  157. data/test/test_catalog_converter_cmd.rb +1 -1
  158. data/test/test_converter.rb +1 -0
  159. data/test/test_epub3maker.rb +170 -126
  160. data/test/test_epubmaker.rb +249 -129
  161. data/test/test_epubmaker_cmd.rb +14 -7
  162. data/test/test_helper.rb +23 -11
  163. data/test/test_htmlbuilder.rb +956 -76
  164. data/test/test_htmlutils.rb +0 -12
  165. data/test/test_i18n.rb +33 -33
  166. data/test/test_idgxmlbuilder.rb +568 -10
  167. data/test/test_idgxmlmaker_cmd.rb +50 -0
  168. data/test/test_image_finder.rb +52 -70
  169. data/test/test_img_math.rb +111 -0
  170. data/test/test_index.rb +62 -52
  171. data/test/test_indexbuilder.rb +52 -0
  172. data/test/test_latexbuilder.rb +1056 -30
  173. data/test/test_latexbuilder_v2.rb +52 -12
  174. data/test/test_lineinput.rb +20 -93
  175. data/test/test_logger.rb +7 -7
  176. data/test/test_makerhelper.rb +0 -12
  177. data/test/test_markdownbuilder.rb +32 -0
  178. data/test/test_pdfmaker.rb +100 -11
  179. data/test/test_pdfmaker_cmd.rb +101 -7
  180. data/test/test_plaintextbuilder.rb +531 -25
  181. data/test/test_review_ext.rb +2 -1
  182. data/test/test_reviewheaderlistener.rb +49 -0
  183. data/test/test_rstbuilder.rb +25 -1
  184. data/test/test_sec_counter.rb +156 -0
  185. data/test/test_template.rb +12 -2
  186. data/test/test_textmaker_cmd.rb +58 -0
  187. data/test/test_tocprinter.rb +46 -0
  188. data/test/test_topbuilder.rb +365 -10
  189. data/test/test_update.rb +44 -44
  190. data/test/test_webtocprinter.rb +75 -43
  191. data/test/test_zip_exporter.rb +5 -6
  192. data/vendor/gentombow/LICENSE +1 -1
  193. data/vendor/gentombow/Makefile +0 -1
  194. data/vendor/gentombow/bounddvi-en.pdf +0 -0
  195. data/vendor/gentombow/bounddvi-en.tex +1 -0
  196. data/vendor/gentombow/bounddvi.pdf +0 -0
  197. data/vendor/gentombow/bounddvi.sty +30 -7
  198. data/vendor/gentombow/bounddvi.tex +1 -0
  199. data/vendor/gentombow/create_archive.sh +1 -0
  200. data/vendor/gentombow/gentombow-ja.pdf +0 -0
  201. data/vendor/gentombow/gentombow-ja.tex +9 -0
  202. data/vendor/gentombow/gentombow.pdf +0 -0
  203. data/vendor/gentombow/gentombow.sty +32 -10
  204. data/vendor/gentombow/gentombow.tex +8 -0
  205. data/vendor/gentombow/tests/gentombow-01-pdfx.tex +8 -0
  206. data/vendor/gentombow/tests/gentombow-02-pdfx.tex +8 -0
  207. data/vendor/jsclasses/LICENSE +1 -1
  208. data/vendor/jsclasses/Makefile +3 -2
  209. data/vendor/jsclasses/create_archive.sh +5 -5
  210. data/vendor/jsclasses/jis/Makefile +3 -2
  211. data/vendor/jsclasses/jis/jsarticle.cls +74 -31
  212. data/vendor/jsclasses/jis/jsbook.cls +74 -31
  213. data/vendor/jsclasses/jis/jsclasses.dtx +176 -36
  214. data/vendor/jsclasses/jis/jsclasses.ins +15 -5
  215. data/vendor/jsclasses/jis/jslogo.dtx +4 -4
  216. data/vendor/jsclasses/jis/jslogo.ins +9 -0
  217. data/vendor/jsclasses/jis/jslogo.sty +4 -16
  218. data/vendor/jsclasses/jis/jspf.cls +73 -30
  219. data/vendor/jsclasses/jis/jsreport.cls +74 -31
  220. data/vendor/jsclasses/jis/jsverb.ins +9 -0
  221. data/vendor/jsclasses/jis/jsverb.sty +1 -13
  222. data/vendor/jsclasses/jis/kiyou.cls +74 -31
  223. data/vendor/jsclasses/jis/minijs.sty +65 -22
  224. data/vendor/jsclasses/jis/okumacro.dtx +4 -5
  225. data/vendor/jsclasses/jis/okumacro.ins +9 -0
  226. data/vendor/jsclasses/jis/okumacro.sty +4 -17
  227. data/vendor/jsclasses/jis/okuverb.ins +9 -0
  228. data/vendor/jsclasses/jis/okuverb.sty +1 -13
  229. data/vendor/jsclasses/jis/winjis.sty +23 -19
  230. data/vendor/jsclasses/jsarticle.cls +74 -31
  231. data/vendor/jsclasses/jsbook.cls +74 -31
  232. data/vendor/jsclasses/jsclasses.dtx +176 -36
  233. data/vendor/jsclasses/jsclasses.ins +15 -5
  234. data/vendor/jsclasses/jsclasses.pdf +0 -0
  235. data/vendor/jsclasses/jslogo.dtx +4 -4
  236. data/vendor/jsclasses/jslogo.ins +9 -0
  237. data/vendor/jsclasses/jslogo.pdf +0 -0
  238. data/vendor/jsclasses/jslogo.sty +4 -16
  239. data/vendor/jsclasses/jspf.cls +73 -30
  240. data/vendor/jsclasses/jsreport.cls +74 -31
  241. data/vendor/jsclasses/jsverb.ins +9 -0
  242. data/vendor/jsclasses/jsverb.pdf +0 -0
  243. data/vendor/jsclasses/jsverb.sty +1 -13
  244. data/vendor/jsclasses/kiyou.cls +74 -31
  245. data/vendor/jsclasses/minijs.sty +68 -22
  246. data/vendor/jsclasses/okumacro.dtx +4 -5
  247. data/vendor/jsclasses/okumacro.ins +9 -0
  248. data/vendor/jsclasses/okumacro.pdf +0 -0
  249. data/vendor/jsclasses/okumacro.sty +4 -17
  250. data/vendor/jsclasses/okuverb.ins +9 -0
  251. data/vendor/jsclasses/okuverb.pdf +0 -0
  252. data/vendor/jsclasses/okuverb.sty +1 -13
  253. data/vendor/jsclasses/tests/relfont.tex +10 -0
  254. data/vendor/jsclasses/winjis.sty +23 -19
  255. metadata +109 -20
  256. data/.rubocop_todo.yml +0 -7
  257. data/lib/epubmaker.rb +0 -23
  258. data/lib/epubmaker/content.rb +0 -110
  259. data/lib/epubmaker/epubcommon.rb +0 -441
  260. data/lib/epubmaker/epubv2.rb +0 -143
  261. data/lib/epubmaker/epubv3.rb +0 -233
  262. data/lib/epubmaker/producer.rb +0 -375
  263. data/lib/epubmaker/zip_exporter.rb +0 -81
  264. data/lib/lineinput.rb +0 -155
  265. data/lib/review/book/compilable.rb +0 -178
  266. data/lib/review/tocparser.rb +0 -271
  267. data/samples/syntax-book/review-ext.rb +0 -14
  268. data/test/test_tocparser.rb +0 -25
data/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  # Re:VIEW
2
2
 
3
3
  [![Gem Version](https://badge.fury.io/rb/review.svg)](http://badge.fury.io/rb/review)
4
- [![Build Status](https://secure.travis-ci.org/kmuto/review.svg)](http://travis-ci.org/kmuto/review)
4
+ [![Build Status](https://github.com/kmuto/review/workflows/Test/badge.svg)](https://github.com/kmuto/review/actions)
5
5
  [![Build status](https://ci.appveyor.com/api/projects/status/github/kmuto/review?svg=true)](https://ci.appveyor.com/project/kmuto/review)
6
6
 
7
7
  Re:VIEW is an easy-to-use digital publishing system for paper books and ebooks.
@@ -22,15 +22,17 @@ Re:VIEW uses its original format('Re:VIEW format') as source files. See doc/for
22
22
 
23
23
  ## Commands
24
24
 
25
- There are two commands generate files directly.
25
+ There are commands generate files directly.
26
26
 
27
27
  * review-epubmaker: generate EPUB file.
28
28
  * review-pdfmaker: generate PDF file using LaTeX (TeXLive).
29
29
  * review-textmaker: generate text files.
30
30
  * review-webmaker: generate Web pages.
31
+ * review-idgxmlmaker: generate InDesign XML files.
31
32
 
32
33
  And some useful commands.
33
34
 
35
+ * review-init: create a project.
34
36
  * review-compile: compile Re:VIEW format files.
35
37
  * review-vol: figure out size of Re:VIEW files.
36
38
  * review-index: generate index with various format.
@@ -60,10 +62,12 @@ $ echo "export PATH=PATH_OF_REVIEW/bin:$PATH" >> ~/.profile
60
62
  $ review-init hello
61
63
  $ cd hello
62
64
  $ (... add and edit *.re file, config.yml and catalog.yml ...)
63
- $ rake epub ## generating EPUB
64
- $ rake pdf ## generating PDF (Requirement TeXLive)
65
- $ rake text ## generating texts
66
- $ rake web ## generating Web pages
65
+ $ rake epub ## generating EPUB
66
+ $ rake pdf ## generating PDF (Requirement TeXLive)
67
+ $ rake text ## generating texts
68
+ $ rake web ## generating Web pages
69
+ $ rake idgxml ## generating InDesign XML files
70
+ $ rake vivliostyle ## generating PDF using Vivliostyle-CLI (Requirement Vivliostyle-CLI)
67
71
  ```
68
72
 
69
73
  For further information, see [doc/quickstart.md](https://github.com/kmuto/review/blob/master/doc/quickstart.md)
@@ -112,4 +116,4 @@ Exception:
112
116
 
113
117
  ## Copyright
114
118
 
115
- Copyright (c) 2006-2019 Minero Aoki, Kenshi Muto, Masayoshi Takahashi, Masanori Kado.
119
+ Copyright (c) 2006-2021 Minero Aoki, Kenshi Muto, Masayoshi Takahashi, Masanori Kado.
data/Rakefile CHANGED
@@ -21,8 +21,13 @@ task :rubocop do
21
21
  end
22
22
  end
23
23
 
24
- task :test do
25
- ruby('test/run_test.rb')
24
+ desc 'Run tests'
25
+ task :test, :target do |_, argv|
26
+ if argv[:target].nil?
27
+ ruby('test/run_test.rb')
28
+ else
29
+ ruby('test/run_test.rb', "--pattern=#{argv[:target]}")
30
+ end
26
31
  end
27
32
 
28
33
  begin
data/appveyor.yml CHANGED
@@ -6,21 +6,6 @@ install:
6
6
  build_script:
7
7
  - bundle install
8
8
  - bundle exec rake test --trace --verbose
9
- - bundle exec rubocop
10
-
11
- before_test:
12
- - gem install -N epubcheck-ruby
13
-
14
- test_script:
15
- - ruby bin/review-init hello
16
- - cd hello
17
- - ruby ../bin/review-epubmaker config.yml
18
- - epubcheck book.epub
19
- - cd ..
20
- - ruby bin/review-init hello2 --epub-version 2
21
- - cd hello2
22
- - ruby ../bin/review-epubmaker config.yml
23
- - epubcheck book.epub
24
9
 
25
10
  branches:
26
11
  only:
@@ -28,9 +13,4 @@ branches:
28
13
 
29
14
  environment:
30
15
  matrix:
31
- - ruby_version: "24"
32
- - ruby_version: "24-x64"
33
- - ruby_version: "25"
34
- - ruby_version: "25-x64"
35
16
  - ruby_version: "26"
36
- - ruby_version: "26-x64"
data/bin/review CHANGED
@@ -13,9 +13,7 @@
13
13
  # the GNU LGPL, Lesser General Public License version 2.1.
14
14
  # For details of the GNU LGPL, see the file "COPYING".
15
15
 
16
- require 'pathname'
17
- bindir = Pathname.new(__FILE__).realpath.dirname
18
- $LOAD_PATH.unshift((bindir + '../lib').realpath)
16
+ $LOAD_PATH.unshift(File.realpath('../lib', __dir__))
19
17
 
20
18
  require 'review'
21
19
 
@@ -52,7 +50,7 @@ if ARGV[0] == 'version'
52
50
  end
53
51
 
54
52
  command = "review-#{ARGV.shift}"
55
- bindir = Pathname.new(__FILE__).realpath.dirname
53
+ bindir = File.realpath(__dir__)
56
54
  command_path = File.join(bindir, command)
57
55
 
58
56
  unless File.exist?(command_path)
@@ -9,10 +9,9 @@
9
9
  #
10
10
  # Convert old PREDEF/CHAPS/PART/POSTDEF files into catalog.yml.
11
11
 
12
- require 'pathname'
12
+ $LOAD_PATH.unshift(File.realpath('../lib', __dir__))
13
+
13
14
  require 'optparse'
14
- bindir = Pathname.new(__FILE__).realpath.dirname
15
- $LOAD_PATH.unshift((bindir + '../lib').realpath)
16
15
  require 'review/version'
17
16
  require 'review/extentions'
18
17
  require 'review/logger'
@@ -109,7 +108,7 @@ def parse_postdef(str, to_appendix = false)
109
108
  end
110
109
 
111
110
  def parse_parts(parts_str, chaps_str)
112
- if parts_str.blank? or chaps_str.blank?
111
+ if parts_str.blank? || chaps_str.blank?
113
112
  return "CHAPS:\n\n"
114
113
  end
115
114
 
@@ -158,6 +157,7 @@ def replace_old_style_part(dir)
158
157
  end
159
158
 
160
159
  next unless allow_overwrite
160
+
161
161
  File.write("#{dir}/#{part_name}", "= #{part}")
162
162
  catalog.replace_part(part, part_name)
163
163
  end
data/bin/review-check CHANGED
@@ -9,10 +9,7 @@
9
9
  # For details of the GNU LGPL, see the file "COPYING".
10
10
  #
11
11
 
12
- require 'pathname'
13
-
14
- bindir = Pathname.new(__FILE__).realpath.dirname
15
- $LOAD_PATH.unshift((bindir + '../lib').realpath)
12
+ $LOAD_PATH.unshift(File.realpath('../lib', __dir__))
16
13
 
17
14
  require 'review'
18
15
  require 'optparse'
@@ -31,9 +28,7 @@ end
31
28
 
32
29
  def main
33
30
  @config = ReVIEW::Configure.values
34
- @book = ReVIEW::Book::Base.load
35
- @book.config = @config
36
-
31
+ @book = ReVIEW::Book::Base.new(config: @config)
37
32
  @logger = ReVIEW.logger
38
33
 
39
34
  modes = nil
@@ -87,7 +82,8 @@ def check_text(files)
87
82
  s = para.join
88
83
  m = re.match(s)
89
84
  next if m.nil? || m[0] == @review_utils_word_ok
90
- next if neg and neg =~ s
85
+ next if neg && neg =~ s
86
+
91
87
  str, offset = find_line(para, re)
92
88
  out = sprintf("%s:%d: %s\n", path, lineno + offset, str)
93
89
  print out
@@ -109,6 +105,7 @@ def find_line(lines, re)
109
105
  while i < lines.size - 1
110
106
  str = lines[i] + lines[i + 1]
111
107
  return str.gsub(re, '<<<\&>>>'), i if re =~ str
108
+
112
109
  i += 1
113
110
  end
114
111
 
@@ -120,6 +117,7 @@ def words_re(rc)
120
117
  nega = []
121
118
  File.foreach(rc) do |line|
122
119
  next if line[0, 1] == '#'
120
+
123
121
  if / !/ =~ line
124
122
  line, n = *line.split('!', 2)
125
123
  nega.push(n.strip)
@@ -136,7 +134,7 @@ def each_paragraph(f)
136
134
  case line
137
135
  when /\A\#@ok\((.*)\)/
138
136
  @review_utils_word_ok = $1
139
- when /\A\#@/
137
+ when /\A\#@/, /\A\s*\z/
140
138
  # do nothing
141
139
  next
142
140
  when %r{\A//caption\{(.*?)//\}}
@@ -147,9 +145,6 @@ def each_paragraph(f)
147
145
  end
148
146
  when /\A=/
149
147
  yield [line.slice(/\A=+(?:\[.*?\])?\s+(.*)/, 1).strip], f.lineno
150
- when /\A\s*\z/
151
- # skip
152
- next
153
148
  else
154
149
  buf = [line.strip]
155
150
  lineno = f.lineno
@@ -157,6 +152,7 @@ def each_paragraph(f)
157
152
  break if line.strip.empty?
158
153
  break if %r{\A(?:=|//[\w\}])} =~ line
159
154
  next if /\A\#@/ =~ line
155
+
160
156
  buf.push(line.strip)
161
157
  end
162
158
  yield buf, lineno
data/bin/review-checkdep CHANGED
@@ -9,10 +9,7 @@
9
9
  # For details of the GNU LGPL, see the file "COPYING".
10
10
  #
11
11
 
12
- require 'pathname'
13
-
14
- bindir = Pathname.new(__FILE__).realpath.dirname
15
- $LOAD_PATH.unshift((bindir + '../lib').realpath)
12
+ $LOAD_PATH.unshift(File.realpath('../lib', __dir__))
16
13
 
17
14
  PREDEF_FILE = 'PREDEF'.freeze
18
15
 
@@ -30,7 +27,7 @@ def main
30
27
  when /\A\#@provide\((.*)\)/
31
28
  provide($1)
32
29
  else
33
- line.scan(/@<kw>\{(.*?)[,\}]/) { provide $1 }
30
+ line.scan(/@<kw>\{(.*?)[,}]/) { provide($1) }
34
31
  end
35
32
  end
36
33
  end
data/bin/review-compile CHANGED
@@ -9,10 +9,7 @@
9
9
  # For details of the GNU LGPL, see the file "COPYING".
10
10
  #
11
11
 
12
- require 'pathname'
13
-
14
- bindir = Pathname.new(__FILE__).realpath.dirname
15
- $LOAD_PATH.unshift((bindir + '../lib').realpath)
12
+ $LOAD_PATH.unshift(File.realpath('../lib', __dir__))
16
13
 
17
14
  require 'review'
18
15
  require 'fileutils'
@@ -35,7 +32,7 @@ def _main
35
32
  @logger = ReVIEW.logger
36
33
  @mode = :files
37
34
  @basedir = nil
38
- if /\Areview2/ =~ File.basename($PROGRAM_NAME)
35
+ if File.basename($PROGRAM_NAME).start_with?('review2')
39
36
  @target = File.basename($PROGRAM_NAME, '.rb').sub('review2', '')
40
37
  else
41
38
  @target = nil
@@ -79,32 +76,30 @@ def _main
79
76
  error('no input') if ARGV.empty?
80
77
 
81
78
  @basedir = File.dirname(ARGV[0])
82
- book = ReVIEW::Book::Base.load(@basedir)
83
- book.config = @config # needs only at the first time
79
+ book = ReVIEW::Book::Base.new(@basedir, config: @config)
84
80
  ARGV.each do |item|
85
81
  error("file not found: #{item}") unless File.exist?(File.join(book.config['contentdir'], item))
86
82
  chap_name = File.basename(item, '.*')
87
83
  chap = book.chapter(chap_name)
88
- compiler = ReVIEW::Compiler.new(load_strategy_class(@target, @check_only))
84
+ compiler = ReVIEW::Compiler.new(load_builder_class(@target, @check_only))
89
85
  result = compiler.compile(chap)
90
86
  if @output_filename
91
- write(@output_filename, result)
87
+ File.write(@output_filename, result)
92
88
  else
93
89
  puts result unless @check_only
94
90
  end
95
91
  end
96
92
  when :dir
97
- book = @basedir ? ReVIEW::Book.load(@basedir) : ReVIEW::Book::Base.load
98
- book.config = @config
99
- compiler = ReVIEW::Compiler.new(load_strategy_class(@target, @check_only))
93
+ book = @basedir ? ReVIEW::Book::Base.new(@basedir, config: @config) : ReVIEW::Book::Base.new(config: @config)
94
+ compiler = ReVIEW::Compiler.new(load_builder_class(@target, @check_only))
100
95
  book.chapters.each do |chap|
101
96
  str = compiler.compile(chap)
102
- write("#{chap.name}#{compiler.strategy.extname}", str) unless @check_only
97
+ File.write("#{chap.name}#{compiler.builder.extname}", str) unless @check_only
103
98
  end
104
99
  # PART
105
100
  book.parts_in_file.each do |part|
106
101
  str = compiler.compile(part)
107
- write("#{part.name}#{compiler.strategy.extname}", str) unless @check_only
102
+ File.write("#{part.name}#{compiler.builder.extname}", str) unless @check_only
108
103
  end
109
104
  else
110
105
  raise "must not happen: #{@mode}"
@@ -128,7 +123,7 @@ def parse_opts
128
123
  opts.on('--chapref="before,middle,after"', 'Chapref decoration. (idgxml)') { |cdec| @config['chapref'] = cdec }
129
124
  opts.on('--chapterlink', 'make chapref hyperlink') { @config['chapterlink'] = true }
130
125
  opts.on('--stylesheet=file', 'Stylesheet file for HTML (comma separated)') { |files| @config['stylesheet'] = files.split(/\s*,\s*/) }
131
- opts.on('--mathml', 'Use MathML for TeX equation in HTML') { @config['mathml'] = true }
126
+ opts.on('--mathml', 'Use MathML for TeX equation in HTML') { @config['math_format'] = 'mathml' }
132
127
  opts.on('--htmlversion=VERSION', 'HTML version.') do |v|
133
128
  v = v.to_i
134
129
  @config['htmlversion'] = v if [4, 5].include?(v)
@@ -178,13 +173,9 @@ def warn(msg)
178
173
  @logger.warn msg
179
174
  end
180
175
 
181
- def load_strategy_class(target, strict)
176
+ def load_builder_class(target, strict)
182
177
  require "review/#{target}builder"
183
178
  ReVIEW.const_get("#{target.upcase}Builder").new(strict)
184
179
  end
185
180
 
186
- def write(path, str)
187
- File.open(path, 'w') { |f| f.puts str }
188
- end
189
-
190
181
  main
data/bin/review-epub2html CHANGED
@@ -7,10 +7,7 @@
7
7
  # the GNU LGPL, Lesser General Public License version 2.1.
8
8
  # For details of the GNU LGPL, see the file "COPYING".
9
9
 
10
- require 'pathname'
11
-
12
- bindir = Pathname.new(__FILE__).realpath.dirname
13
- $LOAD_PATH.unshift((bindir + '../lib').realpath)
10
+ $LOAD_PATH.unshift(File.realpath('../lib', __dir__))
14
11
 
15
12
  require 'review/epub2html'
16
13
 
data/bin/review-epubmaker CHANGED
@@ -6,11 +6,10 @@
6
6
  # the GNU LGPL, Lesser General Public License version 2.1.
7
7
  # For details of the GNU LGPL, see the file "COPYING".
8
8
  #
9
- require 'pathname'
10
- require 'optparse'
11
- bindir = Pathname.new(__FILE__).realpath.dirname
12
- $LOAD_PATH.unshift((bindir + '../lib').realpath)
13
9
 
10
+ $LOAD_PATH.unshift(File.realpath('../lib', __dir__))
11
+
12
+ require 'optparse'
14
13
  require 'review/epubmaker'
15
14
 
16
15
  ReVIEW::EPUBMaker.execute(*ARGV)
@@ -7,9 +7,7 @@
7
7
  # For details of the GNU LGPL, see the file "COPYING".
8
8
  #
9
9
 
10
- require 'pathname'
11
- bindir = Pathname.new(__FILE__).realpath.dirname
12
- $LOAD_PATH.unshift((bindir + '../lib').realpath)
10
+ $LOAD_PATH.unshift(File.realpath('../lib', __dir__))
13
11
 
14
12
  require 'review/idgxmlmaker'
15
13
 
data/bin/review-index CHANGED
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env ruby
2
2
  #
3
- # Copyright (c) 2008-2019 Minero Aoki, Kenshi Muto
3
+ # Copyright (c) 2008-2020 Minero Aoki, Kenshi Muto
4
4
  # 1999-2007 Minero Aoki
5
5
  #
6
6
  # This program is free software.
@@ -9,98 +9,17 @@
9
9
  # For details of the GNU LGPL, see the file "COPYING".
10
10
  #
11
11
 
12
- require 'pathname'
12
+ $LOAD_PATH.unshift(File.realpath('../lib', __dir__))
13
13
 
14
- bindir = Pathname.new(__FILE__).realpath.dirname
15
- $LOAD_PATH.unshift((bindir + '../lib').realpath)
16
-
17
- require 'review/book'
18
- require 'review/tocparser'
19
14
  require 'review/tocprinter'
20
- require 'review/version'
21
- require 'optparse'
22
15
 
23
- def main
24
- @logger = ReVIEW.logger
16
+ begin
25
17
  Signal.trap(:INT) { exit 1 }
26
18
  if RUBY_PLATFORM !~ /mswin(?!ce)|mingw|cygwin|bccwin/
27
19
  Signal.trap(:PIPE, 'IGNORE')
28
20
  end
29
- _main
21
+
22
+ ReVIEW::TOCPrinter.execute(*ARGV)
30
23
  rescue Errno::EPIPE
31
24
  exit 0
32
25
  end
33
-
34
- def _main
35
- yamlfile = 'config.yml'
36
- printer_class = ReVIEW::TextTOCPrinter
37
- source = nil
38
- upper = ReVIEW::TOCPrinter.default_upper_level
39
- param = {}
40
- book = ReVIEW::Book::Base.load
41
-
42
- opts = OptionParser.new
43
- opts.version = ReVIEW::VERSION
44
- opts.on('--yaml=YAML', 'Read configurations from YAML file.') { |yaml| yamlfile = yaml }
45
- opts.on('-a', '--all', 'print all chapters.') { source = book }
46
- opts.on('-p', '--part N', 'list only part N.') do |n|
47
- source = book.part(Integer(n)) or
48
- error_exit("part #{n} does not exist in this book")
49
- end
50
- opts.on('-c', '--chapter C', 'list only chapter C.') do |c|
51
- begin
52
- source = ReVIEW::Book::Part.new(nil, 1, [book.chapter(c)])
53
- rescue
54
- error_exit("chapter #{c} does not exist in this book")
55
- end
56
- end
57
- opts.on('-l', '--level N', 'list upto N level (1..4, default=4)') do |n|
58
- upper = Integer(n)
59
- unless (0..4).cover?(upper) # 0 is hidden option
60
- $stderr.puts '-l/--level option accepts only 1..4'
61
- exit 1
62
- end
63
- end
64
- opts.on('--text', 'output in plain text (default)') { printer_class = ReVIEW::TextTOCPrinter }
65
- opts.on('--html', 'output in HTML (deprecated)') { printer_class = ReVIEW::HTMLTOCPrinter }
66
- opts.on('--help', 'print this message and quit.') do
67
- puts opts.help
68
- exit 0
69
- end
70
- begin
71
- opts.parse!
72
- rescue OptionParser::ParseError => e
73
- @logger.error e.message
74
- $stderr.puts opts.help
75
- exit 1
76
- end
77
-
78
- book.config = ReVIEW::Configure.values
79
- book.load_config(yamlfile) if yamlfile
80
-
81
- if source
82
- error_exit('-a/-s option and file arguments are exclusive') unless ARGV.empty?
83
- else
84
- puts opts.help
85
- exit 0
86
- end
87
-
88
- begin
89
- printer = printer_class.new(upper, param)
90
- if source.is_a?(ReVIEW::Book::Part)
91
- printer.print_part(source)
92
- else
93
- printer.print_book(source)
94
- end
95
- rescue ReVIEW::Error, Errno::ENOENT => e
96
- raise if $DEBUG
97
- error_exit(e.message)
98
- end
99
- end
100
-
101
- def error_exit(msg)
102
- @logger.error msg
103
- exit 1
104
- end
105
-
106
- main