review 2.0.0.beta1 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (150) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +66 -1
  3. data/.rubocop_todo.yml +617 -0
  4. data/.travis.yml +16 -1
  5. data/ChangeLog +48 -0
  6. data/Dockerfile +22 -0
  7. data/Gemfile +0 -1
  8. data/README.md +97 -0
  9. data/Rakefile +10 -11
  10. data/appveyor.yml +9 -0
  11. data/bin/review +46 -0
  12. data/bin/review-check +8 -21
  13. data/bin/review-compile +26 -43
  14. data/bin/review-index +9 -22
  15. data/bin/review-init +21 -25
  16. data/bin/review-preproc +9 -13
  17. data/bin/review-validate +1 -1
  18. data/bin/review-vol +3 -17
  19. data/bin/review-webmaker +15 -0
  20. data/doc/NEWS.ja.md +534 -0
  21. data/doc/NEWS.md +538 -0
  22. data/doc/catalog.ja.md +10 -18
  23. data/doc/catalog.md +5 -9
  24. data/doc/config.yml.sample +319 -0
  25. data/doc/customize_epub.ja.md +42 -0
  26. data/doc/format.ja.md +320 -288
  27. data/doc/format.md +277 -170
  28. data/doc/format_idg.ja.md +82 -175
  29. data/doc/pdfmaker.ja.md +61 -0
  30. data/doc/pdfmaker.md +65 -0
  31. data/doc/quickstart.ja.md +88 -98
  32. data/doc/quickstart.md +72 -110
  33. data/doc/sample.css +41 -0
  34. data/doc/writing_vertical.ja.md +55 -0
  35. data/doc/writing_vertical.md +5 -0
  36. data/lib/epubmaker/content.rb +3 -3
  37. data/lib/epubmaker/epubcommon.rb +173 -145
  38. data/lib/epubmaker/epubv2.rb +24 -77
  39. data/lib/epubmaker/epubv3.rb +72 -73
  40. data/lib/epubmaker/producer.rb +54 -30
  41. data/lib/lineinput.rb +48 -0
  42. data/lib/review/book.rb +0 -1
  43. data/lib/review/book/base.rb +47 -27
  44. data/lib/review/book/chapter.rb +48 -19
  45. data/lib/review/book/compilable.rb +10 -14
  46. data/lib/review/book/index.rb +10 -19
  47. data/lib/review/book/page_metric.rb +0 -10
  48. data/lib/review/book/part.rb +17 -3
  49. data/lib/review/builder.rb +84 -68
  50. data/lib/review/catalog.rb +5 -1
  51. data/lib/review/compiler.rb +327 -4657
  52. data/lib/review/configure.rb +84 -10
  53. data/lib/review/converter.rb +28 -0
  54. data/lib/review/epubbuilder.rb +1 -1
  55. data/lib/review/epubmaker.rb +142 -158
  56. data/lib/review/ewbbuilder.rb +5 -5
  57. data/lib/review/exception.rb +1 -1
  58. data/lib/review/extentions.rb +1 -1
  59. data/lib/review/extentions/hash.rb +15 -0
  60. data/lib/review/extentions/string.rb +2 -1
  61. data/lib/review/htmlbuilder.rb +364 -348
  62. data/lib/review/htmltoc.rb +44 -0
  63. data/lib/review/htmlutils.rb +12 -6
  64. data/lib/review/i18n.rb +78 -6
  65. data/lib/review/i18n.yml +7 -4
  66. data/lib/review/idgxmlbuilder.rb +226 -267
  67. data/lib/review/latexbuilder.rb +281 -274
  68. data/lib/review/latexutils.rb +56 -49
  69. data/lib/review/makerhelper.rb +8 -4
  70. data/lib/review/markdownbuilder.rb +80 -124
  71. data/lib/review/pdfmaker.rb +197 -138
  72. data/lib/review/preprocessor.rb +16 -67
  73. data/lib/review/template.rb +24 -0
  74. data/lib/review/textbuilder.rb +1 -1
  75. data/lib/review/textutils.rb +18 -24
  76. data/lib/review/tocparser.rb +51 -106
  77. data/lib/review/tocprinter.rb +61 -117
  78. data/lib/review/topbuilder.rb +119 -126
  79. data/lib/review/unfold.rb +2 -2
  80. data/lib/review/version.rb +1 -1
  81. data/lib/review/webmaker.rb +302 -0
  82. data/lib/review/webtocprinter.rb +48 -0
  83. data/lib/review/yamlloader.rb +47 -0
  84. data/review.gemspec +3 -3
  85. data/templates/html/layout-html5.html.erb +17 -0
  86. data/templates/html/layout-xhtml1.html.erb +20 -0
  87. data/{lib/review → templates/latex}/layout.tex.erb +107 -115
  88. data/templates/ncx/epubv2.ncx.erb +11 -0
  89. data/templates/opf/epubv2.opf.erb +21 -0
  90. data/templates/opf/epubv3.opf.erb +18 -0
  91. data/templates/web/html/layout-html5.html.erb +56 -0
  92. data/templates/web/html/layout-xhtml1.html.erb +20 -0
  93. data/templates/xml/container.xml.erb +6 -0
  94. data/test/assets/test.xml.erb +3 -0
  95. data/test/assets/test_template.tex +28 -71
  96. data/test/assets/test_template_backmatter.tex +1 -9
  97. data/test/sample-book/src/Rakefile +12 -3
  98. data/{doc/sample.yml → test/sample-book/src/config-epub2.yml} +92 -147
  99. data/test/sample-book/src/config.yml +40 -154
  100. data/test/sample-book/src/style-web.css +45 -0
  101. data/test/sample-book/src/style.css +23 -1
  102. data/test/test.re +1 -1
  103. data/test/test_book.rb +15 -17
  104. data/test/test_book_chapter.rb +2 -80
  105. data/test/test_book_part.rb +1 -1
  106. data/test/test_builder.rb +28 -6
  107. data/test/test_catalog.rb +17 -0
  108. data/test/test_compiler.rb +14 -59
  109. data/test/test_configure.rb +94 -0
  110. data/test/test_converter.rb +21 -0
  111. data/test/test_epub3maker.rb +155 -3
  112. data/test/test_epubmaker.rb +245 -30
  113. data/test/test_epubmaker_cmd.rb +2 -2
  114. data/test/test_extentions_hash.rb +60 -0
  115. data/test/test_helper.rb +4 -47
  116. data/test/test_htmlbuilder.rb +282 -175
  117. data/test/test_htmltoc.rb +33 -0
  118. data/test/test_i18n.rb +134 -70
  119. data/test/test_idgxmlbuilder.rb +58 -39
  120. data/test/test_latexbuilder.rb +132 -14
  121. data/test/test_lineinput.rb +5 -26
  122. data/test/test_makerhelper.rb +6 -4
  123. data/test/test_markdownbuilder.rb +23 -5
  124. data/test/test_pdfmaker.rb +86 -20
  125. data/test/test_pdfmaker_cmd.rb +1 -3
  126. data/test/test_review_ext.rb +1 -1
  127. data/test/test_template.rb +27 -0
  128. data/test/test_textutils.rb +36 -0
  129. data/test/test_tocparser.rb +25 -0
  130. data/test/test_topbuilder.rb +34 -2
  131. data/test/test_yamlloader.rb +188 -0
  132. metadata +71 -29
  133. data/README.rdoc +0 -81
  134. data/bin/review-epubmaker-legacy +0 -1024
  135. data/doc/ruby-uuid/README +0 -11
  136. data/doc/ruby-uuid/README.ja +0 -34
  137. data/lib/review/compiler/literals_1_8.kpeg +0 -19
  138. data/lib/review/compiler/literals_1_8.rb +0 -432
  139. data/lib/review/compiler/literals_1_9.kpeg +0 -22
  140. data/lib/review/compiler/literals_1_9.rb +0 -435
  141. data/lib/review/extentions/array.rb +0 -25
  142. data/lib/review/htmllayout.rb +0 -41
  143. data/lib/review/inaobuilder.rb +0 -357
  144. data/lib/review/location.rb +0 -24
  145. data/lib/review/node.rb +0 -267
  146. data/lib/review/review.kpeg +0 -724
  147. data/lib/uuid.rb +0 -312
  148. data/rubocop-todo.yml +0 -456
  149. data/test/test_inaobuilder.rb +0 -247
  150. data/test/test_uuid.rb +0 -157
