review 1.0.0 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.travis.yml +1 -2
- data/ChangeLog +65 -0
- data/Gemfile +5 -0
- data/README.rdoc +6 -1
- data/Rakefile +14 -28
- data/bin/review-check +9 -21
- data/bin/review-compile +45 -12
- data/bin/review-epubmaker +477 -220
- data/bin/review-epubmaker-ng +5 -14
- data/bin/review-index +4 -2
- data/bin/review-init +94 -0
- data/bin/review-pdfmaker +70 -287
- data/bin/review-preproc +5 -2
- data/bin/review-vol +4 -11
- data/debian/changelog +3 -3
- data/debian/copyright +5 -3
- data/debian/docs +1 -0
- data/doc/format.rdoc +57 -11
- data/doc/quickstart.rdoc +4 -4
- data/doc/sample.yaml +11 -7
- data/lib/epubmaker.rb +1 -1
- data/lib/epubmaker/epubv2.rb +26 -27
- data/lib/epubmaker/epubv3.rb +13 -13
- data/lib/epubmaker/producer.rb +1 -1
- data/lib/review.rb +3 -4
- data/lib/review/book.rb +17 -581
- data/lib/review/book/base.rb +247 -0
- data/lib/review/book/chapter.rb +81 -0
- data/lib/review/book/compilable.rb +163 -0
- data/lib/review/book/index.rb +339 -0
- data/lib/review/book/page_metric.rb +38 -0
- data/lib/review/book/parameters.rb +97 -0
- data/lib/review/book/part.rb +44 -0
- data/lib/review/book/volume.rb +65 -0
- data/lib/review/builder.rb +34 -40
- data/lib/review/compiler.rb +32 -13
- data/lib/review/configure.rb +38 -0
- data/lib/review/ewbbuilder.rb +23 -21
- data/lib/review/extentions.rb +3 -0
- data/lib/review/extentions/object.rb +9 -0
- data/lib/review/{compat.rb → extentions/string.rb} +11 -0
- data/lib/review/htmlbuilder.rb +162 -74
- data/lib/review/htmlutils.rb +28 -1
- data/lib/review/i18n.yaml +11 -0
- data/lib/review/idgxmlbuilder.rb +119 -35
- data/lib/review/inaobuilder.rb +355 -0
- data/lib/review/latexbuilder.rb +133 -59
- data/lib/review/latexutils.rb +15 -6
- data/lib/review/makerhelper.rb +59 -0
- data/lib/review/markdownbuilder.rb +129 -0
- data/lib/review/preprocessor.rb +20 -7
- data/lib/review/review.tex.erb +250 -0
- data/lib/review/textutils.rb +28 -3
- data/lib/review/tocparser.rb +20 -12
- data/lib/review/tocprinter.rb +7 -3
- data/lib/review/topbuilder.rb +44 -27
- data/lib/review/version.rb +3 -0
- data/review.gemspec +20 -117
- data/test/book_test_helper.rb +35 -0
- data/test/sample-book/README.md +5 -0
- data/test/sample-book/src/CHAPS +2 -0
- data/test/sample-book/src/PREDEF +1 -0
- data/test/sample-book/src/Rakefile +26 -0
- data/test/sample-book/src/_cover.html +3 -0
- data/test/sample-book/src/ch01.re +71 -0
- data/test/sample-book/src/ch02.re +3 -0
- data/test/sample-book/src/config.yml +55 -0
- data/test/sample-book/src/images/ch01-imgsample.jpg +0 -0
- data/test/sample-book/src/images/cover.jpg +0 -0
- data/test/sample-book/src/main.css +251 -0
- data/test/sample-book/src/preface.re +15 -0
- data/test/sample-book/src/sty/jumoline.sty +310 -0
- data/test/sample-book/src/sty/samplemacro.sty +21 -0
- data/test/sample-book/src/vendor/jumoline/README +29 -0
- data/test/sample-book/src/vendor/jumoline/jumoline.dtx +2988 -0
- data/test/sample-book/src/vendor/jumoline/jumoline.ins +6 -0
- data/test/test_book.rb +26 -646
- data/test/test_book_chapter.rb +418 -0
- data/test/test_book_parameter.rb +42 -0
- data/test/test_book_part.rb +53 -0
- data/test/test_builder.rb +17 -10
- data/test/test_compiler.rb +46 -0
- data/test/test_epubmaker.rb +1 -1
- data/test/test_epubmaker_cmd.rb +36 -0
- data/test/test_helper.rb +17 -0
- data/test/test_htmlbuilder.rb +156 -24
- data/test/test_htmlutils.rb +4 -0
- data/test/test_i18n.rb +6 -2
- data/test/test_idgxmlbuilder.rb +33 -11
- data/test/test_inaobuilder.rb +247 -0
- data/test/test_index.rb +31 -0
- data/test/test_latexbuilder.rb +115 -35
- data/test/test_makerhelper.rb +50 -0
- data/test/test_pdfmaker_cmd.rb +36 -0
- data/test/test_preprocessor.rb +7 -7
- data/test/test_topbuilder.rb +6 -7
- data/test/test_uuid.rb +1 -0
- metadata +117 -12
- data/lib/review/index.rb +0 -323
- data/lib/review/volume.rb +0 -66
@@ -0,0 +1,418 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
require 'book_test_helper'
|
3
|
+
class ChapterTest < Test::Unit::TestCase
|
4
|
+
include BookTestHelper
|
5
|
+
|
6
|
+
def setup
|
7
|
+
|
8
|
+
if "".respond_to?(:encode)
|
9
|
+
@utf8_str = "あいうえお"
|
10
|
+
@eucjp_str = "あいうえお".encode("EUC-JP")
|
11
|
+
@sjis_str = "あいうえお".encode("Shift_JIS")
|
12
|
+
@jis_str = "あいうえお".encode("ISO-2022-JP")
|
13
|
+
else
|
14
|
+
@utf8_str = "\xe3\x81\x82\xe3\x81\x84\xe3\x81\x86\xe3\x81\x88\xe3\x81\x8a" # "あいうえお"
|
15
|
+
@eucjp_str = "\xa4\xa2\xa4\xa4\xa4\xa6\xa4\xa8\xa4\xaa"
|
16
|
+
@sjis_str = "\x82\xa0\x82\xa2\x82\xa4\x82\xa6\x82\xa8"
|
17
|
+
@jis_str = "\x1b\x24\x42\x24\x22\x24\x24\x24\x26\x24\x28\x24\x2a\x1b\x28\x42"
|
18
|
+
end
|
19
|
+
=begin
|
20
|
+
@utf8_str = "\xe3\x81\x82\xe3\x81\x84\xe3\x81\x86\xe3\x81\x88\xe3\x81\x8a" # "あいうえお"
|
21
|
+
@eucjp_str = "\xa4\xa2\xa4\xa4\xa4\xa6\xa4\xa8\xa4\xaa"
|
22
|
+
@sjis_str = "\x82\xa0\x82\xa2\x82\xa4\x82\xa6\x82\xa8"
|
23
|
+
@jis_str = "\x1b\x24\x42\x24\x22\x24\x24\x24\x26\x24\x28\x24\x2a\x1b\x28\x42"
|
24
|
+
=end
|
25
|
+
end
|
26
|
+
|
27
|
+
def test_s_intern_pathes
|
28
|
+
dir1_files = {
|
29
|
+
'CHAPS' => "ch1.re\nch2.re\n",
|
30
|
+
'ch1.re' => 'ch1',
|
31
|
+
'ch2.re' => 'ch2',
|
32
|
+
}
|
33
|
+
dir2_files = {
|
34
|
+
'CHAPS' => "ch1.re\n",
|
35
|
+
'ch1.re' => 'ch1',
|
36
|
+
}
|
37
|
+
mktmpbookdir dir1_files do |dir1, book1, files1|
|
38
|
+
mktmpbookdir dir2_files do |dir2, book2, files2|
|
39
|
+
paths = (files1.values + files2.values).flatten.grep(/\.re\z/)
|
40
|
+
chs = Book::Chapter.intern_pathes(paths)
|
41
|
+
|
42
|
+
assert_equal 3, chs.size
|
43
|
+
assert chs[0].book == chs[1].book
|
44
|
+
assert chs[0].book != chs[2].book
|
45
|
+
assert dir1, chs[0].book.basedir
|
46
|
+
assert dir2, chs[2].book.basedir
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
dir_files = {
|
51
|
+
'CHAPS' => "ch1.re\n",
|
52
|
+
'ch1.re' => 'ch1',
|
53
|
+
}
|
54
|
+
mktmpbookdir dir_files do |dir, book, files|
|
55
|
+
paths = files.values.grep(/\.re\z/)
|
56
|
+
paths << __FILE__ + ' not exist file.re'
|
57
|
+
assert_raises ReVIEW::FileNotFound do
|
58
|
+
Book::Chapter.intern_pathes(paths)
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
dir_files = {
|
63
|
+
'ch1.re' => 'ch1 not in CHAPS',
|
64
|
+
'ch2.re' => 'ch2 not in CHAPS',
|
65
|
+
}
|
66
|
+
mktmpbookdir dir_files do |dir, book, files|
|
67
|
+
paths = files.values.grep(/\.re\z/)
|
68
|
+
assert_nothing_raised do
|
69
|
+
Book::Chapter.intern_pathes(paths)
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
dir_files = {
|
74
|
+
'CHAPS' => "ch1.re\n",
|
75
|
+
'ch1.re' => 'ch1',
|
76
|
+
'ch2.re' => 'ch2 not in CHAPS',
|
77
|
+
}
|
78
|
+
mktmpbookdir dir_files do |dir, book, files|
|
79
|
+
paths = files.values.grep(/\.re\z/)
|
80
|
+
assert_raises KeyError::FileNotFound do
|
81
|
+
Book::Chapter.intern_pathes(paths)
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
dir_files = {
|
86
|
+
'CHAPS' => "ch1.re\n",
|
87
|
+
'ch1.re' => 'ch1',
|
88
|
+
'preface.re' => 'preface',
|
89
|
+
}
|
90
|
+
mktmpbookdir dir_files do |dir, book, files|
|
91
|
+
paths = files.values.grep(/\.re\z/)
|
92
|
+
assert_nothing_raised do
|
93
|
+
Book::Chapter.intern_pathes(paths)
|
94
|
+
end
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
def test_s_for_stdin
|
99
|
+
assert Book::Chapter.for_stdin
|
100
|
+
end
|
101
|
+
|
102
|
+
def test_s_for_path
|
103
|
+
assert Book::Chapter.for_path(1, __FILE__)
|
104
|
+
end
|
105
|
+
|
106
|
+
def test_initialize
|
107
|
+
ch = Book::Chapter.new(:book, :number, :name, '/foo/bar', :io)
|
108
|
+
assert_equal :book, ch.env
|
109
|
+
assert_equal :book, ch.book
|
110
|
+
assert_equal :number, ch.number
|
111
|
+
assert_equal '/foo/bar', ch.path
|
112
|
+
assert_equal "#<ReVIEW::Book::Chapter number /foo/bar>", ch.inspect
|
113
|
+
end
|
114
|
+
|
115
|
+
def test_dirname_and_basename
|
116
|
+
ch = Book::Chapter.new(nil, nil, nil, nil, nil)
|
117
|
+
assert_equal nil, ch.dirname
|
118
|
+
assert_equal nil, ch.basename
|
119
|
+
|
120
|
+
ch = Book::Chapter.new(nil, nil, nil, '/foo/bar', nil)
|
121
|
+
assert_equal '/foo', ch.dirname
|
122
|
+
assert_equal 'bar', ch.basename
|
123
|
+
|
124
|
+
ch = Book::Chapter.new(nil, nil, nil, 'bar', nil)
|
125
|
+
assert_equal '.', ch.dirname
|
126
|
+
assert_equal 'bar', ch.basename
|
127
|
+
end
|
128
|
+
|
129
|
+
def test_name
|
130
|
+
ch = Book::Chapter.new(nil, nil, 'foo', nil)
|
131
|
+
assert_equal 'foo', ch.name
|
132
|
+
|
133
|
+
ch = Book::Chapter.new(nil, nil, 'foo.bar', nil)
|
134
|
+
assert_equal 'foo', ch.name
|
135
|
+
|
136
|
+
ch = Book::Chapter.new(nil, nil, nil, nil)
|
137
|
+
assert_raises(TypeError) { ch.name } # XXX: OK?
|
138
|
+
end
|
139
|
+
|
140
|
+
def test_open
|
141
|
+
ch = Book::Chapter.new(nil, nil, nil, __FILE__, :io)
|
142
|
+
assert_equal :io, ch.open
|
143
|
+
assert_equal [:io], ch.open {|io| [io] }
|
144
|
+
|
145
|
+
ch = Book::Chapter.new(nil, nil, nil, __FILE__)
|
146
|
+
assert_equal __FILE__, ch.open.path
|
147
|
+
assert_equal [__FILE__], ch.open {|io| [io.path] }
|
148
|
+
end
|
149
|
+
|
150
|
+
def test_size
|
151
|
+
ch = Book::Chapter.new(nil, nil, nil, __FILE__, :io)
|
152
|
+
assert_equal File.size(__FILE__), ch.size
|
153
|
+
|
154
|
+
File.open(__FILE__, 'r') do |i|
|
155
|
+
ch = Book::Chapter.new(nil, nil, nil, nil, i)
|
156
|
+
assert_raises(TypeError) do # XXX: OK?
|
157
|
+
ch.size
|
158
|
+
end
|
159
|
+
end
|
160
|
+
end
|
161
|
+
|
162
|
+
def test_title
|
163
|
+
io = StringIO.new
|
164
|
+
ch = Book::Chapter.new(nil, nil, nil, nil, io)
|
165
|
+
assert_equal '', ch.title
|
166
|
+
|
167
|
+
io = StringIO.new("=1\n=2\n")
|
168
|
+
ch = Book::Chapter.new(nil, nil, nil, nil, io)
|
169
|
+
assert_equal '1', ch.title
|
170
|
+
|
171
|
+
|
172
|
+
[
|
173
|
+
['EUC', @eucjp_str],
|
174
|
+
['SJIS', @sjis_str],
|
175
|
+
# ['JIS', @jis_str],
|
176
|
+
['XYZ', @eucjp_str],
|
177
|
+
].each do |enc, instr|
|
178
|
+
io = StringIO.new("= #{instr}\n")
|
179
|
+
ch = Book::Chapter.new(nil, nil, nil, nil, io)
|
180
|
+
ReVIEW.book.param = {'inencoding' => enc}
|
181
|
+
assert_equal @utf8_str, ch.title
|
182
|
+
assert_equal @utf8_str, ch.instance_eval { @title }
|
183
|
+
end
|
184
|
+
end
|
185
|
+
|
186
|
+
def test_content
|
187
|
+
[
|
188
|
+
['EUC', @eucjp_str],
|
189
|
+
['SJIS', @sjis_str],
|
190
|
+
['JIS', @jis_str],
|
191
|
+
['XYZ', @eucjp_str],
|
192
|
+
].each do |enc, instr|
|
193
|
+
tf = Tempfile.new('chapter_test')
|
194
|
+
begin
|
195
|
+
tf.print instr
|
196
|
+
tf.close
|
197
|
+
|
198
|
+
ch = Book::Chapter.new(nil, nil, nil, tf.path)
|
199
|
+
ReVIEW.book.param = {'inencoding' => enc}
|
200
|
+
assert_equal @utf8_str, ch.content
|
201
|
+
assert_equal @utf8_str, ch.instance_eval { @content }
|
202
|
+
ensure
|
203
|
+
tf.close(true)
|
204
|
+
end
|
205
|
+
|
206
|
+
tf1 = Tempfile.new('chapter_test1')
|
207
|
+
tf2 = Tempfile.new('chapter_test2')
|
208
|
+
begin
|
209
|
+
tf1.puts instr
|
210
|
+
tf1.puts instr
|
211
|
+
tf1.close
|
212
|
+
tf2.puts instr
|
213
|
+
tf1.close
|
214
|
+
|
215
|
+
ch = Book::Chapter.new(nil, nil, nil, tf1.path, tf2)
|
216
|
+
ReVIEW.book.param = {'inencoding' => enc}
|
217
|
+
assert_equal "#{@utf8_str}\n#{@utf8_str}\n", ch.content # XXX: OK?
|
218
|
+
ensure
|
219
|
+
tf1.close(true)
|
220
|
+
tf2.close(true)
|
221
|
+
end
|
222
|
+
end
|
223
|
+
end
|
224
|
+
|
225
|
+
def test_lines
|
226
|
+
lines = ["1\n", "2\n", "3"]
|
227
|
+
tf = Tempfile.new('chapter_test')
|
228
|
+
tf.print lines.join('')
|
229
|
+
tf.close
|
230
|
+
|
231
|
+
ch = Book::Chapter.new(nil, nil, nil, tf.path)
|
232
|
+
assert_equal lines, ch.lines
|
233
|
+
|
234
|
+
lines = ["1\n", "2\n", "3"]
|
235
|
+
tf1 = Tempfile.new('chapter_test1')
|
236
|
+
tf1.print lines.join('')
|
237
|
+
tf1.close
|
238
|
+
tf2 = Tempfile.new('chapter_test2')
|
239
|
+
tf2.puts lines.join('')
|
240
|
+
tf2.puts lines.join('')
|
241
|
+
tf2.close
|
242
|
+
|
243
|
+
ch = Book::Chapter.new(nil, nil, nil, tf1.path, tf2.path)
|
244
|
+
assert_equal lines, ch.lines # XXX: OK?
|
245
|
+
end
|
246
|
+
|
247
|
+
def test_volume
|
248
|
+
content = "abc\ndef"
|
249
|
+
tf1 = Tempfile.new('chapter_test1')
|
250
|
+
tf1.print content
|
251
|
+
tf1.close
|
252
|
+
tf2 = Tempfile.new('chapter_test2')
|
253
|
+
tf2.print content
|
254
|
+
tf2.print content
|
255
|
+
tf2.close
|
256
|
+
|
257
|
+
ch = Book::Chapter.new(nil, nil, nil, tf1.path)
|
258
|
+
assert ch.volume
|
259
|
+
assert_equal content.gsub(/\s/, '').size, ch.volume.bytes
|
260
|
+
|
261
|
+
ch = Book::Chapter.new(nil, nil, nil, tf1.path, tf2)
|
262
|
+
assert ch.volume
|
263
|
+
assert_equal content.gsub(/\s/, '').size, ch.volume.bytes # XXX: OK?
|
264
|
+
end
|
265
|
+
|
266
|
+
def test_on_CHAPS?
|
267
|
+
mktmpbookdir 'CHAPS' => "chapter1.re\nchapter2.re",
|
268
|
+
'chapter1.re' => '12345', 'preface.re' => 'abcde' do |dir, book, files|
|
269
|
+
ch1 = Book::Chapter.new(book, 1, 'chapter1', files['chapter1.re'])
|
270
|
+
pre = Book::Chapter.new(book, nil, 'preface', files['preface.re'])
|
271
|
+
|
272
|
+
assert ch1.on_CHAPS?
|
273
|
+
assert !pre.on_CHAPS?
|
274
|
+
|
275
|
+
ch2_path = File.join(dir, 'chapter2.er')
|
276
|
+
File.open(ch2_path, 'w') {}
|
277
|
+
ch2 = Book::Chapter.new(book, 2, 'chapter2', ch2_path)
|
278
|
+
|
279
|
+
ch3_path = File.join(dir, 'chapter3.er')
|
280
|
+
File.open(ch3_path, 'w') {}
|
281
|
+
ch3 = Book::Chapter.new(book, 3, 'chapter3', ch3_path)
|
282
|
+
|
283
|
+
assert ch2.on_CHAPS?
|
284
|
+
assert !ch3.on_CHAPS?
|
285
|
+
end
|
286
|
+
end
|
287
|
+
|
288
|
+
def test_list_index
|
289
|
+
do_test_index(<<E, Book::ListIndex, :list_index, :list)
|
290
|
+
//list
|
291
|
+
//listnum [abc]
|
292
|
+
//list [def]
|
293
|
+
//table [def]
|
294
|
+
//table [others]
|
295
|
+
E
|
296
|
+
end
|
297
|
+
|
298
|
+
def test_table_index
|
299
|
+
do_test_index(<<E, Book::TableIndex, :table_index, :table)
|
300
|
+
//table
|
301
|
+
//table [abc]
|
302
|
+
//table [def]
|
303
|
+
//list [def]
|
304
|
+
//list [others]
|
305
|
+
E
|
306
|
+
end
|
307
|
+
|
308
|
+
def test_footnote_index
|
309
|
+
content = <<E
|
310
|
+
//footnote
|
311
|
+
//footnote [abc][text...]
|
312
|
+
//footnote [def][text...]
|
313
|
+
//footnote [xyz]
|
314
|
+
//list [def]
|
315
|
+
//list [others]
|
316
|
+
E
|
317
|
+
do_test_index(content, Book::FootnoteIndex, :footnote_index, :footnote) do |ch|
|
318
|
+
assert_raises ReVIEW::KeyError do
|
319
|
+
ch.footnote('xyz')
|
320
|
+
end
|
321
|
+
end
|
322
|
+
end
|
323
|
+
|
324
|
+
def test_bibpaper
|
325
|
+
do_test_index(<<E, Book::BibpaperIndex, :bibpaper_index, :bibpaper, :filename => 'bib.re')
|
326
|
+
//bibpaper
|
327
|
+
//bibpaper [abc][text...]
|
328
|
+
//bibpaper [def][text...]
|
329
|
+
//bibpaper [xyz]
|
330
|
+
//list [def]
|
331
|
+
//list [others]
|
332
|
+
E
|
333
|
+
assert_raises FileNotFound do
|
334
|
+
do_test_index('', Book::BibpaperIndex, :bibpaper_index, :bibpaper, :filename => 'bib')
|
335
|
+
end
|
336
|
+
end
|
337
|
+
|
338
|
+
def test_headline_index
|
339
|
+
do_test_index(<<E, Book::HeadlineIndex, :headline_index, :headline, :propagate => false)
|
340
|
+
==
|
341
|
+
== abc
|
342
|
+
== def
|
343
|
+
=== def
|
344
|
+
//table others
|
345
|
+
E
|
346
|
+
end
|
347
|
+
|
348
|
+
|
349
|
+
def test_headline_index_nullsection
|
350
|
+
do_test_index(<<E, Book::HeadlineIndex, :headline_index, :headline, :propagate => false)
|
351
|
+
== abc
|
352
|
+
==== dummy
|
353
|
+
== def
|
354
|
+
E
|
355
|
+
end
|
356
|
+
|
357
|
+
def test_image
|
358
|
+
do_test_index(<<E, Book::ImageIndex, :image_index, :image)
|
359
|
+
//image
|
360
|
+
//image [abc]
|
361
|
+
//image [def]
|
362
|
+
//list [def]
|
363
|
+
//list [others]
|
364
|
+
E
|
365
|
+
|
366
|
+
do_test_index(<<E, Book::NumberlessImageIndex, :numberless_image_index, :image, :propagate => false)
|
367
|
+
//numberlessimage
|
368
|
+
//numberlessimage [abc]
|
369
|
+
//numberlessimage [def]
|
370
|
+
//list [def]
|
371
|
+
//list [others]
|
372
|
+
E
|
373
|
+
|
374
|
+
do_test_index(<<E, Book::ImageIndex, :image_index, :image)
|
375
|
+
//image
|
376
|
+
//numberlessimage [abc]
|
377
|
+
//image [def]
|
378
|
+
//list [def]
|
379
|
+
//list [others]
|
380
|
+
E
|
381
|
+
|
382
|
+
do_test_index(<<E, Book::NumberlessImageIndex, :numberless_image_index, :image, :propagate => false)
|
383
|
+
//image
|
384
|
+
//numberlessimage [abc]
|
385
|
+
//image [def]
|
386
|
+
//list [def]
|
387
|
+
//list [others]
|
388
|
+
E
|
389
|
+
end
|
390
|
+
|
391
|
+
def do_test_index(content, klass, list_method, ref_method, opts = {})
|
392
|
+
Dir.mktmpdir do |dir|
|
393
|
+
path = File.join(dir, opts[:filename] || 'chapter.re')
|
394
|
+
|
395
|
+
book = Book::Base.new(dir)
|
396
|
+
|
397
|
+
ch = nil
|
398
|
+
File.open(path, 'w') do |o|
|
399
|
+
o.print content
|
400
|
+
ch = Book::Chapter.new(book, 1, 'chapter', o.path)
|
401
|
+
end
|
402
|
+
|
403
|
+
assert ch.__send__(ref_method, 'abc')
|
404
|
+
assert ch.__send__(ref_method, 'def')
|
405
|
+
assert_raises ReVIEW::KeyError do
|
406
|
+
ch.__send__(ref_method, nil)
|
407
|
+
end
|
408
|
+
assert_raises ReVIEW::KeyError do
|
409
|
+
ch.__send__(ref_method, 'others')
|
410
|
+
end
|
411
|
+
assert_raises ReVIEW::KeyError do
|
412
|
+
ch.__send__(ref_method, 'not exist id')
|
413
|
+
end
|
414
|
+
|
415
|
+
yield(ch) if block_given?
|
416
|
+
end
|
417
|
+
end
|
418
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
require 'book_test_helper'
|
2
|
+
|
3
|
+
class ParametersTest < Test::Unit::TestCase
|
4
|
+
include BookTestHelper
|
5
|
+
|
6
|
+
def test_s_default
|
7
|
+
assert Book::Parameters.default
|
8
|
+
end
|
9
|
+
|
10
|
+
def test_s_load
|
11
|
+
Tempfile.open('parameters_test') do |io|
|
12
|
+
io.puts 'CHAPS_FILE = "x_CHAPS"'
|
13
|
+
io.puts 'PAPER = "B5"' # XXX: avoid erros of the last line of Parameters.get_page_metric
|
14
|
+
io.close
|
15
|
+
|
16
|
+
params = Book::Parameters.load(io.path)
|
17
|
+
assert_equal '/x_CHAPS', params.chapter_file # XXX: OK? (leading / and uninitialized @basedir)
|
18
|
+
assert_equal '/PART', params.part_file
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def test_s_get_page_metric
|
23
|
+
mod = Module.new
|
24
|
+
assert_raises ArgumentError do # XXX: OK?
|
25
|
+
params = Book::Parameters.get_page_metric(mod)
|
26
|
+
assert params
|
27
|
+
end
|
28
|
+
|
29
|
+
mod = Module.new
|
30
|
+
mod.module_eval { const_set(:PAPER, 'A5') }
|
31
|
+
assert_nothing_raised do
|
32
|
+
params = Book::Parameters.get_page_metric(mod)
|
33
|
+
assert params
|
34
|
+
end
|
35
|
+
|
36
|
+
mod = Module.new
|
37
|
+
mod.module_eval { const_set(:PAPER, 'X5') }
|
38
|
+
assert_raises ConfigError do
|
39
|
+
Book::Parameters.get_page_metric(mod)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|