review 5.6.0 → 5.7.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/rubocop.yml +31 -0
- data/.github/workflows/ruby-tex.yml +1 -1
- data/.github/workflows/ruby-win.yml +1 -1
- data/.github/workflows/ruby.yml +2 -2
- data/.rubocop.yml +13 -2
- data/NEWS.ja.md +22 -0
- data/NEWS.md +21 -0
- data/README.md +1 -1
- data/lib/review/book/base.rb +1 -1
- data/lib/review/builder.rb +4 -8
- data/lib/review/epubmaker/epubcommon.rb +13 -7
- data/lib/review/epubmaker/epubv2.rb +0 -5
- data/lib/review/epubmaker/epubv3.rb +9 -1
- data/lib/review/epubmaker/producer.rb +2 -3
- data/lib/review/epubmaker.rb +2 -4
- data/lib/review/htmlbuilder.rb +2 -2
- data/lib/review/idgxmlbuilder.rb +4 -3
- data/lib/review/img_math.rb +9 -2
- data/lib/review/init.rb +3 -3
- data/lib/review/latexbuilder.rb +1 -1
- data/lib/review/lineinput.rb +2 -2
- data/lib/review/makerhelper.rb +2 -2
- data/lib/review/pdfmaker.rb +3 -5
- data/lib/review/update.rb +3 -7
- data/lib/review/version.rb +1 -1
- data/lib/review/yamlloader.rb +0 -3
- data/review.gemspec +2 -3
- data/samples/syntax-book/Gemfile +1 -1
- data/templates/opf/epubv2.opf.erb +2 -0
- data/templates/opf/epubv3.opf.erb +2 -0
- data/templates/opf/opf_manifest_epubv2.opf.erb +2 -0
- data/templates/opf/opf_manifest_epubv3.opf.erb +2 -0
- data/templates/opf/opf_tocx_epubv3.opf.erb +2 -0
- metadata +10 -139
- data/test/assets/black.eps +0 -280
- data/test/assets/fit.png +0 -0
- data/test/assets/header_listener.html +0 -35
- data/test/assets/img_math/img1.png +0 -0
- data/test/assets/img_math/img2.png +0 -0
- data/test/assets/img_math/img3.png +0 -0
- data/test/assets/large.gif +0 -0
- data/test/assets/large.jpg +0 -0
- data/test/assets/large.png +0 -0
- data/test/assets/large.svg +0 -65
- data/test/assets/syntax_book_index_detail.txt +0 -60
- data/test/assets/test.xml.erb +0 -3
- data/test/assets/test_template.tex +0 -189
- data/test/assets/test_template_backmatter.tex +0 -200
- data/test/book_test_helper.rb +0 -44
- data/test/run_test.rb +0 -12
- data/test/test_book.rb +0 -588
- data/test/test_book_chapter.rb +0 -329
- data/test/test_book_part.rb +0 -53
- data/test/test_builder.rb +0 -128
- data/test/test_catalog.rb +0 -174
- data/test/test_catalog_converter_cmd.rb +0 -73
- data/test/test_compiler.rb +0 -52
- data/test/test_configure.rb +0 -91
- data/test/test_converter.rb +0 -21
- data/test/test_epub3maker.rb +0 -733
- data/test/test_epubmaker.rb +0 -931
- data/test/test_epubmaker_cmd.rb +0 -56
- data/test/test_extentions_hash.rb +0 -66
- data/test/test_helper.rb +0 -62
- data/test/test_htmlbuilder.rb +0 -3315
- data/test/test_htmltoc.rb +0 -29
- data/test/test_htmlutils.rb +0 -43
- data/test/test_i18n.rb +0 -300
- data/test/test_idgxmlbuilder.rb +0 -1529
- data/test/test_idgxmlmaker_cmd.rb +0 -50
- data/test/test_image_finder.rb +0 -81
- data/test/test_img_math.rb +0 -120
- data/test/test_index.rb +0 -287
- data/test/test_indexbuilder.rb +0 -52
- data/test/test_latexbuilder.rb +0 -2972
- data/test/test_latexbuilder_v2.rb +0 -1654
- data/test/test_lineinput.rb +0 -104
- data/test/test_location.rb +0 -30
- data/test/test_logger.rb +0 -33
- data/test/test_makerhelper.rb +0 -44
- data/test/test_markdownbuilder.rb +0 -371
- data/test/test_md2inaobuilder.rb +0 -90
- data/test/test_pdfmaker.rb +0 -354
- data/test/test_pdfmaker_cmd.rb +0 -130
- data/test/test_plaintextbuilder.rb +0 -1214
- data/test/test_preprocessor.rb +0 -196
- data/test/test_review_ext.rb +0 -30
- data/test/test_reviewheaderlistener.rb +0 -49
- data/test/test_rstbuilder.rb +0 -619
- data/test/test_sec_counter.rb +0 -156
- data/test/test_template.rb +0 -33
- data/test/test_textmaker_cmd.rb +0 -58
- data/test/test_textutils.rb +0 -187
- data/test/test_tocprinter.rb +0 -46
- data/test/test_topbuilder.rb +0 -1301
- data/test/test_update.rb +0 -473
- data/test/test_webtocprinter.rb +0 -195
- data/test/test_yamlloader.rb +0 -186
- data/test/test_zip_exporter.rb +0 -106
data/test/test_book_chapter.rb
DELETED
@@ -1,329 +0,0 @@
|
|
1
|
-
require 'book_test_helper'
|
2
|
-
|
3
|
-
class ChapterTest < Test::Unit::TestCase
|
4
|
-
include BookTestHelper
|
5
|
-
|
6
|
-
def setup
|
7
|
-
I18n.setup
|
8
|
-
end
|
9
|
-
|
10
|
-
def test_initialize
|
11
|
-
ch = Book::Chapter.new(:book, :number, :name, '/foo/bar', :io)
|
12
|
-
assert_equal :book, ch.book
|
13
|
-
assert_equal :number, ch.number
|
14
|
-
assert_equal '/foo/bar', ch.path
|
15
|
-
assert_equal '#<ReVIEW::Book::Chapter number /foo/bar>', ch.inspect
|
16
|
-
end
|
17
|
-
|
18
|
-
def test_dirname_and_basename
|
19
|
-
ch = Book::Chapter.new(nil, nil, nil, nil, nil)
|
20
|
-
assert_equal nil, ch.dirname
|
21
|
-
assert_equal nil, ch.basename
|
22
|
-
|
23
|
-
ch = Book::Chapter.new(nil, nil, nil, '/foo/bar', nil)
|
24
|
-
assert_equal '/foo', ch.dirname
|
25
|
-
assert_equal 'bar', ch.basename
|
26
|
-
|
27
|
-
ch = Book::Chapter.new(nil, nil, nil, 'bar', nil)
|
28
|
-
assert_equal '.', ch.dirname
|
29
|
-
assert_equal 'bar', ch.basename
|
30
|
-
end
|
31
|
-
|
32
|
-
def test_name
|
33
|
-
ch = Book::Chapter.new(nil, nil, 'foo', nil)
|
34
|
-
assert_equal 'foo', ch.name
|
35
|
-
|
36
|
-
ch = Book::Chapter.new(nil, nil, 'foo.bar', nil)
|
37
|
-
assert_equal 'foo', ch.name
|
38
|
-
|
39
|
-
# ch = Book::Chapter.new(nil, nil, nil, nil)
|
40
|
-
# assert_raises(TypeError) { ch.name } # XXX: OK?
|
41
|
-
end
|
42
|
-
|
43
|
-
def test_size
|
44
|
-
ch = Book::Chapter.new(nil, nil, nil, __FILE__, :io)
|
45
|
-
filesize = File.read(__FILE__, mode: 'rt:BOM|utf-8').size
|
46
|
-
assert_equal filesize, ch.size
|
47
|
-
|
48
|
-
File.open(__FILE__, 'r') do |i|
|
49
|
-
ch = Book::Chapter.new(nil, nil, nil, nil, i)
|
50
|
-
filesize = File.read(__FILE__, mode: 'rt:BOM|utf-8').size
|
51
|
-
assert_equal filesize, ch.size
|
52
|
-
end
|
53
|
-
end
|
54
|
-
|
55
|
-
def test_title
|
56
|
-
io = StringIO.new
|
57
|
-
book = Book::Base.new
|
58
|
-
ch = Book::Chapter.new(book, nil, nil, nil, io)
|
59
|
-
assert_equal '', ch.title
|
60
|
-
|
61
|
-
io = StringIO.new("=1\n=2\n")
|
62
|
-
ch = Book::Chapter.new(book, nil, nil, nil, io)
|
63
|
-
assert_equal '1', ch.title
|
64
|
-
end
|
65
|
-
|
66
|
-
def test_lines
|
67
|
-
lines = ["1\n", "2\n", '3']
|
68
|
-
tf = Tempfile.new('chapter_test')
|
69
|
-
tf.print lines.join
|
70
|
-
tf.close
|
71
|
-
|
72
|
-
book = Book::Base.new
|
73
|
-
ch = Book::Chapter.new(book, nil, nil, tf.path)
|
74
|
-
ch.generate_indexes
|
75
|
-
assert_equal lines, ch.lines
|
76
|
-
|
77
|
-
lines = ["1\n", "2\n", '3']
|
78
|
-
tf1 = Tempfile.new('chapter_test1')
|
79
|
-
tf1.print lines.join
|
80
|
-
tf1.close
|
81
|
-
tf2 = Tempfile.new('chapter_test2')
|
82
|
-
tf2.puts lines.join
|
83
|
-
tf2.puts lines.join
|
84
|
-
tf2.close
|
85
|
-
|
86
|
-
ch = Book::Chapter.new(book, nil, nil, tf1.path, tf2.path)
|
87
|
-
ch.generate_indexes
|
88
|
-
assert_equal lines, ch.lines # XXX: OK?
|
89
|
-
end
|
90
|
-
|
91
|
-
def test_volume
|
92
|
-
content = "abc\ndef"
|
93
|
-
tf1 = Tempfile.new('chapter_test1')
|
94
|
-
tf1.print content
|
95
|
-
tf1.close
|
96
|
-
tf2 = Tempfile.new('chapter_test2')
|
97
|
-
tf2.print content
|
98
|
-
tf2.print content
|
99
|
-
tf2.close
|
100
|
-
|
101
|
-
book = Book::Base.new
|
102
|
-
ch = Book::Chapter.new(book, nil, nil, tf1.path)
|
103
|
-
assert ch.volume
|
104
|
-
assert_equal content.gsub(/\s/, '').size, ch.volume.bytes
|
105
|
-
|
106
|
-
book = Book::Base.new
|
107
|
-
ch = Book::Chapter.new(book, nil, nil, tf1.path, tf2)
|
108
|
-
assert ch.volume
|
109
|
-
assert_equal content.gsub(/\s/, '').size, ch.volume.bytes # XXX: OK?
|
110
|
-
end
|
111
|
-
|
112
|
-
def test_on_chaps?
|
113
|
-
mktmpbookdir('CHAPS' => "chapter1.re\nchapter2.re",
|
114
|
-
'chapter1.re' => '12345', 'preface.re' => 'abcde') do |dir, book, files|
|
115
|
-
ch1 = Book::Chapter.new(book, 1, 'chapter1', files['chapter1.re'])
|
116
|
-
pre = Book::Chapter.new(book, nil, 'preface', files['preface.re'])
|
117
|
-
|
118
|
-
assert ch1.on_chaps?
|
119
|
-
assert !pre.on_chaps?
|
120
|
-
|
121
|
-
ch2_path = File.join(dir, 'chapter2.re')
|
122
|
-
FileUtils.touch(ch2_path)
|
123
|
-
ch2 = Book::Chapter.new(book, 2, 'chapter2', ch2_path)
|
124
|
-
|
125
|
-
ch3_path = File.join(dir, 'chapter3.re')
|
126
|
-
FileUtils.touch(ch3_path)
|
127
|
-
ch3 = Book::Chapter.new(book, 3, 'chapter3', ch3_path)
|
128
|
-
|
129
|
-
assert ch2.on_chaps?
|
130
|
-
assert !ch3.on_chaps?
|
131
|
-
end
|
132
|
-
end
|
133
|
-
|
134
|
-
def test_invalid_encoding
|
135
|
-
mktmpbookdir('CHAPS' => 'chapter1.re',
|
136
|
-
'chapter1.re' => "= 日本語UTF-8\n") do |_dir, book, files|
|
137
|
-
assert Book::Chapter.new(book, 1, 'chapter1', files['chapter1.re'])
|
138
|
-
end
|
139
|
-
|
140
|
-
# UTF-16LE UTF-16BE UTF-32LE UTF-32BE cause error on Windows
|
141
|
-
%w[CP932 SHIFT_JIS EUC-JP].each do |enc|
|
142
|
-
mktmpbookdir('CHAPS' => 'chapter1.re',
|
143
|
-
'chapter1.re' => "= 日本語UTF-8\n".encode(enc)) do |_dir, book, files|
|
144
|
-
e = assert_raises(ReVIEW::CompileError) { Book::Chapter.new(book, 1, 'chapter1', files['chapter1.re']) }
|
145
|
-
assert_equal 'chapter1: invalid byte sequence in UTF-8', e.message
|
146
|
-
end
|
147
|
-
end
|
148
|
-
end
|
149
|
-
|
150
|
-
def test_list_index
|
151
|
-
do_test_index(<<E, Book::ListIndex, :list_index, :list)
|
152
|
-
//listnum[abc][abc-listnum]{
|
153
|
-
//}
|
154
|
-
//list[def][def-list]{
|
155
|
-
//}
|
156
|
-
//table[def]{
|
157
|
-
//}
|
158
|
-
//table[others]{
|
159
|
-
//}
|
160
|
-
E
|
161
|
-
end
|
162
|
-
|
163
|
-
def test_table_index
|
164
|
-
do_test_index(<<E, Book::TableIndex, :table_index, :table)
|
165
|
-
//table[abc]{
|
166
|
-
//}
|
167
|
-
//table[def]{
|
168
|
-
//}
|
169
|
-
//list[def][def-list]{
|
170
|
-
//}
|
171
|
-
//list[others][other-list]{
|
172
|
-
//}
|
173
|
-
E
|
174
|
-
end
|
175
|
-
|
176
|
-
def test_footnote_index
|
177
|
-
content = <<E
|
178
|
-
@<fn>{abc}@<fn>{def}@<fn>{xyz}
|
179
|
-
//footnote[abc][textabc...]
|
180
|
-
//footnote[def][textdef...]
|
181
|
-
//footnote[xyz][textxyz...]
|
182
|
-
//list[def][def-list]{
|
183
|
-
//}
|
184
|
-
//list[others][others-list]{
|
185
|
-
//}
|
186
|
-
E
|
187
|
-
do_test_index(content, Book::FootnoteIndex, :footnote_index, :footnote) do |ch|
|
188
|
-
assert_raises ReVIEW::KeyError do
|
189
|
-
ch.footnote('xyz2')
|
190
|
-
end
|
191
|
-
end
|
192
|
-
end
|
193
|
-
|
194
|
-
def test_endnote_index
|
195
|
-
content = <<E
|
196
|
-
@<fn>{abc}@<fn>{def}@<fn>{xyz}@<endnote>{abc}@<endnote>{def}@<endnote>{xyz}
|
197
|
-
//footnote[abc][textabc...]
|
198
|
-
//footnote[def][textdef...]
|
199
|
-
//footnote[xyz][textxyz...]
|
200
|
-
//endnote[abc][textabc...]
|
201
|
-
//endnote[def][textdef...]
|
202
|
-
//endnote[xyz][textxyz...]
|
203
|
-
//list[def][def-list]{
|
204
|
-
//}
|
205
|
-
//list[others][others-list]{
|
206
|
-
//}
|
207
|
-
E
|
208
|
-
do_test_index(content, Book::EndnoteIndex, :endnote_index, :endnote) do |ch|
|
209
|
-
assert_raises ReVIEW::KeyError do
|
210
|
-
ch.endnote('xyz2')
|
211
|
-
end
|
212
|
-
end
|
213
|
-
end
|
214
|
-
|
215
|
-
def test_bibpaper
|
216
|
-
do_test_index(<<E, Book::BibpaperIndex, :bibpaper_index, :bibpaper, filename: 'bib.re')
|
217
|
-
//bibpaper[abc][text...]
|
218
|
-
//bibpaper[def][text...]
|
219
|
-
//bibpaper[xyz][text...]
|
220
|
-
E
|
221
|
-
assert_raises FileNotFound do
|
222
|
-
do_test_index('', Book::BibpaperIndex, :bibpaper_index, :bibpaper, filename: 'bib')
|
223
|
-
end
|
224
|
-
end
|
225
|
-
|
226
|
-
def test_headline_index
|
227
|
-
do_test_index(<<E, Book::HeadlineIndex, :headline_index, :headline, propagate: false)
|
228
|
-
== x
|
229
|
-
== abc
|
230
|
-
== def
|
231
|
-
=== def
|
232
|
-
//table[others]{
|
233
|
-
//}
|
234
|
-
E
|
235
|
-
end
|
236
|
-
|
237
|
-
def test_headline_index_nullsection
|
238
|
-
do_test_index(<<E, Book::HeadlineIndex, :headline_index, :headline, propagate: false)
|
239
|
-
== abc
|
240
|
-
==== dummy
|
241
|
-
== def
|
242
|
-
E
|
243
|
-
end
|
244
|
-
|
245
|
-
def test_column_index
|
246
|
-
do_test_index(<<E, Book::ColumnIndex, :column_index, :column, propagate: false)
|
247
|
-
= dummy1
|
248
|
-
===[column]{abc} aaaa
|
249
|
-
= dummy2
|
250
|
-
===[column] def
|
251
|
-
== dummy3
|
252
|
-
E
|
253
|
-
end
|
254
|
-
|
255
|
-
def test_image
|
256
|
-
do_test_index(<<E, Book::ImageIndex, :image_index, :image)
|
257
|
-
//image[abc][abc-image]{
|
258
|
-
//}
|
259
|
-
//image[def][abc-image]{
|
260
|
-
//}
|
261
|
-
//list[def][def-list]{
|
262
|
-
//}
|
263
|
-
//list[others][others-list]{
|
264
|
-
//}
|
265
|
-
E
|
266
|
-
|
267
|
-
do_test_index(<<E, Book::NumberlessImageIndex, :numberless_image_index, :image, propagate: false)
|
268
|
-
//numberlessimage[abc]{
|
269
|
-
//}
|
270
|
-
//numberlessimage[def]{
|
271
|
-
//}
|
272
|
-
//list[def][def-list]{
|
273
|
-
//}
|
274
|
-
//list[others][others-list]{
|
275
|
-
//}
|
276
|
-
E
|
277
|
-
|
278
|
-
do_test_index(<<E, Book::ImageIndex, :image_index, :image)
|
279
|
-
//numberlessimage[abc]{
|
280
|
-
//}
|
281
|
-
//image[def][def-image]{
|
282
|
-
//}
|
283
|
-
//list[def][def-list]{
|
284
|
-
//}
|
285
|
-
//list[others][others-list]{
|
286
|
-
//}
|
287
|
-
E
|
288
|
-
|
289
|
-
do_test_index(<<E, Book::NumberlessImageIndex, :numberless_image_index, :image, propagate: false)
|
290
|
-
//numberlessimage[abc]{
|
291
|
-
//}
|
292
|
-
//image[def][def-image]{
|
293
|
-
//}
|
294
|
-
//list[def][def-list]{
|
295
|
-
//}
|
296
|
-
//list[others][others-list]{
|
297
|
-
//}
|
298
|
-
E
|
299
|
-
end
|
300
|
-
|
301
|
-
def do_test_index(content, _klass, _list_method, ref_method, opts = {})
|
302
|
-
Dir.mktmpdir do |dir|
|
303
|
-
path = File.join(dir, opts[:filename] || 'chapter.re')
|
304
|
-
|
305
|
-
File.open(path, 'w') do |o|
|
306
|
-
o.print content
|
307
|
-
end
|
308
|
-
|
309
|
-
book = Book::Base.new(dir)
|
310
|
-
|
311
|
-
ch = Book::Chapter.new(book, 1, 'chapter', path)
|
312
|
-
book.generate_indexes
|
313
|
-
ch.generate_indexes
|
314
|
-
assert ch.__send__(ref_method, 'abc')
|
315
|
-
assert ch.__send__(ref_method, 'def')
|
316
|
-
assert_raises ReVIEW::KeyError do
|
317
|
-
ch.__send__(ref_method, nil)
|
318
|
-
end
|
319
|
-
assert_raises ReVIEW::KeyError do
|
320
|
-
ch.__send__(ref_method, 'others')
|
321
|
-
end
|
322
|
-
assert_raises ReVIEW::KeyError do
|
323
|
-
ch.__send__(ref_method, 'not exist id')
|
324
|
-
end
|
325
|
-
|
326
|
-
yield(ch) if block_given?
|
327
|
-
end
|
328
|
-
end
|
329
|
-
end
|
data/test/test_book_part.rb
DELETED
@@ -1,53 +0,0 @@
|
|
1
|
-
require 'book_test_helper'
|
2
|
-
class PartTest < Test::Unit::TestCase
|
3
|
-
include BookTestHelper
|
4
|
-
|
5
|
-
def test_initialize
|
6
|
-
book = Book::Base.new
|
7
|
-
part = Book::Part.new(book, nil, nil)
|
8
|
-
assert_equal nil, part.number
|
9
|
-
assert_equal nil, part.chapters
|
10
|
-
assert_equal '', part.name
|
11
|
-
|
12
|
-
part = Book::Part.new(book, 123, [], 'name')
|
13
|
-
assert_equal 123, part.number
|
14
|
-
assert_equal [], part.chapters
|
15
|
-
assert_equal 'name', part.name
|
16
|
-
end
|
17
|
-
|
18
|
-
def test_each_chapter
|
19
|
-
part = Book::Part.new(nil, nil, [1, 2, 3])
|
20
|
-
|
21
|
-
tmp = []
|
22
|
-
part.each_chapter { |ch| tmp << ch }
|
23
|
-
assert_equal [1, 2, 3], tmp
|
24
|
-
end
|
25
|
-
|
26
|
-
def test_volume
|
27
|
-
book = Book::Base.new
|
28
|
-
part = Book::Part.new(book, nil, [])
|
29
|
-
assert part.volume
|
30
|
-
assert_equal 0, part.volume.bytes
|
31
|
-
assert_equal 0, part.volume.chars
|
32
|
-
assert_equal 0, part.volume.lines
|
33
|
-
|
34
|
-
chs = []
|
35
|
-
tfs = [] ## prevent from removing Tempfile
|
36
|
-
Tempfile.open('part_test') do |o|
|
37
|
-
o.print '12345'
|
38
|
-
chs << Book::Chapter.new(book, nil, nil, o.path)
|
39
|
-
tfs << o
|
40
|
-
end
|
41
|
-
Tempfile.open('part_test') do |o|
|
42
|
-
o.print '67890'
|
43
|
-
chs << Book::Chapter.new(book, nil, nil, o.path)
|
44
|
-
tfs << o
|
45
|
-
end
|
46
|
-
|
47
|
-
part = Book::Part.new(book, nil, chs)
|
48
|
-
assert part.volume
|
49
|
-
assert part.volume.bytes == 0
|
50
|
-
assert part.volume.chars == 0
|
51
|
-
assert part.volume.lines == 0
|
52
|
-
end
|
53
|
-
end
|
data/test/test_builder.rb
DELETED
@@ -1,128 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
require 'review/builder'
|
3
|
-
|
4
|
-
require 'review/book'
|
5
|
-
|
6
|
-
class MockCompiler
|
7
|
-
def text(s)
|
8
|
-
[:text, s]
|
9
|
-
end
|
10
|
-
end
|
11
|
-
|
12
|
-
class BuidlerTest < Test::Unit::TestCase
|
13
|
-
include ReVIEW
|
14
|
-
|
15
|
-
def setup
|
16
|
-
@b = Builder.new
|
17
|
-
chap = ReVIEW::Book::Chapter.new(nil, nil, '-', nil)
|
18
|
-
@b.bind(MockCompiler.new, chap, nil)
|
19
|
-
end
|
20
|
-
|
21
|
-
def test_initialize
|
22
|
-
assert Builder.new
|
23
|
-
end
|
24
|
-
|
25
|
-
def test_bind
|
26
|
-
b = Builder.new
|
27
|
-
chap = ReVIEW::Book::Chapter.new(ReVIEW::Book::Base.new, nil, '-', nil)
|
28
|
-
assert_nothing_raised do
|
29
|
-
b.bind(nil, chap, nil)
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
def test_result
|
34
|
-
b = Builder.new
|
35
|
-
assert_raises(NoMethodError) do # XXX: OK?
|
36
|
-
b.result
|
37
|
-
end
|
38
|
-
|
39
|
-
b = Builder.new
|
40
|
-
chapter = ReVIEW::Book::Chapter.new(ReVIEW::Book::Base.new, nil, '-', nil)
|
41
|
-
b.bind(nil, chapter, nil)
|
42
|
-
assert_equal '', b.result
|
43
|
-
end
|
44
|
-
|
45
|
-
def test_print_and_puts
|
46
|
-
b = Builder.new
|
47
|
-
assert_raises(NoMethodError) do # XXX: OK?
|
48
|
-
b.print ''
|
49
|
-
end
|
50
|
-
assert_raises(NoMethodError) do # XXX: OK?
|
51
|
-
b.puts ''
|
52
|
-
end
|
53
|
-
end
|
54
|
-
|
55
|
-
def test_not_implemented_methods
|
56
|
-
ex = NoMethodError # XXX: OK?
|
57
|
-
%i[list_header list_body listnum_body source_header source_body image_image image_dummy table_header table_begin tr th table_end compile_ruby compile_kw compile_href bibpaper_header bibpaper_bibpaper inline_hd_chap].each do |m|
|
58
|
-
b = Builder.new
|
59
|
-
assert_raises(ex) { b.__send__(m) }
|
60
|
-
end
|
61
|
-
end
|
62
|
-
|
63
|
-
def test_compile_inline
|
64
|
-
text = 'abc'
|
65
|
-
assert_equal [:text, text], @b.compile_inline(text)
|
66
|
-
end
|
67
|
-
|
68
|
-
def test_inline_ruby
|
69
|
-
def @b.compile_ruby(base, ruby)
|
70
|
-
[base, ruby]
|
71
|
-
end
|
72
|
-
str = @b.inline_ruby('foo,bar')
|
73
|
-
assert_equal str, ['foo', 'bar']
|
74
|
-
str = @b.inline_ruby(' foo , bar ')
|
75
|
-
assert_equal str, ['foo', 'bar']
|
76
|
-
str = @b.inline_ruby('foo\\,\\,,\\,bar,buz')
|
77
|
-
assert_equal str, ['foo,,', ',bar,buz']
|
78
|
-
end
|
79
|
-
|
80
|
-
def test_compile_inline_backslash
|
81
|
-
text = 'abc\\d\\#a'
|
82
|
-
assert_equal [:text, text], @b.compile_inline(text)
|
83
|
-
end
|
84
|
-
|
85
|
-
def test_inline_missing_ref
|
86
|
-
b = Builder.new
|
87
|
-
chapter = ReVIEW::Book::Chapter.new(ReVIEW::Book::Base.new, 1, 'chap1', nil, StringIO.new)
|
88
|
-
b.bind(nil, chapter, nil)
|
89
|
-
e = assert_raises(ReVIEW::ApplicationError) { b.inline_list('unknown|list1') }
|
90
|
-
assert_equal 'unknown list: unknown|list1', e.message
|
91
|
-
e = assert_raises(ReVIEW::ApplicationError) { b.inline_table('unknown|table1') }
|
92
|
-
assert_equal 'unknown table: unknown|table1', e.message
|
93
|
-
e = assert_raises(ReVIEW::ApplicationError) { b.inline_img('unknown|img1') }
|
94
|
-
assert_equal 'unknown image: unknown|img1', e.message
|
95
|
-
e = assert_raises(ReVIEW::ApplicationError) { b.inline_column('unknown|column1') }
|
96
|
-
assert_equal 'unknown column: unknown|column1', e.message
|
97
|
-
e = assert_raises(ReVIEW::ApplicationError) { b.inline_fn('unknown|footnote1') }
|
98
|
-
assert_equal 'unknown footnote: unknown|footnote1', e.message
|
99
|
-
e = assert_raises(ReVIEW::ApplicationError) { b.inline_endnote('endnote1') }
|
100
|
-
assert_equal 'unknown endnote: endnote1', e.message
|
101
|
-
end
|
102
|
-
|
103
|
-
def test_nest_error
|
104
|
-
b = XBuilder.new
|
105
|
-
b.children = nil
|
106
|
-
assert_equal '', b.solve_nest('')
|
107
|
-
b.children = ['dl']
|
108
|
-
e = assert_raises(ReVIEW::ApplicationError) { b.solve_nest('') }
|
109
|
-
assert_equal ': //beginchild of dl misses //endchild', e.message
|
110
|
-
b.children = ['ul', 'dl', 'ol']
|
111
|
-
e = assert_raises(ReVIEW::ApplicationError) { b.solve_nest('') }
|
112
|
-
assert_equal ': //beginchild of ol,dl,ul misses //endchild', e.message
|
113
|
-
|
114
|
-
assert_equal "\u0001→/ol←\u0001", b.endchild
|
115
|
-
assert_equal "\u0001→/dl←\u0001", b.endchild
|
116
|
-
assert_equal "\u0001→/ul←\u0001", b.endchild
|
117
|
-
e = assert_raises(ReVIEW::ApplicationError) { b.endchild }
|
118
|
-
assert_equal ": //endchild is shown, but any opened //beginchild doesn't exist", e.message
|
119
|
-
end
|
120
|
-
|
121
|
-
class XBuilder < Builder
|
122
|
-
attr_accessor :children
|
123
|
-
|
124
|
-
def puts(s)
|
125
|
-
s
|
126
|
-
end
|
127
|
-
end
|
128
|
-
end
|
data/test/test_catalog.rb
DELETED
@@ -1,174 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
require 'book_test_helper'
|
3
|
-
require 'review/catalog'
|
4
|
-
|
5
|
-
class CatalogTest < Test::Unit::TestCase
|
6
|
-
include ReVIEW
|
7
|
-
include BookTestHelper
|
8
|
-
|
9
|
-
def test_predef
|
10
|
-
sut = Catalog.new(yaml)
|
11
|
-
exp = %w[pre01.re pre02.re]
|
12
|
-
assert_equal(exp, sut.predef)
|
13
|
-
end
|
14
|
-
|
15
|
-
def test_chaps
|
16
|
-
sut = Catalog.new(yaml)
|
17
|
-
exp = %w[ch01.re ch02.re]
|
18
|
-
assert_equal(exp, sut.chaps)
|
19
|
-
end
|
20
|
-
|
21
|
-
def test_chaps_empty
|
22
|
-
yaml = StringIO.new
|
23
|
-
sut = Catalog.new(yaml)
|
24
|
-
assert_equal([], sut.chaps)
|
25
|
-
end
|
26
|
-
|
27
|
-
def test_appendix
|
28
|
-
sut = Catalog.new(yaml)
|
29
|
-
exp = %w[post01.re post02.re]
|
30
|
-
assert_equal(exp, sut.appendix)
|
31
|
-
end
|
32
|
-
|
33
|
-
def test_chaps_with_parts
|
34
|
-
sut = Catalog.new(yaml_with_parts)
|
35
|
-
exp = %w[ch01.re ch02.re ch03.re ch04.re ch05.re]
|
36
|
-
assert_equal(exp, sut.chaps)
|
37
|
-
end
|
38
|
-
|
39
|
-
def test_parts
|
40
|
-
sut = Catalog.new(yaml_with_parts)
|
41
|
-
exp = %w[part1.re part2.re]
|
42
|
-
assert_equal(exp, sut.parts)
|
43
|
-
end
|
44
|
-
|
45
|
-
def test_parts_with_empty
|
46
|
-
sut = Catalog.new(yaml)
|
47
|
-
assert_equal([], sut.parts)
|
48
|
-
end
|
49
|
-
|
50
|
-
def test_empty_parts
|
51
|
-
sut = Catalog.new(StringIO.new)
|
52
|
-
assert_equal([], sut.parts_with_chaps)
|
53
|
-
end
|
54
|
-
|
55
|
-
def test_parts2
|
56
|
-
sut = Catalog.new(yaml_with_parts)
|
57
|
-
assert_equal(['ch01.re',
|
58
|
-
{ 'part1.re' => ['ch02.re'] },
|
59
|
-
'ch03.re',
|
60
|
-
{ 'part2.re' => ['ch04.re', 'ch05.re'] }],
|
61
|
-
sut.parts_with_chaps)
|
62
|
-
end
|
63
|
-
|
64
|
-
def test_postdef
|
65
|
-
sut = Catalog.new(yaml)
|
66
|
-
exp = %w[back01.re back02.re]
|
67
|
-
assert_equal(exp, sut.postdef)
|
68
|
-
end
|
69
|
-
|
70
|
-
def test_from_object
|
71
|
-
sut = Catalog.new(yaml_hash)
|
72
|
-
exp = %w[ch01.re ch02.re]
|
73
|
-
assert_equal(exp, sut.chaps)
|
74
|
-
end
|
75
|
-
|
76
|
-
def test_validate
|
77
|
-
mktmpbookdir do |dir, _book, _files|
|
78
|
-
%w[pre01.re pre02.re ch01.re ch02.re post01.re post02.re back01.re back02.re].each do |file|
|
79
|
-
FileUtils.touch(file)
|
80
|
-
end
|
81
|
-
cat = Catalog.new(yaml_hash)
|
82
|
-
cat.validate!({ 'contentdir' => '.' }, dir)
|
83
|
-
end
|
84
|
-
end
|
85
|
-
|
86
|
-
def test_validate_with_parts
|
87
|
-
mktmpbookdir do |dir, _book, _files|
|
88
|
-
%w[ch01.re part1.re ch02.re ch03.re part2.re ch04.re ch05.re].each do |file|
|
89
|
-
FileUtils.touch(file)
|
90
|
-
end
|
91
|
-
cat = Catalog.new(yaml_with_parts)
|
92
|
-
cat.validate!({ 'contentdir' => '.' }, dir)
|
93
|
-
end
|
94
|
-
end
|
95
|
-
|
96
|
-
def test_validate_fail_ch02
|
97
|
-
assert_raise FileNotFound do
|
98
|
-
mktmpbookdir do |dir, _book, _files|
|
99
|
-
%w[pre01.re pre02.re ch01.re].each do |file|
|
100
|
-
FileUtils.touch(file)
|
101
|
-
end
|
102
|
-
cat = Catalog.new(yaml_hash)
|
103
|
-
cat.validate!({ 'contentdir' => '.' }, dir)
|
104
|
-
end
|
105
|
-
end
|
106
|
-
end
|
107
|
-
|
108
|
-
def test_validate_fail_back02
|
109
|
-
assert_raise FileNotFound do
|
110
|
-
mktmpbookdir do |dir, _book, _files|
|
111
|
-
%w[pre01.re pre02.re ch01.re ch02.re post01.re post02.re back01.re back03.re].each do |file|
|
112
|
-
FileUtils.touch(file)
|
113
|
-
end
|
114
|
-
cat = Catalog.new(yaml_hash)
|
115
|
-
cat.validate!({ 'contentdir' => '.' }, dir)
|
116
|
-
end
|
117
|
-
end
|
118
|
-
end
|
119
|
-
|
120
|
-
def test_validate_contentdir
|
121
|
-
mktmpbookdir do |dir, _book, _files|
|
122
|
-
Dir.mkdir('content')
|
123
|
-
%w[content/pre01.re content/pre02.re content/ch01.re content/ch02.re content/post01.re content/post02.re content/back01.re content/back02.re].each do |file|
|
124
|
-
FileUtils.touch(file)
|
125
|
-
end
|
126
|
-
cat = Catalog.new(yaml_hash)
|
127
|
-
cat.validate!({ 'contentdir' => 'content' }, dir)
|
128
|
-
end
|
129
|
-
end
|
130
|
-
|
131
|
-
private
|
132
|
-
|
133
|
-
def yaml
|
134
|
-
StringIO.new(<<-EOS)
|
135
|
-
|
136
|
-
PREDEF:
|
137
|
-
- pre01.re
|
138
|
-
- pre02.re
|
139
|
-
|
140
|
-
CHAPS:
|
141
|
-
- ch01.re
|
142
|
-
- ch02.re
|
143
|
-
|
144
|
-
APPENDIX:
|
145
|
-
- post01.re
|
146
|
-
- post02.re
|
147
|
-
|
148
|
-
POSTDEF:
|
149
|
-
- back01.re
|
150
|
-
- back02.re
|
151
|
-
EOS
|
152
|
-
end
|
153
|
-
|
154
|
-
def yaml_hash
|
155
|
-
{ 'PREDEF' => %w[pre01.re pre02.re],
|
156
|
-
'CHAPS' => %w[ch01.re ch02.re],
|
157
|
-
'APPENDIX' => %w[post01.re post02.re],
|
158
|
-
'POSTDEF' => %w[back01.re back02.re] }
|
159
|
-
end
|
160
|
-
|
161
|
-
def yaml_with_parts
|
162
|
-
StringIO.new(<<-EOS)
|
163
|
-
CHAPS:
|
164
|
-
- ch01.re
|
165
|
-
- part1.re:
|
166
|
-
- ch02.re
|
167
|
-
- ch03.re
|
168
|
-
- part2.re:
|
169
|
-
- ch04.re
|
170
|
-
- ch05.re
|
171
|
-
|
172
|
-
EOS
|
173
|
-
end
|
174
|
-
end
|