@@ -1,247 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
- require 'test_helper'
3
- require 'book_test_helper'
4
- require 'review'
5
-
6
- class INAOBuidlerTest < Test::Unit::TestCase
7
- include ReVIEW
8
- include BookTestHelper
9
-
10
- def setup
11
- @param = {
12
- "secnolevel" => 2, # for IDGXMLBuilder, HTMLBuilder
13
- "inencoding" => "UTF-8",
14
- "outencoding" => "UTF-8",
15
- "stylesheet" => nil, # for HTMLBuilder
16
- }
17
- end
18
-
19
- def test_all
20
- compiler = Compiler.new(INAOBuilder.new)
21
- mktmpbookdir do |dir, book, files|
22
- chapter = Book::Chapter.new(book, 1, "chap1", nil, StringIO.new)
23
- chapter.content = <<-EOS
24
- = 見出し1(大見出し、節)
25
- == 見出し2(中見出し、項)
26
- === 見出し3(小見出し、目)
27
- 段落冒頭の字下げは、自動で行われます。
28
- 改行は、(改行)
29
- このように自動で取り除かれます。
30
-
31
- 通常の本文@<b>{強調(ボールド)}通常の本文@<i>{斜体(イタリック)}通常の本文@<tt>{インラインのコード}通常の本文@<fn>{1}通常の本文@<kbd>{Enter}(←キーボードフォント)通常の本文@<ruby>{外村,ほかむら}(←ルビ)。
32
-
33
- //footnote[1][脚注]
34
-
35
- //quote{
36
- 引用です
37
- //}
38
-
39
- ====[column]コラム見出し
40
- 本文コラム
41
-
42
- ===== コラム小見出し
43
- 本文コラム
44
-
45
- ====[/column]
46
-
47
- == 箇条書き
48
- === 通常の箇条書き
49
- * 連番箇条書き
50
- * 連番箇条書き
51
- === 連番箇条書き
52
- 1. 連番箇条書き
53
- 2. 連番箇条書き
54
-
55
- == コマンド
56
- //cmd[コマンドのタイトル]{
57
- $ command foo
58
- //}
59
-
60
- === 本文埋め込みコマンド(本文埋め込み版はWEB+DB PRESSでは未使用)
61
- //cmd{
62
- $ command foo
63
- //}
64
-
65
- == 表
66
- //table[id][表のタイトル]{
67
- 項目1 項目2
68
- -------------
69
- 内容1 内容2
70
- 内容1 内容2
71
- //}
72
-
73
- EOS
74
-
75
- expected = <<-EOS
76
- ■見出し1(大見出し、節)
77
- ■■見出し2(中見出し、項)
78
- ■■■見出し3(小見出し、目)
79
-  段落冒頭の字下げは、自動で行われます。改行は、(改行)このように自動で取り除かれます。
80
-  通常の本文◆b/◆強調(ボールド)◆/b◆通常の本文◆i/◆斜体(イタリック)◆/i◆通常の本文◆cmd/◆インラインのコード◆/cmd◆通常の本文◆注/◆脚注◆/注◆通常の本文Enter▲(←キーボードフォント)通常の本文◆ルビ/◆外村◆ほかむら◆/ルビ◆(←ルビ)。
81
- ◆quote/◆
82
- 引用です
83
- ◆/quote◆
84
-
85
- ◆column/◆
86
- ■■■■コラム見出し
87
-  本文コラム
88
- ■■■■■コラム小見出し
89
-  本文コラム
90
- ◆/column◆
91
- ■■箇条書き
92
- ■■■通常の箇条書き
93
- ・連番箇条書き
94
- ・連番箇条書き
95
- ■■■連番箇条書き
96
- (1)連番箇条書き
97
- (2)連番箇条書き
98
- ■■コマンド
99
- ◆list-white/◆
100
- ●コマンドのタイトル
101
- $ command foo
102
- ◆/list-white◆
103
- ■■■本文埋め込みコマンド(本文埋め込み版はWEB+DB PRESSでは未使用)
104
- ◆list-white/◆
105
- $ command foo
106
- ◆/list-white◆
107
- ■■表
108
- ◆table/◆
109
- ●表1.1 表のタイトル
110
- ◆table-title◆項目1 項目2
111
- 内容1 内容2
112
- 内容1 内容2
113
- ◆/table◆
114
- EOS
115
- assert_equal expected, compiler.compile(chapter)
116
- end
117
- end
118
-
119
- def test_list
120
- compiler = Compiler.new(INAOBuilder.new)
121
- mktmpbookdir do |dir, book, files|
122
- chapter = Book::Chapter.new(book, 1, "chap1", nil, StringIO.new)
123
- chapter.content = <<-EOS
124
- == リスト
125
- @<list>{id}
126
- //list[id][キャプション(コードのタイトル)]{
127
- function hoge() {
128
- alert(foo);
129
- alert(bar);
130
- }
131
- //}
132
-
133
- === 本文埋め込みリスト
134
- 本文中で流れでコードを掲載するときに使用します。
135
-
136
- //emlist{
137
- function hoge() {
138
- alert(foo);@<comment>{こんな風にコメントがつけられます}
139
- }
140
- //}
141
-
142
- このように、上下に本文が入ります。
143
-
144
- 本文から一連の流れで読んでもらうことができますが、コードがページをまたぐ可能性がございます。
145
- EOS
146
- expected = <<-EOS
147
- ■■リスト
148
-  リスト1.1
149
- ◆list/◆
150
- ●リスト1.1 キャプション(コードのタイトル)
151
- function hoge() {
152
- alert(foo);
153
- alert(bar);
154
- }
155
- ◆/list◆
156
- ■■■本文埋め込みリスト
157
-  本文中で流れでコードを掲載するときに使用します。
158
- ◆list/◆
159
- function hoge() {
160
- alert(foo);◆comment/◆こんな風にコメントがつけられます◆/comment◆
161
- }
162
- ◆/list◆
163
-  このように、上下に本文が入ります。
164
-  本文から一連の流れで読んでもらうことができますが、コードがページをまたぐ可能性がございます。
165
- EOS
166
- assert_equal expected, compiler.compile(chapter)
167
- end
168
- end
169
-
170
- def test_image
171
- compiler = Compiler.new(INAOBuilder.new)
172
- mktmpbookdir do |dir, book, files|
173
- chapter = Book::Chapter.new(book, 1, "chap1", nil, StringIO.new)
174
- chapter.content = <<-EOS
175
- = 図
176
- @<img>{id}
177
- //image[id][図のタイトル]{
178
- ダミー
179
- //}
180
- EOS
181
- expected = <<-EOS
182
- ■図
183
-  図1.1
184
- ●図1.1 図のタイトル
185
- ダミー
186
- EOS
187
- assert_equal expected, compiler.compile(chapter)
188
- end
189
- end
190
-
191
- def test_table
192
- compiler = Compiler.new(INAOBuilder.new)
193
- mktmpbookdir do |dir, book, files|
194
- chapter = Book::Chapter.new(book, 1, "chap1", nil, StringIO.new)
195
- chapter.content = <<-EOS
196
- == 表
197
- @<table>{id}
198
- //table[id][表のタイトル]{
199
- 項目1 項目2
200
- -------------
201
- 内容1 内容2
202
- 内容1 内容2
203
- //}
204
- EOS
205
- expected = <<-EOS
206
- ■■表
207
-  表1.1
208
- ◆table/◆
209
- ●表1.1 表のタイトル
210
- ◆table-title◆項目1 項目2
211
- 内容1 内容2
212
- 内容1 内容2
213
- ◆/table◆
214
- EOS
215
- assert_equal expected, compiler.compile(chapter)
216
- end
217
- end
218
-
219
- def test_listnum
220
- compiler = Compiler.new(INAOBuilder.new)
221
- mktmpbookdir do |dir, book, files|
222
- chapter = Book::Chapter.new(book, 1, "chap1", nil, StringIO.new)
223
- chapter.content = <<-EOS
224
- == リスト
225
- @<list>{id}
226
- //listnum[id][キャプション(コードのタイトル)]{
227
- function hoge() {
228
- alert(foo);
229
- alert(bar);
230
- }
231
- //}
232
- EOS
233
- expected = <<-EOS
234
- ■■リスト
235
-  リスト1.1
236
- ◆list/◆
237
- ●リスト1.1 キャプション(コードのタイトル)
238
- 1 function hoge() {
239
- 2 alert(foo);
240
- 3 alert(bar);
241
- 4 }
242
- ◆/list◆
243
- EOS
244
- assert_equal expected, compiler.compile(chapter)
245
- end
246
- end
247
- end
@@ -1,157 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # encoding: us-ascii
3
- #
4
- # Original license is below:
5
- #
6
- # Copyright(c) 2005 URABE, Shyouhei.
7
- #
8
- # Permission is hereby granted, free of charge, to any person obtaining a copy
9
- # of this code, to deal in the code without restriction, including without
10
- # limitation the rights to use, copy, modify, merge, publish, distribute,
11
- # sublicense, and/or sell copies of the code, and to permit persons to whom the
12
- # code is furnished to do so, subject to the following conditions:
13
- #
14
- # The above copyright notice and this permission notice shall be
15
- # included in all copies or substantial portions of the code.
16
- #
17
- # THE CODE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18
- # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19
- # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20
- # AUTHOR OR COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21
- # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22
- # OUT OF OR IN CONNECTION WITH THE CODE OR THE USE OR OTHER DEALINGS IN THE
23
- # CODE.
24
-
25
- require 'test/unit'
26
- require 'uuid'
27
-
28
- class TC_UUID < Test::Unit::TestCase
29
- def test_v1
30
- u1 = UUID.create
31
- u2 = UUID.create
32
- assert_not_equal u1, u2
33
- end
34
-
35
- def test_v1_repeatability
36
- u1 = UUID.create 1, 2, "345678"
37
- u2 = UUID.create 1, 2, "345678"
38
- assert_equal u1, u2
39
- end
40
-
41
- def test_v3
42
- u1 = UUID.create_md5 "foo", UUID::NameSpace_DNS
43
- u2 = UUID.create_md5 "foo", UUID::NameSpace_DNS
44
- u3 = UUID.create_md5 "foo", UUID::NameSpace_URL
45
- assert_equal u1, u2
46
- assert_not_equal u1, u3
47
- end
48
-
49
- def test_v5
50
- u1 = UUID.create_sha1 "foo", UUID::NameSpace_DNS
51
- u2 = UUID.create_sha1 "foo", UUID::NameSpace_DNS
52
- u3 = UUID.create_sha1 "foo", UUID::NameSpace_URL
53
- assert_equal u1, u2
54
- assert_not_equal u1, u3
55
- end
56
-
57
- def test_v4
58
- # This test is not perfect, because the random nature of version 4
59
- # UUID it is not always true that the three objects below really
60
- # differ. But in real life it's enough to say we're OK when this
61
- # passes.
62
- u1 = UUID.create_random
63
- u2 = UUID.create_random
64
- u3 = UUID.create_random
65
- assert_not_equal u1.raw_bytes, u2.raw_bytes
66
- assert_not_equal u1.raw_bytes, u3.raw_bytes
67
- assert_not_equal u2.raw_bytes, u3.raw_bytes
68
- end
69
-
70
- def test_pack
71
- u1 = UUID.pack 0x6ba7b810, 0x9dad, 0x11d1, 0x80, 0xb4,
72
- "\000\300O\3240\310"
73
- assert_equal UUID::NameSpace_DNS, u1
74
- end
75
-
76
- def test_unpack
77
- tl, tm, th, cl, ch, m = UUID::NameSpace_DNS.unpack
78
- assert_equal 0x6ba7b810, tl
79
- assert_equal 0x9dad, tm
80
- assert_equal 0x11d1, th
81
- assert_equal 0x80, cl
82
- assert_equal 0xb4, ch
83
- assert_equal "\000\300O\3240\310", m
84
- end
85
-
86
- def test_parse
87
- u1 = UUID.pack 0x6ba7b810, 0x9dad, 0x11d1, 0x80, 0xb4,
88
- "\000\300O\3240\310"
89
- u2 = UUID.parse "6ba7b810-9dad-11d1-80b4-00c04fd430c8"
90
- u3 = UUID.parse "urn:uuid:6ba7b810-9dad-11d1-80b4-00c04fd430c8"
91
- assert_equal u1, u2
92
- assert_equal u1, u3
93
- end
94
-
95
- def test_to_s
96
- u1 = UUID.parse "6ba7b810-9dad-11d1-80b4-00c04fd430c8"
97
- assert_equal "6ba7b810-9dad-11d1-80b4-00c04fd430c8", u1.to_s
98
- end
99
-
100
- def test_to_i
101
- u1 = UUID.parse "6ba7b810-9dad-11d1-80b4-00c04fd430c8"
102
- assert_equal 0x6ba7b8109dad11d180b400c04fd430c8, u1.to_i
103
- end
104
-
105
- #def test_time
106
- # assert_raises(RangeError) do
107
- # UUID::Nil.time
108
- # end
109
- # 0.times do |i|
110
- # t = Time.at i, i
111
- # u = UUID.create 0, t
112
- # assert_equal t.tv_sec, u.time.tv_sec
113
- # assert_equal t.tv_usec, u.time.tv_usec
114
- # end
115
- #end
116
-
117
- def test_version
118
- assert_equal 0, UUID::Nil.version
119
- assert_equal 1, UUID.create.version
120
- 100.times do # x100 random tests may be enough?
121
- assert_equal 4, UUID.create_random.version
122
- end
123
- end
124
-
125
- def test_clock
126
- assert_equal 0, UUID::Nil.clock
127
- 1000.times do |i| # clock is 14bit so 8191 suffice, but it's too slow
128
- u = UUID.create i
129
- assert_equal i, u.clock
130
- end
131
- end
132
-
133
- def test_equality
134
- u1 = UUID.parse "6ba7b810-9dad-11d1-80b4-00c04fd430c8"
135
- u2 = UUID.parse "6ba7b810-9dad-11d1-80b4-00c04fd430c8"
136
- assert_equal u1.hash, u2.hash
137
- case u1
138
- when u2
139
- assert_equal true, true # ok
140
- else
141
- flunk "u1 != u2"
142
- end
143
- end
144
- end
145
-
146
-
147
-
148
- # Local Variables:
149
- # mode: ruby
150
- # coding: utf-8
151
- # indent-tabs-mode: t
152
- # tab-width: 3
153
- # ruby-indent-level: 3
154
- # fill-column: 79
155
- # default-justification: full
156
- # End:
157
- # vi: ts=3 sw=3