review 2.1.0 → 2.2.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.
- checksums.yaml +4 -4
- data/.gitignore +5 -0
- data/.rubocop.yml +293 -6
- data/.rubocop_todo.yml +3 -608
- data/.travis.yml +6 -13
- data/README.md +5 -3
- data/Rakefile +6 -6
- data/bin/review-catalog-converter +2 -2
- data/bin/review-check +1 -1
- data/bin/review-compile +1 -2
- data/bin/review-init +6 -3
- data/bin/review-validate +3 -3
- data/bin/review-vol +2 -1
- data/doc/NEWS.ja.md +138 -25
- data/doc/NEWS.md +137 -25
- data/doc/config.yml.sample +2 -2
- data/doc/config.yml.sample-simple +1 -1
- data/doc/format.ja.md +86 -5
- data/doc/format.md +67 -2
- data/doc/makeindex.ja.md +95 -0
- data/doc/makeindex.md +97 -0
- data/doc/sample.css +214 -0
- data/lib/epubmaker.rb +6 -6
- data/lib/epubmaker/epubcommon.rb +19 -47
- data/lib/epubmaker/epubv2.rb +3 -1
- data/lib/epubmaker/epubv3.rb +4 -26
- data/lib/epubmaker/producer.rb +46 -46
- data/lib/epubmaker/zip_exporter.rb +86 -0
- data/lib/review/book/base.rb +13 -15
- data/lib/review/book/chapter.rb +2 -1
- data/lib/review/book/compilable.rb +9 -9
- data/lib/review/book/image_finder.rb +13 -13
- data/lib/review/book/index.rb +2 -2
- data/lib/review/book/volume.rb +2 -2
- data/lib/review/builder.rb +57 -1
- data/lib/review/catalog.rb +2 -2
- data/lib/review/compiler.rb +15 -7
- data/lib/review/configure.rb +11 -0
- data/lib/review/epubmaker.rb +403 -401
- data/lib/review/ewbbuilder.rb +16 -16
- data/lib/review/htmlbuilder.rb +42 -58
- data/lib/review/htmltoc.rb +1 -1
- data/lib/review/htmlutils.rb +50 -4
- data/lib/review/i18n.rb +2 -2
- data/lib/review/idgxmlbuilder.rb +30 -47
- data/lib/review/latexbuilder.rb +86 -41
- data/lib/review/latexutils.rb +19 -19
- data/lib/review/markdownbuilder.rb +16 -4
- data/lib/review/md2inaobuilder.rb +0 -9
- data/lib/review/pdfmaker.rb +91 -48
- data/lib/review/preprocessor.rb +1 -1
- data/lib/review/rstbuilder.rb +763 -0
- data/lib/review/sec_counter.rb +7 -9
- data/lib/review/tocparser.rb +3 -3
- data/lib/review/tocprinter.rb +5 -5
- data/lib/review/topbuilder.rb +48 -56
- data/lib/review/version.rb +1 -1
- data/lib/review/webmaker.rb +6 -7
- data/review.gemspec +1 -0
- data/templates/latex/layout.tex.erb +27 -2
- data/test/assets/test_template.tex +10 -1
- data/test/book_test_helper.rb +1 -2
- data/test/run_test.rb +10 -0
- data/test/sample-book/src/style.css +215 -0
- data/test/sample-book/src/vendor/jumoline/lppl.txt +416 -0
- data/test/test_book.rb +0 -1
- data/test/test_catalog.rb +1 -0
- data/test/test_converter.rb +1 -1
- data/test/test_epub3maker.rb +44 -51
- data/test/test_epubmaker.rb +82 -38
- data/test/test_epubmaker_cmd.rb +1 -1
- data/test/test_extentions_hash.rb +8 -1
- data/test/test_htmlbuilder.rb +411 -18
- data/test/test_i18n.rb +17 -0
- data/test/test_idgxmlbuilder.rb +88 -3
- data/test/test_image_finder.rb +18 -0
- data/test/test_index.rb +2 -0
- data/test/test_latexbuilder.rb +96 -8
- data/test/test_makerhelper.rb +2 -2
- data/test/test_markdownbuilder.rb +22 -1
- data/test/test_md2inaobuilder.rb +0 -5
- data/test/test_pdfmaker.rb +54 -36
- data/test/test_pdfmaker_cmd.rb +1 -1
- data/test/test_rstbuilder.rb +356 -0
- data/test/test_textutils.rb +14 -4
- data/test/test_topbuilder.rb +23 -4
- data/test/test_zip_exporter.rb +113 -0
- metadata +28 -2
data/test/test_i18n.rb
CHANGED
@@ -181,6 +181,23 @@ class I18nTest < Test::Unit::TestCase
|
|
181
181
|
end
|
182
182
|
end
|
183
183
|
|
184
|
+
def test_format_with_mismatched_number_of_arguments
|
185
|
+
Dir.mktmpdir do |dir|
|
186
|
+
Dir.chdir(dir) do
|
187
|
+
file = File.join(dir, "locale.yml")
|
188
|
+
|
189
|
+
File.open(file, "w"){|f| f.write %Q|locale: ja\nformat_number_header: "%2$d"| }
|
190
|
+
I18n.setup("ja")
|
191
|
+
assert_equal "10", I18n.t("format_number_header", [1, 10])
|
192
|
+
|
193
|
+
File.open(file, "w"){|f| f.write %Q|locale: ja\nformat_number_header: "%2$d-%1$d"| }
|
194
|
+
I18n.setup("ja")
|
195
|
+
# ERROR: returns raw format
|
196
|
+
assert_equal "%2$d-%1$d", I18n.t("format_number_header", [1])
|
197
|
+
end
|
198
|
+
end
|
199
|
+
end
|
200
|
+
|
184
201
|
def test_ja
|
185
202
|
I18n.setup("ja")
|
186
203
|
assert_equal "図", I18n.t("image")
|
data/test/test_idgxmlbuilder.rb
CHANGED
@@ -13,9 +13,9 @@ class IDGXMLBuidlerTest < Test::Unit::TestCase
|
|
13
13
|
@builder = IDGXMLBuilder.new()
|
14
14
|
@config = ReVIEW::Configure.values
|
15
15
|
@config.merge!({
|
16
|
-
|
17
|
-
|
18
|
-
|
16
|
+
"secnolevel" => 2,
|
17
|
+
"tableopt" => "10"
|
18
|
+
})
|
19
19
|
@book = Book::Base.new(nil)
|
20
20
|
@book.config = @config
|
21
21
|
@compiler = ReVIEW::Compiler.new(@builder)
|
@@ -114,6 +114,15 @@ class IDGXMLBuidlerTest < Test::Unit::TestCase
|
|
114
114
|
|
115
115
|
actual = compile_block("//tsize[2]\n//table{\nA\tB\tC\n//}\n")
|
116
116
|
assert_equal %Q|<table><tbody xmlns:aid5="http://ns.adobe.com/AdobeInDesign/5.0/" aid:table="table" aid:trows="1" aid:tcols="3"><td xyh="1,1,0" aid:table="cell" aid:crows="1" aid:ccols="1" aid:ccolwidth="5.669">A</td><td xyh="2,1,0" aid:table="cell" aid:crows="1" aid:ccols="1" aid:ccolwidth="11.338">B</td><td xyh="3,1,0" aid:table="cell" aid:crows="1" aid:ccols="1" aid:ccolwidth="11.338">C</td></tbody></table>|, actual
|
117
|
+
|
118
|
+
actual = compile_block("//tsize[|idgxml|2]\n//table{\nA\tB\tC\n//}\n")
|
119
|
+
assert_equal %Q|<table><tbody xmlns:aid5="http://ns.adobe.com/AdobeInDesign/5.0/" aid:table="table" aid:trows="1" aid:tcols="3"><td xyh="1,1,0" aid:table="cell" aid:crows="1" aid:ccols="1" aid:ccolwidth="5.669">A</td><td xyh="2,1,0" aid:table="cell" aid:crows="1" aid:ccols="1" aid:ccolwidth="11.338">B</td><td xyh="3,1,0" aid:table="cell" aid:crows="1" aid:ccols="1" aid:ccolwidth="11.338">C</td></tbody></table>|, actual
|
120
|
+
|
121
|
+
actual = compile_block("//tsize[|idgxml,html|2]\n//table{\nA\tB\tC\n//}\n")
|
122
|
+
assert_equal %Q|<table><tbody xmlns:aid5="http://ns.adobe.com/AdobeInDesign/5.0/" aid:table="table" aid:trows="1" aid:tcols="3"><td xyh="1,1,0" aid:table="cell" aid:crows="1" aid:ccols="1" aid:ccolwidth="5.669">A</td><td xyh="2,1,0" aid:table="cell" aid:crows="1" aid:ccols="1" aid:ccolwidth="11.338">B</td><td xyh="3,1,0" aid:table="cell" aid:crows="1" aid:ccols="1" aid:ccolwidth="11.338">C</td></tbody></table>|, actual
|
123
|
+
|
124
|
+
actual = compile_block("//tsize[|html|2]\n//table{\nA\tB\tC\n//}\n")
|
125
|
+
assert_equal %Q|<table><tbody xmlns:aid5="http://ns.adobe.com/AdobeInDesign/5.0/" aid:table="table" aid:trows="1" aid:tcols="3"><td xyh="1,1,0" aid:table="cell" aid:crows="1" aid:ccols="1" aid:ccolwidth="9.448">A</td><td xyh="2,1,0" aid:table="cell" aid:crows="1" aid:ccols="1" aid:ccolwidth="9.448">B</td><td xyh="3,1,0" aid:table="cell" aid:crows="1" aid:ccols="1" aid:ccolwidth="9.448">C</td></tbody></table>|, actual
|
117
126
|
end
|
118
127
|
|
119
128
|
def test_customize_mmtopt
|
@@ -244,6 +253,11 @@ class IDGXMLBuidlerTest < Test::Unit::TestCase
|
|
244
253
|
assert_equal %Q|<list type='emlist'><caption aid:pstyle='emlist-title'>this is <b>test</b><&>_</caption><pre>test1\ntest1.5\n\ntest<i>2</i>\n</pre></list>|, actual
|
245
254
|
end
|
246
255
|
|
256
|
+
def test_emlistnum
|
257
|
+
actual = compile_block("//emlistnum[this is @<b>{test}<&>_]{\ntest1\ntest1.5\n\ntest@<i>{2}\n//}\n")
|
258
|
+
assert_equal %Q|<list type='emlistnum'><caption aid:pstyle='emlistnum-title'>this is <b>test</b><&>_</caption><pre><span type='lineno'> 1: </span>test1\n<span type='lineno'> 2: </span>test1.5\n<span type='lineno'> 3: </span>\n<span type='lineno'> 4: </span>test<i>2</i>\n</pre></list>|, actual
|
259
|
+
end
|
260
|
+
|
247
261
|
def test_emlist_listinfo
|
248
262
|
@config["listinfo"] = true
|
249
263
|
actual = compile_block("//emlist[this is @<b>{test}<&>_]{\ntest1\ntest1.5\n\ntest@<i>{2}\n//}\n")
|
@@ -269,6 +283,22 @@ class IDGXMLBuidlerTest < Test::Unit::TestCase
|
|
269
283
|
assert_equal %Q|<codelist><caption>リスト1.1 this is <b>test</b><&>_</caption><pre>test1\ntest1.5\n\ntest<i>2</i>\n</pre></codelist>|, actual
|
270
284
|
end
|
271
285
|
|
286
|
+
def test_listnum
|
287
|
+
def @chapter.list(id)
|
288
|
+
Book::ListIndex::Item.new("samplelist",1)
|
289
|
+
end
|
290
|
+
actual = compile_block("//listnum[samplelist][this is @<b>{test}<&>_]{\ntest1\ntest1.5\n\ntest@<i>{2}\n//}\n")
|
291
|
+
assert_equal %Q|<codelist><caption>リスト1.1 this is <b>test</b><&>_</caption><pre><span type='lineno'> 1: </span>test1\n<span type='lineno'> 2: </span>test1.5\n<span type='lineno'> 3: </span>\n<span type='lineno'> 4: </span>test<i>2</i>\n</pre></codelist>|, actual
|
292
|
+
end
|
293
|
+
|
294
|
+
def test_listnum_linenum
|
295
|
+
def @chapter.list(id)
|
296
|
+
Book::ListIndex::Item.new("samplelist",1)
|
297
|
+
end
|
298
|
+
actual = compile_block("//firstlinenum[100]\n//listnum[samplelist][this is @<b>{test}<&>_]{\ntest1\ntest1.5\n\ntest@<i>{2}\n//}\n")
|
299
|
+
assert_equal %Q|<codelist><caption>リスト1.1 this is <b>test</b><&>_</caption><pre><span type='lineno'>100: </span>test1\n<span type='lineno'>101: </span>test1.5\n<span type='lineno'>102: </span>\n<span type='lineno'>103: </span>test<i>2</i>\n</pre></codelist>|, actual
|
300
|
+
end
|
301
|
+
|
272
302
|
def test_list_listinfo
|
273
303
|
def @chapter.list(id)
|
274
304
|
Book::ListIndex::Item.new("samplelist",1)
|
@@ -292,6 +322,12 @@ class IDGXMLBuidlerTest < Test::Unit::TestCase
|
|
292
322
|
assert_equal %Q|<box><caption aid:pstyle="box-title">this is <b>test</b><&>_</caption><listinfo line="1" begin="1">test1\n</listinfo><listinfo line="2">test1.5\n</listinfo><listinfo line="3">\n</listinfo><listinfo line="4" end="4">test<i>2</i>\n</listinfo></box>|, actual
|
293
323
|
end
|
294
324
|
|
325
|
+
def test_box_non_listinfo
|
326
|
+
@config["listinfo"] = nil
|
327
|
+
actual = compile_block("//box[this is @<b>{test}<&>_]{\ntest1\ntest1.5\n\ntest@<i>{2}\n//}\n")
|
328
|
+
assert_equal %Q|<box><caption aid:pstyle="box-title">this is <b>test</b><&>_</caption>test1\ntest1.5\n\ntest<i>2</i>\n</box>|, actual
|
329
|
+
end
|
330
|
+
|
295
331
|
def test_flushright
|
296
332
|
actual = compile_block("//flushright{\nfoo\nbar\n\nbuz\n//}\n")
|
297
333
|
assert_equal %Q|<p align='right'>foobar</p><p align='right'>buz</p>|, actual
|
@@ -445,6 +481,34 @@ EOS
|
|
445
481
|
end
|
446
482
|
end
|
447
483
|
|
484
|
+
def test_column_ref
|
485
|
+
review =<<-EOS
|
486
|
+
===[column]{foo} test
|
487
|
+
|
488
|
+
inside column
|
489
|
+
|
490
|
+
=== next level
|
491
|
+
|
492
|
+
this is @<column>{foo}.
|
493
|
+
EOS
|
494
|
+
expected =<<-EOS.chomp
|
495
|
+
<column id="column-1"><title aid:pstyle="column-title">test</title><?dtp level="9" section="test"?><p>inside column</p></column><title aid:pstyle="h3">next level</title><?dtp level="3" section="next level"?><p>this is コラム「test」.</p>
|
496
|
+
EOS
|
497
|
+
|
498
|
+
assert_equal expected, column_helper(review)
|
499
|
+
end
|
500
|
+
|
501
|
+
def test_column_in_aother_chapter_ref
|
502
|
+
def @chapter.column_index
|
503
|
+
items = [Book::ColumnIndex::Item.new("chap1|column", 1, "column_cap")]
|
504
|
+
Book::ColumnIndex.new(items)
|
505
|
+
end
|
506
|
+
|
507
|
+
actual = compile_inline("test @<column>{chap1|column} test2")
|
508
|
+
expected = "test コラム「column_cap」 test2"
|
509
|
+
assert_equal expected, actual
|
510
|
+
end
|
511
|
+
|
448
512
|
def test_ul
|
449
513
|
src =<<-EOS
|
450
514
|
* AAA
|
@@ -626,4 +690,25 @@ EOS
|
|
626
690
|
assert_equal expected.chomp, actual
|
627
691
|
end
|
628
692
|
|
693
|
+
def test_comment
|
694
|
+
actual = compile_block("//comment[コメント]")
|
695
|
+
assert_equal %Q||, actual
|
696
|
+
end
|
697
|
+
|
698
|
+
def test_comment_for_draft
|
699
|
+
@config["draft"] = true
|
700
|
+
actual = compile_block("//comment[コメント]")
|
701
|
+
assert_equal %Q|<msg>コメント</msg>|, actual
|
702
|
+
end
|
703
|
+
|
704
|
+
def test_inline_comment
|
705
|
+
actual = compile_inline("test @<comment>{コメント} test2")
|
706
|
+
assert_equal %Q|test test2|, actual
|
707
|
+
end
|
708
|
+
|
709
|
+
def test_inline_comment_for_draft
|
710
|
+
@config["draft"] = true
|
711
|
+
actual = compile_inline("test @<comment>{コメント} test2")
|
712
|
+
assert_equal %Q|test <msg>コメント</msg> test2|, actual
|
713
|
+
end
|
629
714
|
end
|
data/test/test_image_finder.rb
CHANGED
@@ -79,4 +79,22 @@ class ImageFinderTest < Test::Unit::TestCase
|
|
79
79
|
FileUtils.remove_entry_secure dir
|
80
80
|
end
|
81
81
|
end
|
82
|
+
|
83
|
+
def test_find_path_dir_symlink
|
84
|
+
dir = Dir.mktmpdir
|
85
|
+
begin
|
86
|
+
path_src = dir+"/src"
|
87
|
+
path_dst = dir+"/ch01"
|
88
|
+
FileUtils.mkdir_p(path_src)
|
89
|
+
FileUtils.symlink(path_src, path_dst)
|
90
|
+
path_srcimg = path_src+"/foo.jpg"
|
91
|
+
path_dstimg = path_dst+"/foo.jpg"
|
92
|
+
FileUtils.touch(path_srcimg)
|
93
|
+
|
94
|
+
finder = ReVIEW::Book::ImageFinder.new(dir, "ch01", "builder", [".jpg"])
|
95
|
+
assert_equal(path_dstimg, finder.find_path("foo"))
|
96
|
+
ensure
|
97
|
+
FileUtils.remove_entry_secure dir
|
98
|
+
end
|
99
|
+
end
|
82
100
|
end
|
data/test/test_index.rb
CHANGED
@@ -13,6 +13,7 @@ class IndexTest < Test::Unit::TestCase
|
|
13
13
|
assert_equal 'foo', item.id
|
14
14
|
assert_equal 'bar', item.content
|
15
15
|
end
|
16
|
+
|
16
17
|
def test_footnote_index_with_escape
|
17
18
|
fn = Book::FootnoteIndex.parse(['//footnote[foo][bar[\]buz]'])
|
18
19
|
items = fn.to_a
|
@@ -20,6 +21,7 @@ class IndexTest < Test::Unit::TestCase
|
|
20
21
|
assert_equal 'foo', item.id
|
21
22
|
assert_equal 'bar[]buz', item.content
|
22
23
|
end
|
24
|
+
|
23
25
|
def test_footnote_index_with_escape2
|
24
26
|
fn = Book::FootnoteIndex.parse(['//footnote[foo][bar\\a\\$buz]'])
|
25
27
|
items = fn.to_a
|
data/test/test_latexbuilder.rb
CHANGED
@@ -11,13 +11,13 @@ class LATEXBuidlerTest < Test::Unit::TestCase
|
|
11
11
|
def setup
|
12
12
|
@builder = LATEXBuilder.new()
|
13
13
|
@config = ReVIEW::Configure.values
|
14
|
-
@config.merge!(
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
14
|
+
@config.merge!({
|
15
|
+
"secnolevel" => 2, # for IDGXMLBuilder, EPUBBuilder
|
16
|
+
"toclevel" => 2,
|
17
|
+
"stylesheet" => nil, # for EPUBBuilder
|
18
|
+
"image_scale2width" => false,
|
19
|
+
"texcommand" => "uplatex"
|
20
|
+
})
|
21
21
|
@book = Book::Base.new(nil)
|
22
22
|
@book.config = @config
|
23
23
|
@compiler = ReVIEW::Compiler.new(@builder)
|
@@ -144,6 +144,7 @@ class LATEXBuidlerTest < Test::Unit::TestCase
|
|
144
144
|
actual = compile_inline("test @<b>{inline<&;\\ test} test2")
|
145
145
|
assert_equal %Q|test \\textbf{inline\\textless{}\\&;\\reviewbackslash{} test} test2|, actual
|
146
146
|
end
|
147
|
+
|
147
148
|
def test_inline_em
|
148
149
|
actual = compile_inline("abc@<em>{def}")
|
149
150
|
assert_equal %Q|abc\\reviewem{def}|, actual
|
@@ -164,6 +165,13 @@ class LATEXBuidlerTest < Test::Unit::TestCase
|
|
164
165
|
assert_equal "abc $\\alpha^n = inf < 2$ ghi", actual
|
165
166
|
end
|
166
167
|
|
168
|
+
def test_inline_m2
|
169
|
+
## target text: @<m>{X = \{ {x_1\},{x_2\}, \cdots ,{x_n\} \\\}}
|
170
|
+
actual = compile_inline('@<m>{X = \\{ {x_1\\},{x_2\\}, \\cdots ,{x_n\\} \\\\\\}}')
|
171
|
+
## expected text: $X = \{ {x_1},{x_2}, \cdots ,{x_n} \}$
|
172
|
+
assert_equal ' $X = \\{ {x_1},{x_2}, \\cdots ,{x_n} \\}$ ', actual
|
173
|
+
end
|
174
|
+
|
167
175
|
def test_inline_tt
|
168
176
|
actual = compile_inline("test @<tt>{inline test} test2")
|
169
177
|
assert_equal %Q|test \\texttt{inline test} test2|, actual
|
@@ -207,7 +215,25 @@ class LATEXBuidlerTest < Test::Unit::TestCase
|
|
207
215
|
|
208
216
|
def test_inline_idx
|
209
217
|
actual = compile_inline("@<idx>{__TEST%$}, @<hidx>{__TEST%$}")
|
210
|
-
assert_equal %Q|\\textunderscore{}\\textunderscore{}TEST\\%\\textdollar{}\\index{__TEST
|
218
|
+
assert_equal %Q|\\textunderscore{}\\textunderscore{}TEST\\%\\textdollar{}\\index{__TEST%$@\\textunderscore{}\\textunderscore{}TEST\\%\\textdollar{}}, \\index{__TEST%$@\\textunderscore{}\\textunderscore{}TEST\\%\\textdollar{}}|, actual
|
219
|
+
end
|
220
|
+
|
221
|
+
def test_inline_idx_yomi
|
222
|
+
begin
|
223
|
+
require 'MeCab'
|
224
|
+
require 'nkf'
|
225
|
+
rescue LoadError
|
226
|
+
$stderr.puts "skip test_inline_idx_yomi (cannot find MeCab)"
|
227
|
+
return true
|
228
|
+
end
|
229
|
+
tmpdir = Dir.mktmpdir
|
230
|
+
File.write("#{tmpdir}/sample.dic", "強運\tはーどらっく\n")
|
231
|
+
@book.config["pdfmaker"]["makeindex"] = true
|
232
|
+
@book.config["pdfmaker"]["makeindex_dic"] = "#{tmpdir}/sample.dic"
|
233
|
+
@builder.setup_index
|
234
|
+
actual = compile_inline("@<hidx>{漢字}@<hidx>{強運}@<hidx>{項目@1<<>>項目@2}")
|
235
|
+
FileUtils.remove_entry_secure(tmpdir)
|
236
|
+
assert_equal %Q|\\index{かんじ@漢字}\\index{はーどらっく@強運}\\index{こうもく"@1@項目"@1!こうもく"@2@項目"@2}|, actual
|
211
237
|
end
|
212
238
|
|
213
239
|
def test_jis_x_0201_kana
|
@@ -311,6 +337,11 @@ class LATEXBuidlerTest < Test::Unit::TestCase
|
|
311
337
|
assert_equal %Q|\\reviewlistcaption{リスト1.1: ruby}\n\\begin{reviewlist}\n 1: class Foo\n 2: def foo\n 3: bar\n 4: \n 5: buz\n 6: end\n 7: end\n\\end{reviewlist}\n|, actual
|
312
338
|
end
|
313
339
|
|
340
|
+
def test_listnum_linenum
|
341
|
+
actual = compile_block("//firstlinenum[100]\n//listnum[test1][ruby]{\nclass Foo\n def foo\n bar\n\n buz\n end\nend\n//}\n")
|
342
|
+
assert_equal %Q|\\reviewlistcaption{リスト1.1: ruby}\n\\begin{reviewlist}\n100: class Foo\n101: def foo\n102: bar\n103: \n104: buz\n105: end\n106: end\n\\end{reviewlist}\n|, actual
|
343
|
+
end
|
344
|
+
|
314
345
|
def test_listnum_lst
|
315
346
|
@book.config["highlight"] = {}
|
316
347
|
@book.config["highlight"]["latex"] = "listings"
|
@@ -318,6 +349,25 @@ class LATEXBuidlerTest < Test::Unit::TestCase
|
|
318
349
|
assert_equal %Q|\\begin{reviewlistnumlst}[caption={ruby},language={}]\nclass Foo\n def foo\n bar\n\n buz\n end\nend\n\\end{reviewlistnumlst}\n|, actual
|
319
350
|
end
|
320
351
|
|
352
|
+
def test_listnum_lst_linenum
|
353
|
+
@book.config["highlight"] = {}
|
354
|
+
@book.config["highlight"]["latex"] = "listings"
|
355
|
+
actual = compile_block("//firstlinenum[100]\n//listnum[test1][ruby]{\nclass Foo\n def foo\n bar\n\n buz\n end\nend\n//}\n")
|
356
|
+
assert_equal %Q|\\begin{reviewlistnumlst}[caption={ruby},language={},firstnumber=100]\nclass Foo\n def foo\n bar\n\n buz\n end\nend\n\\end{reviewlistnumlst}\n|, actual
|
357
|
+
end
|
358
|
+
|
359
|
+
def test_source
|
360
|
+
actual = compile_block("//source[foo/bar/test.rb]{\nfoo\nbar\n\nbuz\n//}\n")
|
361
|
+
assert_equal %Q|\\reviewsourcecaption{foo/bar/test.rb}\n\\begin{reviewsource}\nfoo\nbar\n\nbuz\n\\end{reviewsource}\n|, actual
|
362
|
+
end
|
363
|
+
|
364
|
+
def test_source_lst
|
365
|
+
@book.config["highlight"] = {}
|
366
|
+
@book.config["highlight"]["latex"] = "listings"
|
367
|
+
actual = compile_block("//source[foo/bar/test.rb]{\nfoo\nbar\n\nbuz\n//}\n")
|
368
|
+
assert_equal %Q|\\begin{reviewsourcelst}[title={foo/bar/test.rb},language={}]\nfoo\nbar\n\nbuz\n\\end{reviewsourcelst}\n|, actual
|
369
|
+
end
|
370
|
+
|
321
371
|
def test_quote
|
322
372
|
actual = compile_block("//quote{\nfoo\nbar\n\nbuz\n//}\n")
|
323
373
|
assert_equal %Q|\n\\begin{quote}\nfoobar\n\nbuz\n\\end{quote}\n|, actual
|
@@ -475,6 +525,23 @@ class LATEXBuidlerTest < Test::Unit::TestCase
|
|
475
525
|
actual
|
476
526
|
end
|
477
527
|
|
528
|
+
def test_customize_cellwidth
|
529
|
+
actual = compile_block("//tsize[2,3,5]\n//table{\nA\tB\tC\n//}\n")
|
530
|
+
assert_equal %Q(\\begin{reviewtable}{|p{2mm}|p{3mm}|p{5mm}|}\n\\hline\n\\reviewth{A} & B & C \\\\ \\hline\n\\end{reviewtable}\n), actual
|
531
|
+
|
532
|
+
actual = compile_block("//tsize[|latex,html|2,3,5]\n//table{\nA\tB\tC\n//}\n")
|
533
|
+
assert_equal %Q(\\begin{reviewtable}{|p{2mm}|p{3mm}|p{5mm}|}\n\\hline\n\\reviewth{A} & B & C \\\\ \\hline\n\\end{reviewtable}\n), actual
|
534
|
+
|
535
|
+
actual = compile_block("//tsize[|html|2,3,5]\n//table{\nA\tB\tC\n//}\n")
|
536
|
+
assert_equal %Q(\\begin{reviewtable}{|l|l|l|}\n\\hline\n\\reviewth{A} & B & C \\\\ \\hline\n\\end{reviewtable}\n), actual
|
537
|
+
|
538
|
+
actual = compile_block("//tsize[|latex|2,3,5]\n//table{\nA\tB\tC\n//}\n")
|
539
|
+
assert_equal %Q(\\begin{reviewtable}{|p{2mm}|p{3mm}|p{5mm}|}\n\\hline\n\\reviewth{A} & B & C \\\\ \\hline\n\\end{reviewtable}\n), actual
|
540
|
+
|
541
|
+
actual = compile_block("//tsize[|latex||p{5mm}|cr|]\n//table{\nA\tB\tC\n//}\n")
|
542
|
+
assert_equal %Q(\\begin{reviewtable}{|p{5mm}|cr|}\n\\hline\n\\reviewth{A} & B & C \\\\ \\hline\n\\end{reviewtable}\n), actual
|
543
|
+
end
|
544
|
+
|
478
545
|
def test_imgtable
|
479
546
|
def @chapter.image(id)
|
480
547
|
item = Book::ImageIndex::Item.new("sampleimg",1, 'sample img')
|
@@ -849,4 +916,25 @@ EOS
|
|
849
916
|
assert_equal expected, actual
|
850
917
|
end
|
851
918
|
|
919
|
+
def test_comment
|
920
|
+
actual = compile_block("//comment[コメント]")
|
921
|
+
assert_equal %Q||, actual
|
922
|
+
end
|
923
|
+
|
924
|
+
def test_comment_for_draft
|
925
|
+
@config["draft"] = true
|
926
|
+
actual = compile_block("//comment[コメント]")
|
927
|
+
assert_equal %Q|\\pdfcomment{コメント}\n|, actual
|
928
|
+
end
|
929
|
+
|
930
|
+
def test_inline_comment
|
931
|
+
actual = compile_inline("test @<comment>{コメント} test2")
|
932
|
+
assert_equal %Q|test test2|, actual
|
933
|
+
end
|
934
|
+
|
935
|
+
def test_inline_comment_for_draft
|
936
|
+
@config["draft"] = true
|
937
|
+
actual = compile_inline("test @<comment>{コメント} test2")
|
938
|
+
assert_equal %Q|test \\pdfcomment{コメント} test2|, actual
|
939
|
+
end
|
852
940
|
end
|
data/test/test_makerhelper.rb
CHANGED
@@ -38,11 +38,11 @@ class MakerHelperTest < Test::Unit::TestCase
|
|
38
38
|
end
|
39
39
|
|
40
40
|
def test_copy_images_to_dir_convert
|
41
|
-
if /mswin|mingw|cygwin/ !~ RUBY_PLATFORM
|
41
|
+
if /mswin|mingw|cygwin/ !~ RUBY_PLATFORM && (`convert -version` rescue nil)
|
42
42
|
touch_file("#{@tmpdir1}/foo.eps")
|
43
43
|
|
44
44
|
image_files = MakerHelper.copy_images_to_dir(@tmpdir1, @tmpdir2,
|
45
|
-
|
45
|
+
:convert => {:eps => :png})
|
46
46
|
|
47
47
|
assert File.exist?("#{@tmpdir2}/foo.eps.png"), "EPS to PNG conversion failed"
|
48
48
|
assert image_files.include?("#{@tmpdir1}/foo.eps.png")
|
@@ -46,6 +46,17 @@ EOS
|
|
46
46
|
assert_equal expected, actual
|
47
47
|
end
|
48
48
|
|
49
|
+
def test_inline_comment
|
50
|
+
actual = compile_inline("test @<comment>{コメント} test2")
|
51
|
+
assert_equal %Q|test test2|, actual
|
52
|
+
end
|
53
|
+
|
54
|
+
def test_inline_comment_for_draft
|
55
|
+
@config["draft"] = true
|
56
|
+
actual = compile_inline("test @<comment>{コメント} test2")
|
57
|
+
assert_equal %Q|test <span class="red">コメント</span> test2|, actual
|
58
|
+
end
|
59
|
+
|
49
60
|
def test_ul_nest1
|
50
61
|
src =<<-EOS
|
51
62
|
* AAA
|
@@ -62,7 +73,6 @@ EOS
|
|
62
73
|
assert_equal "```shell-session\nlineA\nlineB\n```\n", actual
|
63
74
|
end
|
64
75
|
|
65
|
-
|
66
76
|
def test_dlist
|
67
77
|
actual = compile_block(": foo\n foo.\n bar.\n")
|
68
78
|
assert_equal %Q|<dl>\n<dt>foo</dt>\n<dd>foo.bar.</dd>\n</dl>\n|, actual
|
@@ -79,6 +89,17 @@ EOS
|
|
79
89
|
assert_equal %Q|<dl>\n<dt>title</dt>\n<dd>body</dd>\n<dt>title2</dt>\n<dd>body2</dd>\n</dl>\n|, actual
|
80
90
|
end
|
81
91
|
|
92
|
+
def test_comment
|
93
|
+
actual = compile_block("//comment[コメント]")
|
94
|
+
assert_equal %Q||, actual
|
95
|
+
end
|
96
|
+
|
97
|
+
def test_comment_for_draft
|
98
|
+
@config["draft"] = true
|
99
|
+
actual = compile_block("//comment[コメント]")
|
100
|
+
assert_equal %Q|<div class="red">コメント</div>\n|, actual
|
101
|
+
end
|
102
|
+
|
82
103
|
def test_list
|
83
104
|
actual = compile_block(<<-EOS)
|
84
105
|
//list[name][caption]{
|
data/test/test_md2inaobuilder.rb
CHANGED
@@ -57,11 +57,6 @@ BBB
|
|
57
57
|
EOS
|
58
58
|
end
|
59
59
|
|
60
|
-
def test_comment
|
61
|
-
actual = compile_block("//comment{\nHello, world!\n//}\n")
|
62
|
-
assert_equal "<span class=\"red\">\nHello, world!\n</span>\n", actual
|
63
|
-
end
|
64
|
-
|
65
60
|
def test_ruby_mono
|
66
61
|
actual = compile_block("@<ruby>{謳,うた}い文句")
|
67
62
|
assert_equal " <span class='monoruby'>謳(うた)</span>い文句\n\n", actual
|
data/test/test_pdfmaker.rb
CHANGED
@@ -85,8 +85,8 @@ class PDFMakerTest < Test::Unit::TestCase
|
|
85
85
|
|
86
86
|
def test_make_authors
|
87
87
|
@config.merge!({"aut"=>["テスト太郎","テスト次郎"],
|
88
|
-
|
89
|
-
|
88
|
+
"csl"=>["監修三郎"],
|
89
|
+
"trl"=>["翻訳四郎","翻訳五郎",]})
|
90
90
|
Dir.mktmpdir do |dir|
|
91
91
|
authors = @maker.make_authors
|
92
92
|
assert_equal("テスト太郎、テスト次郎 著 \\\\\n監修三郎 監修 \\\\\n翻訳四郎、翻訳五郎 訳",
|
@@ -104,16 +104,16 @@ class PDFMakerTest < Test::Unit::TestCase
|
|
104
104
|
|
105
105
|
def test_make_okuduke
|
106
106
|
@config.merge!({
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
107
|
+
"aut"=>["テスト太郎","テスト次郎"],
|
108
|
+
"csl"=>["監修三郎"],
|
109
|
+
"trl"=>["翻訳四郎","翻訳五郎"],
|
110
|
+
"dsr"=>["デザイン六郎"],
|
111
|
+
"ill"=>["イラスト七郎","イラスト八郎"],
|
112
|
+
"cov"=>["表紙九郎"],
|
113
|
+
"edt"=>["編集十郎"],
|
114
|
+
"pbl"=>"テスト出版",
|
115
|
+
"prt"=>"テスト印刷",
|
116
|
+
})
|
117
117
|
Dir.mktmpdir do |dir|
|
118
118
|
okuduke = @maker.make_colophon
|
119
119
|
assert_equal("著 者 & テスト太郎、テスト次郎 \\\\\n監 修 & 監修三郎 \\\\\n翻 訳 & 翻訳四郎、翻訳五郎 \\\\\nデザイン & デザイン六郎 \\\\\nイラスト & イラスト七郎、イラスト八郎 \\\\\n表 紙 & 表紙九郎 \\\\\n編 集 & 編集十郎 \\\\\n発行所 & テスト出版 \\\\\n印刷所 & テスト印刷 \\\\\n",
|
@@ -124,13 +124,13 @@ class PDFMakerTest < Test::Unit::TestCase
|
|
124
124
|
|
125
125
|
def test_make_okuduke_dojin
|
126
126
|
@config.merge!({
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
127
|
+
"aut"=>["テスト太郎","テスト次郎"],
|
128
|
+
"csl"=>["監修三郎"],
|
129
|
+
"ill"=>["イラスト七郎","イラスト八郎"],
|
130
|
+
"pbl"=>"テスト出版",
|
131
|
+
"prt"=>"テスト印刷",
|
132
|
+
"contact"=>"tarou@example.jp",
|
133
|
+
})
|
134
134
|
Dir.mktmpdir do |dir|
|
135
135
|
I18n.update({"prt" => "印刷所"},"ja")
|
136
136
|
okuduke = @maker.make_colophon
|
@@ -150,10 +150,10 @@ class PDFMakerTest < Test::Unit::TestCase
|
|
150
150
|
|
151
151
|
def test_gettemplate_with_backmatter
|
152
152
|
@config.merge!({
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
153
|
+
"backcover"=>"backcover.html",
|
154
|
+
"profile"=>"profile.html",
|
155
|
+
"advfile"=>"advfile.html",
|
156
|
+
})
|
157
157
|
Dir.mktmpdir do |dir|
|
158
158
|
Dir.chdir(dir) do
|
159
159
|
profile = "\\thispagestyle{empty}\\chapter*{Profile}\nsome profile\n"
|
@@ -189,9 +189,9 @@ class PDFMakerTest < Test::Unit::TestCase
|
|
189
189
|
@config["pht"] = ["Mrs.Smith"]
|
190
190
|
@config.merge!({"language" => "ja",
|
191
191
|
"history" => [[
|
192
|
-
|
193
|
-
|
194
|
-
|
192
|
+
"2011-08-03 v1.0.0版発行",
|
193
|
+
"2012-02-15 v1.1.0版発行",
|
194
|
+
]] })
|
195
195
|
history = @maker.make_history_list
|
196
196
|
expect = ["2011年8月3日 v1.0.0版発行",
|
197
197
|
"2012年2月15日 v1.1.0版発行"]
|
@@ -204,9 +204,9 @@ class PDFMakerTest < Test::Unit::TestCase
|
|
204
204
|
@config["pht"] = ["Mrs.Smith"]
|
205
205
|
@config.merge!({"language" => "ja",
|
206
206
|
"history" => [[
|
207
|
-
|
208
|
-
|
209
|
-
|
207
|
+
"2011-08-03",
|
208
|
+
"2012-02-15",
|
209
|
+
]] })
|
210
210
|
history = @maker.make_history_list
|
211
211
|
expect = ["2011年8月3日 初版第1刷 発行",
|
212
212
|
"2012年2月15日 初版第2刷 発行"]
|
@@ -219,13 +219,13 @@ class PDFMakerTest < Test::Unit::TestCase
|
|
219
219
|
@config["pht"] = ["Mrs.Smith"]
|
220
220
|
@config.merge!({"language" => "ja",
|
221
221
|
"history" => [[
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
222
|
+
"2011-08-03",
|
223
|
+
"2012-02-15",
|
224
|
+
],[
|
225
|
+
"2012-10-01",
|
226
|
+
],[
|
227
|
+
"2013-03-01",
|
228
|
+
]] })
|
229
229
|
history = @maker.make_history_list
|
230
230
|
expect = ["2011年8月3日 初版第1刷 発行",
|
231
231
|
"2012年2月15日 初版第2刷 発行",
|
@@ -234,4 +234,22 @@ class PDFMakerTest < Test::Unit::TestCase
|
|
234
234
|
assert_equal expect, history
|
235
235
|
end
|
236
236
|
|
237
|
+
def test_colophon_history_freeformat
|
238
|
+
@config["aut"] = ["Mr.Smith"]
|
239
|
+
@config["pbl"] = ["BLUEPRINT"]
|
240
|
+
@config["pht"] = ["Mrs.Smith"]
|
241
|
+
@config.merge!({"language" => "ja",
|
242
|
+
"history" => [[
|
243
|
+
"2011年8月3日 ver 1.1.0発行",
|
244
|
+
],[
|
245
|
+
"2011年10月12日 ver 1.2.0発行",
|
246
|
+
],[
|
247
|
+
"2012年1月31日 ver 1.2.1発行",
|
248
|
+
]] })
|
249
|
+
history = @maker.make_history_list
|
250
|
+
expect = ["2011年8月3日 ver 1.1.0発行",
|
251
|
+
"2011年10月12日 ver 1.2.0発行",
|
252
|
+
"2012年1月31日 ver 1.2.1発行"]
|
253
|
+
assert_equal expect, history
|
254
|
+
end
|
237
255
|
end
|