review 0.6.0 → 0.9.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/ChangeLog +441 -0
- data/README.rdoc +25 -0
- data/Rakefile +13 -1
- data/VERSION +1 -1
- data/bin/review-check +1 -1
- data/bin/review-compile +19 -10
- data/bin/review-epubmaker +114 -17
- data/bin/review-index +8 -1
- data/bin/review-pdfmaker +378 -0
- data/bin/review-preproc +2 -3
- data/bin/review-vol +1 -2
- data/debian/README.Debian +12 -0
- data/debian/README.source +5 -0
- data/debian/changelog +5 -0
- data/debian/compat +1 -0
- data/debian/control +22 -0
- data/debian/copyright +60 -0
- data/debian/docs +5 -0
- data/debian/manpage.1.ex +59 -0
- data/debian/patches/path.diff +91 -0
- data/debian/patches/series +1 -0
- data/debian/review.install +13 -0
- data/debian/review.links +4 -0
- data/debian/rules +13 -0
- data/debian/source/format +1 -0
- data/doc/format.rdoc +477 -0
- data/doc/format.re +19 -0
- data/doc/format_idg.rdoc +180 -0
- data/doc/ruby-uuid/README +11 -0
- data/doc/ruby-uuid/README.ja +34 -0
- data/doc/sample.css +17 -0
- data/doc/sample.yaml +8 -4
- data/lib/lineinput.rb +1 -1
- data/lib/review/book.rb +43 -36
- data/lib/review/builder.rb +78 -33
- data/lib/review/compiler.rb +45 -48
- data/lib/review/epubbuilder.rb +1 -675
- data/lib/review/exception.rb +1 -1
- data/lib/review/htmlbuilder.rb +627 -49
- data/lib/review/htmlutils.rb +5 -0
- data/lib/review/idgxmlbuilder.rb +239 -250
- data/lib/review/index.rb +84 -7
- data/lib/review/latexbuilder.rb +261 -42
- data/lib/review/latexutils.rb +15 -6
- data/lib/review/preprocessor.rb +40 -6
- data/lib/review/textutils.rb +22 -0
- data/lib/review/topbuilder.rb +4 -1
- data/lib/uuid.rb +312 -0
- data/review.gemspec +44 -12
- data/test/CHAPS +2 -0
- data/test/bib.re +13 -0
- data/test/test.re +43 -0
- data/test/test_book.rb +1191 -0
- data/test/test_builder.rb +147 -0
- data/test/test_htmlbuilder.rb +191 -10
- data/test/test_htmlutils.rb +24 -0
- data/test/test_idgxmlbuilder.rb +310 -0
- data/test/test_index.rb +15 -0
- data/test/test_latexbuilder.rb +217 -6
- data/test/test_lineinput.rb +198 -0
- data/test/test_textutils.rb +68 -0
- data/test/test_uuid.rb +156 -0
- metadata +43 -10
- data/doc/format.txt +0 -434
- data/doc/format_idg.txt +0 -194
- data/doc/format_sjis.txt +0 -313
- data/setup.rb +0 -1587
- data/test/test_epubbuilder.rb +0 -73
@@ -0,0 +1,147 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'test_helper'
|
4
|
+
require 'review/builder'
|
5
|
+
|
6
|
+
require 'review/book'
|
7
|
+
|
8
|
+
class MockCompiler
|
9
|
+
def text(s)
|
10
|
+
[:text, s]
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
class BuidlerTest < Test::Unit::TestCase
|
15
|
+
include ReVIEW
|
16
|
+
|
17
|
+
def setup
|
18
|
+
@b = Builder.new
|
19
|
+
@b.bind(MockCompiler.new, nil, nil)
|
20
|
+
end
|
21
|
+
|
22
|
+
def test_initialize
|
23
|
+
assert Builder.new
|
24
|
+
end
|
25
|
+
|
26
|
+
def test_bind
|
27
|
+
b = Builder.new
|
28
|
+
assert_nothing_raised do
|
29
|
+
b.bind(nil, nil, 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
|
+
b.bind(nil, nil, nil)
|
41
|
+
assert_equal '', b.result
|
42
|
+
end
|
43
|
+
|
44
|
+
def test_print_and_puts
|
45
|
+
b = Builder.new
|
46
|
+
assert_raises(NoMethodError) do # XXX: OK?
|
47
|
+
b.print ""
|
48
|
+
end
|
49
|
+
assert_raises(NoMethodError) do # XXX: OK?
|
50
|
+
b.puts ""
|
51
|
+
end
|
52
|
+
|
53
|
+
if "".respond_to?(:encode)
|
54
|
+
utf8_str = "あいうえお"
|
55
|
+
eucjp_str = "あいうえお".encode("EUC-JP")
|
56
|
+
sjis_str = "あいうえお".encode("Shift_JIS")
|
57
|
+
jis_str = "あいうえお".encode("ISO-2022-JP")
|
58
|
+
else
|
59
|
+
utf8_str = "\xe3\x81\x82\xe3\x81\x84\xe3\x81\x86\xe3\x81\x88\xe3\x81\x8a" # "あいうえお"
|
60
|
+
eucjp_str = "\xa4\xa2\xa4\xa4\xa4\xa6\xa4\xa8\xa4\xaa"
|
61
|
+
sjis_str = "\x82\xa0\x82\xa2\x82\xa4\x82\xa6\x82\xa8"
|
62
|
+
jis_str = "\x1b\x24\x42\x24\x22\x24\x24\x24\x26\x24\x28\x24\x2a\x1b\x28\x42"
|
63
|
+
end
|
64
|
+
|
65
|
+
[
|
66
|
+
['EUC', eucjp_str],
|
67
|
+
['SJIS', sjis_str],
|
68
|
+
# ['JIS', jis_str],
|
69
|
+
# ['jis', jis_str],
|
70
|
+
# ['jIs', jis_str],
|
71
|
+
['XYZ', utf8_str],
|
72
|
+
].each do |enc, expect|
|
73
|
+
params = {"outencoding" => enc}
|
74
|
+
|
75
|
+
[
|
76
|
+
[:print, utf8_str, expect],
|
77
|
+
[:puts, utf8_str, "#{expect}\n"],
|
78
|
+
[:print, "#{utf8_str}\n", "#{expect}\n"],
|
79
|
+
[:puts, "#{utf8_str}\n", "#{expect}\n"],
|
80
|
+
].each do |m, instr, expstr|
|
81
|
+
b = Builder.new
|
82
|
+
b.bind(nil, nil, nil)
|
83
|
+
ReVIEW.book.param = params
|
84
|
+
b.__send__(m, instr)
|
85
|
+
if "".respond_to?(:encode)
|
86
|
+
assert_equal expstr.encode("UTF-8"), b.result
|
87
|
+
else
|
88
|
+
assert_equal expstr, b.result
|
89
|
+
end
|
90
|
+
end
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
def test_not_implemented_methods
|
95
|
+
ex = NoMethodError # XXX: OK?
|
96
|
+
[
|
97
|
+
:list_header, :list_body, :listnum_body,
|
98
|
+
:source_header, :source_body,
|
99
|
+
:image_image, :image_dummy,
|
100
|
+
:table_header, :table_begin, :tr, :th, :table_end,
|
101
|
+
:nofunc_text,
|
102
|
+
:compile_ruby, :compile_kw, :compile_href,
|
103
|
+
:bibpaper_header, :bibpaper_bibpaper,
|
104
|
+
:inline_hd_chap,
|
105
|
+
].each do |m|
|
106
|
+
b = Builder.new
|
107
|
+
assert_raises(ex) { b.__send__(m) }
|
108
|
+
end
|
109
|
+
end
|
110
|
+
|
111
|
+
def test_compile_inline
|
112
|
+
text = "abc"
|
113
|
+
assert_equal [:text, text], @b.compile_inline(text)
|
114
|
+
end
|
115
|
+
|
116
|
+
def test_convert_outencoding_1arg
|
117
|
+
ReVIEW.book.param = {'outencoding' => "UTF-8"}
|
118
|
+
b = Builder.new
|
119
|
+
ret = b.convert_outencoding("a")
|
120
|
+
assert_equal "a", ret
|
121
|
+
end
|
122
|
+
|
123
|
+
def test_convert_outencoding_2arg
|
124
|
+
ReVIEW.book.param = {'outencoding' => "UTF-8"}
|
125
|
+
b = Builder.new
|
126
|
+
ret = b.convert_outencoding("a","b")
|
127
|
+
assert_equal(["a","b"], ret)
|
128
|
+
end
|
129
|
+
|
130
|
+
class XBuilder < Builder
|
131
|
+
def list_header(id, caption)
|
132
|
+
end
|
133
|
+
|
134
|
+
def list_body(lines)
|
135
|
+
end
|
136
|
+
|
137
|
+
def listnum_body(lines)
|
138
|
+
end
|
139
|
+
|
140
|
+
def source_header(caption)
|
141
|
+
end
|
142
|
+
|
143
|
+
def source_body(lines)
|
144
|
+
end
|
145
|
+
end
|
146
|
+
end
|
147
|
+
|
data/test/test_htmlbuilder.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
1
3
|
require 'test_helper'
|
2
4
|
require 'review/compiler'
|
3
5
|
require 'review/book'
|
@@ -9,34 +11,213 @@ class HTMLBuidlerTest < Test::Unit::TestCase
|
|
9
11
|
def setup
|
10
12
|
@builder = HTMLBuilder.new()
|
11
13
|
@param = {
|
12
|
-
"secnolevel" => 2, # for IDGXMLBuilder,
|
14
|
+
"secnolevel" => 2, # for IDGXMLBuilder, HTMLBuilder
|
13
15
|
"inencoding" => "UTF-8",
|
14
16
|
"outencoding" => "UTF-8",
|
15
17
|
"subdirmode" => nil,
|
16
|
-
"stylesheet" => nil, # for
|
18
|
+
"stylesheet" => nil, # for HTMLBuilder
|
17
19
|
}
|
18
|
-
|
19
|
-
compiler.
|
20
|
-
chapter = Chapter.new(nil, 1, '-', nil, StringIO.new)
|
21
|
-
chapter.setParameter(@param)
|
20
|
+
ReVIEW.book.param = @param
|
21
|
+
@compiler = ReVIEW::Compiler.new(@builder)
|
22
|
+
@chapter = Chapter.new(nil, 1, '-', nil, StringIO.new)
|
22
23
|
location = Location.new(nil, nil)
|
23
|
-
@builder.bind(compiler, chapter, location)
|
24
|
+
@builder.bind(@compiler, @chapter, location)
|
24
25
|
end
|
25
26
|
|
26
27
|
def test_headline_level1
|
27
28
|
@builder.headline(1,"test","this is test.")
|
28
|
-
assert_equal %Q|<h1 id=
|
29
|
+
assert_equal %Q|<h1 id="test"><a id="h1" />第1章 this is test.</h1>\n|, @builder.raw_result
|
30
|
+
end
|
31
|
+
|
32
|
+
def test_headline_level1_without_secno
|
33
|
+
@param["secnolevel"] = 0
|
34
|
+
@builder.headline(1,"test","this is test.")
|
35
|
+
assert_equal %Q|<h1 id="test"><a id="h1" />this is test.</h1>\n|, @builder.raw_result
|
36
|
+
end
|
37
|
+
|
38
|
+
def test_headline_level1_with_inlinetag
|
39
|
+
@builder.headline(1,"test","this @<b>{is} test.<&\">")
|
40
|
+
assert_equal %Q|<h1 id="test"><a id="h1" />第1章 this <b>is</b> test.<&"></h1>\n|, @builder.raw_result
|
29
41
|
end
|
30
42
|
|
31
43
|
def test_headline_level2
|
32
44
|
@builder.headline(2,"test","this is test.")
|
33
|
-
assert_equal %Q|\n<h2 id=
|
45
|
+
assert_equal %Q|\n<h2 id="test"><a id="h1-1" />1.1 this is test.</h2>\n|, @builder.raw_result
|
34
46
|
end
|
35
47
|
|
36
48
|
def test_headline_level3
|
37
49
|
@builder.headline(3,"test","this is test.")
|
38
|
-
assert_equal %Q|\n<h3 id=
|
50
|
+
assert_equal %Q|\n<h3 id="test"><a id="h1-0-1" />this is test.</h3>\n|, @builder.raw_result
|
51
|
+
end
|
52
|
+
|
53
|
+
def test_headline_level3_with_secno
|
54
|
+
@param["secnolevel"] = 3
|
55
|
+
@builder.headline(3,"test","this is test.")
|
56
|
+
assert_equal %Q|\n<h3 id="test"><a id="h1-0-1" />1.0.1 this is test.</h3>\n|, @builder.raw_result
|
57
|
+
end
|
58
|
+
|
59
|
+
def test_label
|
60
|
+
@builder.label("label_test")
|
61
|
+
assert_equal %Q|<a id="label_test" />\n|, @builder.raw_result
|
62
|
+
end
|
63
|
+
|
64
|
+
def test_href
|
65
|
+
ret = @builder.compile_href("http://github.com", "GitHub")
|
66
|
+
assert_equal %Q|<a href="http://github.com" class="link">GitHub</a>|, ret
|
67
|
+
end
|
68
|
+
|
69
|
+
def test_href_without_label
|
70
|
+
ret = @builder.compile_href("http://github.com",nil)
|
71
|
+
assert_equal %Q|<a href="http://github.com" class="link">http://github.com</a>|, ret
|
72
|
+
end
|
73
|
+
|
74
|
+
def test_inline_raw
|
75
|
+
ret = @builder.inline_raw("@<tt>{inline}")
|
76
|
+
assert_equal %Q|@<tt>{inline}|, ret
|
77
|
+
end
|
78
|
+
|
79
|
+
def test_inline_in_table
|
80
|
+
ret = @builder.table(["<b>1</b>\t<i>2</i>", "------------", "<b>3</b>\t<i>4</i><>&"])
|
81
|
+
assert_equal %Q|<div class="table">\n<table>\n<tr><th><b>1</b></th><th><i>2</i></th></tr>\n<tr><td><b>3</b></td><td><i>4</i><>&</td></tr>\n</table>\n</div>\n|, @builder.raw_result
|
82
|
+
end
|
83
|
+
|
84
|
+
def test_inline_br
|
85
|
+
ret = @builder.inline_br("")
|
86
|
+
assert_equal %Q|<br />|, ret
|
87
|
+
end
|
88
|
+
|
89
|
+
def test_inline_i
|
90
|
+
ret = @builder.compile_inline("test @<i>{inline test} test2")
|
91
|
+
assert_equal %Q|test <i>inline test</i> test2|, ret
|
92
|
+
end
|
93
|
+
|
94
|
+
def test_inline_i_and_escape
|
95
|
+
ret = @builder.compile_inline("test @<i>{inline<&;\\ test} test2")
|
96
|
+
assert_equal %Q|test <i>inline<&;\\ test</i> test2|, ret
|
97
|
+
end
|
98
|
+
|
99
|
+
def test_inline_b
|
100
|
+
ret = @builder.compile_inline("test @<b>{inline test} test2")
|
101
|
+
assert_equal %Q|test <b>inline test</b> test2|, ret
|
102
|
+
end
|
103
|
+
|
104
|
+
def test_inline_b_and_escape
|
105
|
+
ret = @builder.compile_inline("test @<b>{inline<&;\\ test} test2")
|
106
|
+
assert_equal %Q|test <b>inline<&;\\ test</b> test2|, ret
|
107
|
+
end
|
108
|
+
|
109
|
+
def test_inline_tt
|
110
|
+
ret = @builder.compile_inline("test @<tt>{inline test} test2")
|
111
|
+
assert_equal %Q|test <tt>inline test</tt> test2|, ret
|
112
|
+
end
|
113
|
+
|
114
|
+
def test_inline_tti
|
115
|
+
ret = @builder.compile_inline("test @<tti>{inline test} test2")
|
116
|
+
assert_equal %Q|test <tt><i>inline test</i></tt> test2|, ret
|
117
|
+
end
|
118
|
+
|
119
|
+
def test_inline_ttb
|
120
|
+
ret = @builder.compile_inline("test @<ttb>{inline test} test2")
|
121
|
+
assert_equal %Q|test <tt><b>inline test</b></tt> test2|, ret
|
122
|
+
end
|
123
|
+
|
124
|
+
def test_inline_uchar
|
125
|
+
ret = @builder.compile_inline("test @<uchar>{2460} test2")
|
126
|
+
assert_equal %Q|test ① test2|, ret
|
127
|
+
end
|
128
|
+
|
129
|
+
def test_quote
|
130
|
+
lines = ["foo", "bar", "","buz"]
|
131
|
+
@builder.quote(lines)
|
132
|
+
assert_equal %Q|<blockquote><p>foobar</p>\n<p>buz</p></blockquote>\n|, @builder.raw_result
|
133
|
+
end
|
134
|
+
|
135
|
+
def test_memo
|
136
|
+
@builder.memo(["test1", "", "test<i>2</i>"], "this is @<b>{test}<&>_")
|
137
|
+
assert_equal %Q|<div class="memo">\n<p class="caption">this is <b>test</b><&>_</p>\n<p>test1</p>\n<p>test<i>2</i></p>\n</div>\n|, @builder.raw_result
|
138
|
+
end
|
139
|
+
|
140
|
+
def test_noindent
|
141
|
+
@builder.noindent
|
142
|
+
@builder.paragraph(["foo", "bar"])
|
143
|
+
@builder.paragraph(["foo2", "bar2"])
|
144
|
+
assert_equal %Q|<p class="noindent">foobar</p>\n<p>foo2bar2</p>\n|, @builder.raw_result
|
145
|
+
end
|
146
|
+
|
147
|
+
def test_flushright
|
148
|
+
@builder.flushright(["foo", "bar", "", "buz"])
|
149
|
+
assert_equal %Q|<p class="flushright">foobar</p>\n<p class="flushright">buz</p>\n|, @builder.raw_result
|
150
|
+
end
|
151
|
+
|
152
|
+
def test_raw
|
153
|
+
@builder.raw("<&>\\n")
|
154
|
+
assert_equal %Q|<&>\n|, @builder.raw_result
|
155
|
+
end
|
156
|
+
|
157
|
+
def test_image
|
158
|
+
def @chapter.image(id)
|
159
|
+
item = ImageIndex::Item.new("sampleimg",1)
|
160
|
+
item.instance_eval{@pathes=["./images/chap1-sampleimg.png"]}
|
161
|
+
item
|
162
|
+
end
|
163
|
+
|
164
|
+
@builder.image_image("sampleimg","sample photo",nil)
|
165
|
+
assert_equal %Q|<div class="image">\n<img src="images/chap1-sampleimg.png" alt="sample photo" />\n<p class="caption">\n図1.1: sample photo\n</p>\n</div>\n|, @builder.raw_result
|
166
|
+
end
|
167
|
+
|
168
|
+
def test_image_with_metric
|
169
|
+
def @chapter.image(id)
|
170
|
+
item = ImageIndex::Item.new("sampleimg",1)
|
171
|
+
item.instance_eval{@pathes=["./images/chap1-sampleimg.png"]}
|
172
|
+
item
|
173
|
+
end
|
174
|
+
|
175
|
+
@builder.image_image("sampleimg","sample photo","scale=1.2")
|
176
|
+
assert_equal %Q|<div class="image">\n<img src="images/chap1-sampleimg.png" alt="sample photo" />\n<p class="caption">\n図1.1: sample photo\n</p>\n</div>\n|, @builder.raw_result
|
177
|
+
end
|
178
|
+
|
179
|
+
def test_indepimage
|
180
|
+
def @chapter.image(id)
|
181
|
+
item = ImageIndex::Item.new("sampleimg",1)
|
182
|
+
item.instance_eval{@pathes=["./images/chap1-sampleimg.png"]}
|
183
|
+
item
|
184
|
+
end
|
185
|
+
|
186
|
+
@builder.indepimage("sampleimg","sample photo",nil)
|
187
|
+
assert_equal %Q|<div class="image">\n<img src="images/chap1-sampleimg.png" alt="sample photo" />\n<p class="caption">\n図: sample photo\n</p>\n</div>\n|, @builder.raw_result
|
39
188
|
end
|
40
189
|
|
190
|
+
def test_indepimage_without_caption
|
191
|
+
def @chapter.image(id)
|
192
|
+
item = ImageIndex::Item.new("sampleimg",1)
|
193
|
+
item.instance_eval{@pathes=["./images/chap1-sampleimg.png"]}
|
194
|
+
item
|
195
|
+
end
|
196
|
+
|
197
|
+
@builder.indepimage("sampleimg",nil,nil)
|
198
|
+
assert_equal %Q|<div class="image">\n<img src="images/chap1-sampleimg.png" alt="" />\n|, @builder.raw_result
|
199
|
+
end
|
200
|
+
|
201
|
+
def test_indepimage_with_metric
|
202
|
+
def @chapter.image(id)
|
203
|
+
item = ImageIndex::Item.new("sampleimg",1)
|
204
|
+
item.instance_eval{@pathes=["./images/chap1-sampleimg.png"]}
|
205
|
+
item
|
206
|
+
end
|
207
|
+
|
208
|
+
@builder.indepimage("sampleimg","sample photo","scale=1.2")
|
209
|
+
assert_equal %Q|<div class="image">\n<img src="images/chap1-sampleimg.png" alt="sample photo" />\n<p class="caption">\n図: sample photo\n</p>\n</div>\n|, @builder.raw_result
|
210
|
+
end
|
211
|
+
|
212
|
+
def test_indepimage_without_caption_but_with_metric
|
213
|
+
def @chapter.image(id)
|
214
|
+
item = ImageIndex::Item.new("sampleimg",1)
|
215
|
+
item.instance_eval{@pathes=["./images/chap1-sampleimg.png"]}
|
216
|
+
item
|
217
|
+
end
|
218
|
+
|
219
|
+
@builder.indepimage("sampleimg",nil,"scale=1.2")
|
220
|
+
assert_equal %Q|<div class="image">\n<img src="images/chap1-sampleimg.png" alt="" />\n|, @builder.raw_result
|
221
|
+
end
|
41
222
|
|
42
223
|
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
require 'review/htmlutils'
|
3
|
+
|
4
|
+
class HTMLUtilsTest < Test::Unit::TestCase
|
5
|
+
include ReVIEW::HTMLUtils
|
6
|
+
|
7
|
+
def test_escape_html
|
8
|
+
assert_equal '<', escape_html('<')
|
9
|
+
assert_equal '<<', escape_html('<<')
|
10
|
+
assert_equal '_<_<_', escape_html('_<_<_')
|
11
|
+
end
|
12
|
+
|
13
|
+
def test_escape_html_ex
|
14
|
+
keys = ESC.keys
|
15
|
+
ESC['.'] = 'X'
|
16
|
+
ESC.each_pair do |ch, ref|
|
17
|
+
if keys.include?(ch)
|
18
|
+
assert_equal ref, escape_html(ch)
|
19
|
+
else
|
20
|
+
assert_equal ch, escape_html(ch)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,310 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'test_helper'
|
4
|
+
require 'review/compiler'
|
5
|
+
require 'review/book'
|
6
|
+
require 'review/idgxmlbuilder'
|
7
|
+
|
8
|
+
class IDGXMLBuidlerTest < Test::Unit::TestCase
|
9
|
+
include ReVIEW
|
10
|
+
|
11
|
+
def setup
|
12
|
+
@builder = IDGXMLBuilder.new()
|
13
|
+
@param = {
|
14
|
+
"secnolevel" => 2,
|
15
|
+
"inencoding" => "UTF-8",
|
16
|
+
"outencoding" => "UTF-8",
|
17
|
+
"nolf" => true,
|
18
|
+
"tableopt" => "10",
|
19
|
+
"subdirmode" => nil,
|
20
|
+
}
|
21
|
+
ReVIEW.book.param = @param
|
22
|
+
@compiler = ReVIEW::Compiler.new(@builder)
|
23
|
+
@chapter = Chapter.new(nil, 1, '-', nil, StringIO.new)
|
24
|
+
location = Location.new(nil, nil)
|
25
|
+
@builder.bind(@compiler, @chapter, location)
|
26
|
+
end
|
27
|
+
|
28
|
+
def test_headline_level1
|
29
|
+
@builder.headline(1,"test","this is test.")
|
30
|
+
assert_equal %Q|<?xml version="1.0" encoding="UTF-8"?>\n<doc xmlns:aid="http://ns.adobe.com/AdobeInDesign/4.0/"><title id="test" aid:pstyle="h1">第1章 this is test.</title><?dtp level="1" section="第1章 this is test."?>|, @builder.raw_result
|
31
|
+
end
|
32
|
+
|
33
|
+
def test_headline_level1_without_secno
|
34
|
+
@param["secnolevel"] = 0
|
35
|
+
@builder.headline(1,"test","this is test.")
|
36
|
+
assert_equal %Q|<?xml version="1.0" encoding="UTF-8"?>\n<doc xmlns:aid="http://ns.adobe.com/AdobeInDesign/4.0/"><title id="test" aid:pstyle="h1">this is test.</title><?dtp level="1" section="this is test."?>|, @builder.raw_result
|
37
|
+
end
|
38
|
+
|
39
|
+
def test_headline_level2
|
40
|
+
@builder.headline(2,"test","this is test.")
|
41
|
+
assert_equal %Q|<?xml version="1.0" encoding="UTF-8"?>\n<doc xmlns:aid="http://ns.adobe.com/AdobeInDesign/4.0/"><title id="test" aid:pstyle="h2">1.1 this is test.</title><?dtp level="2" section="1.1 this is test."?>|, @builder.raw_result
|
42
|
+
end
|
43
|
+
|
44
|
+
def test_headline_level3
|
45
|
+
@builder.headline(3,"test","this is test.")
|
46
|
+
assert_equal %Q|<?xml version="1.0" encoding="UTF-8"?>\n<doc xmlns:aid="http://ns.adobe.com/AdobeInDesign/4.0/"><title id="test" aid:pstyle="h3">this is test.</title><?dtp level="3" section="this is test."?>|, @builder.raw_result
|
47
|
+
end
|
48
|
+
|
49
|
+
|
50
|
+
def test_headline_level3_with_secno
|
51
|
+
@param["secnolevel"] = 3
|
52
|
+
@builder.headline(3,"test","this is test.")
|
53
|
+
assert_equal %Q|<?xml version="1.0" encoding="UTF-8"?>\n<doc xmlns:aid="http://ns.adobe.com/AdobeInDesign/4.0/"><title id="test" aid:pstyle="h3">1.0.1 this is test.</title><?dtp level="3" section="1.0.1 this is test."?>|, @builder.raw_result
|
54
|
+
end
|
55
|
+
|
56
|
+
def test_label
|
57
|
+
@builder.label("label_test")
|
58
|
+
assert_equal %Q|<?xml version="1.0" encoding="UTF-8"?>\n<doc xmlns:aid="http://ns.adobe.com/AdobeInDesign/4.0/"><label id='label_test' />|, @builder.raw_result
|
59
|
+
end
|
60
|
+
|
61
|
+
def test_href
|
62
|
+
ret = @builder.compile_href("http://github.com", "GitHub")
|
63
|
+
assert_equal %Q|<a linkurl='http://github.com'>GitHub</a>|, ret
|
64
|
+
end
|
65
|
+
|
66
|
+
def test_href_without_label
|
67
|
+
ret = @builder.compile_href("http://github.com",nil)
|
68
|
+
assert_equal %Q|<a linkurl='http://github.com'>http://github.com</a>|, ret
|
69
|
+
end
|
70
|
+
|
71
|
+
def test_inline_raw
|
72
|
+
ret = @builder.inline_raw("@<tt>{inline}")
|
73
|
+
assert_equal %Q|@<tt>{inline}|, ret
|
74
|
+
end
|
75
|
+
|
76
|
+
def test_inline_in_table
|
77
|
+
ret = @builder.table(["<b>1</b>\t<i>2</i>", "------------", "<b>3</b>\t<i>4</i><>&"])
|
78
|
+
assert_equal %Q|<?xml version="1.0" encoding="UTF-8"?>\n<doc xmlns:aid="http://ns.adobe.com/AdobeInDesign/4.0/"><table><tbody xmlns:aid5="http://ns.adobe.com/AdobeInDesign/5.0/" aid:table="table" aid:trows="2" aid:tcols="2"><td aid:table="cell" aid:theader="1" aid:crows="1" aid:ccols="1" aid:ccolwidth="14.2450142450142"><b>1</b></td><td aid:table="cell" aid:theader="1" aid:crows="1" aid:ccols="1" aid:ccolwidth="14.2450142450142"><i>2</i></td><td aid:table="cell" aid:crows="1" aid:ccols="1" aid:ccolwidth="14.2450142450142"><b>3</b></td><td aid:table="cell" aid:crows="1" aid:ccols="1" aid:ccolwidth="14.2450142450142"><i>4</i><>&</td></tbody></table>|, @builder.raw_result
|
79
|
+
end
|
80
|
+
|
81
|
+
def test_inline_in_table_without_header
|
82
|
+
ret = @builder.table(["<b>1</b>\t<i>2</i>", "<b>3</b>\t<i>4</i><>&"])
|
83
|
+
assert_equal %Q|<?xml version="1.0" encoding="UTF-8"?>\n<doc xmlns:aid="http://ns.adobe.com/AdobeInDesign/4.0/"><table><tbody xmlns:aid5="http://ns.adobe.com/AdobeInDesign/5.0/" aid:table="table" aid:trows="2" aid:tcols="2"><td aid:table="cell" aid:crows="1" aid:ccols="1" aid:ccolwidth="14.2450142450142"><b>1</b></td><td aid:table="cell" aid:crows="1" aid:ccols="1" aid:ccolwidth="14.2450142450142"><i>2</i></td><td aid:table="cell" aid:crows="1" aid:ccols="1" aid:ccolwidth="14.2450142450142"><b>3</b></td><td aid:table="cell" aid:crows="1" aid:ccols="1" aid:ccolwidth="14.2450142450142"><i>4</i><>&</td></tbody></table>|, @builder.raw_result
|
84
|
+
end
|
85
|
+
|
86
|
+
def test_inline_in_table_without_cellwidth
|
87
|
+
@param["tableopt"] = nil
|
88
|
+
ret = @builder.table(["<b>1</b>\t<i>2</i>", "------------", "<b>3</b>\t<i>4</i><>&"])
|
89
|
+
assert_equal %Q|<?xml version="1.0" encoding="UTF-8"?>\n<doc xmlns:aid="http://ns.adobe.com/AdobeInDesign/4.0/"><table><tbody><tr type="header"><b>1</b>\t<i>2</i></tr><tr type="lastline"><b>3</b>\t<i>4</i><>&</tr></tbody></table>|, @builder.raw_result
|
90
|
+
@param["tableopt"] = 10
|
91
|
+
end
|
92
|
+
|
93
|
+
def test_inline_in_table_without_header_and_cellwidth
|
94
|
+
@param["tableopt"] = nil
|
95
|
+
ret = @builder.table(["<b>1</b>\t<i>2</i>", "<b>3</b>\t<i>4</i><>&"])
|
96
|
+
assert_equal %Q|<?xml version="1.0" encoding="UTF-8"?>\n<doc xmlns:aid="http://ns.adobe.com/AdobeInDesign/4.0/"><table><tbody><tr><b>1</b>\t<i>2</i></tr><tr type="lastline"><b>3</b>\t<i>4</i><>&</tr></tbody></table>|, @builder.raw_result
|
97
|
+
@param["tableopt"] = 10
|
98
|
+
end
|
99
|
+
|
100
|
+
def test_inline_br
|
101
|
+
ret = @builder.inline_br("")
|
102
|
+
assert_equal %Q|\n|, ret
|
103
|
+
end
|
104
|
+
|
105
|
+
def test_inline_uchar
|
106
|
+
ret = @builder.compile_inline("test @<uchar>{2460} test2")
|
107
|
+
assert_equal %Q|test ① test2|, ret
|
108
|
+
end
|
109
|
+
|
110
|
+
def test_inline_ruby
|
111
|
+
ret = @builder.compile_ruby("coffin", "bed")
|
112
|
+
assert_equal %Q|<GroupRuby><aid:ruby xmlns:aid="http://ns.adobe.com/AdobeInDesign/3.0/"><aid:rb>coffin</aid:rb><aid:rt>bed</aid:rt></aid:ruby></GroupRuby>|, ret
|
113
|
+
end
|
114
|
+
|
115
|
+
def test_inline_kw
|
116
|
+
ret = @builder.compile_inline("@<kw>{ISO, International Organization for Standardization } @<kw>{Ruby<>}")
|
117
|
+
assert_equal %Q|<keyword>ISO(International Organization for Standardization)</keyword><index value="ISO" /><index value="International Organization for Standardization" /> <keyword>Ruby<></keyword><index value="Ruby<>" />|, ret
|
118
|
+
end
|
119
|
+
|
120
|
+
def test_inline_maru
|
121
|
+
ret = @builder.compile_inline("@<maru>{1}@<maru>{20}@<maru>{A}@<maru>{z}")
|
122
|
+
assert_equal %Q|①⑳Ⓐⓩ|, ret
|
123
|
+
end
|
124
|
+
|
125
|
+
def test_inline_ttb
|
126
|
+
ret = @builder.inline_ttb("test * <>\"")
|
127
|
+
assert_equal %Q|<tt style='bold'>test * <>"</tt><index value='test ESCAPED_ASTERISK <>"' />|, ret
|
128
|
+
end
|
129
|
+
|
130
|
+
def test_inline_ttbold
|
131
|
+
ret = @builder.inline_ttbold("test * <>\"")
|
132
|
+
assert_equal %Q|<tt style='bold'>test * <>"</tt><index value='test ESCAPED_ASTERISK <>"' />|, ret
|
133
|
+
end
|
134
|
+
|
135
|
+
def test_inline_balloon
|
136
|
+
ret = @builder.inline_balloon("@maru[1]test")
|
137
|
+
assert_equal %Q|<balloon>①test</balloon>|, ret
|
138
|
+
end
|
139
|
+
|
140
|
+
def test_inline_m
|
141
|
+
ret = @builder.compile_inline("@<m>{\\sin} @<m>{\\frac{1\\}{2\\}}")
|
142
|
+
assert_equal %Q|<replace idref="texinline-1"><pre>\\sin</pre></replace> <replace idref="texinline-2"><pre>\\frac{1}{2}</pre></replace>|, ret
|
143
|
+
end
|
144
|
+
|
145
|
+
def test_paragraph
|
146
|
+
lines = ["foo","bar"]
|
147
|
+
@builder.paragraph(lines)
|
148
|
+
assert_equal %Q|<?xml version="1.0" encoding="UTF-8"?>\n<doc xmlns:aid="http://ns.adobe.com/AdobeInDesign/4.0/"><p>foobar</p>|, @builder.raw_result
|
149
|
+
end
|
150
|
+
|
151
|
+
def test_tabbed_paragraph
|
152
|
+
lines = ["\tfoo","bar"]
|
153
|
+
@builder.paragraph(lines)
|
154
|
+
assert_equal %Q|<?xml version="1.0" encoding="UTF-8"?>\n<doc xmlns:aid="http://ns.adobe.com/AdobeInDesign/4.0/"><p inlist="1">foobar</p>|, @builder.raw_result
|
155
|
+
end
|
156
|
+
|
157
|
+
def test_quote
|
158
|
+
lines = ["foo","bar","","buz"]
|
159
|
+
@builder.quote(lines)
|
160
|
+
assert_equal %Q|<?xml version="1.0" encoding="UTF-8"?>\n<doc xmlns:aid="http://ns.adobe.com/AdobeInDesign/4.0/"><quote><p>foobar</p><p>buz</p></quote>|, @builder.raw_result
|
161
|
+
end
|
162
|
+
|
163
|
+
def test_quote_deprecated
|
164
|
+
lines = ["foo","","buz"]
|
165
|
+
ReVIEW.book.param["deprecated-blocklines"] = true
|
166
|
+
@builder.quote(lines)
|
167
|
+
ReVIEW.book.param["deprecated-blocklines"] = nil
|
168
|
+
assert_equal %Q|<?xml version="1.0" encoding="UTF-8"?>\n<doc xmlns:aid="http://ns.adobe.com/AdobeInDesign/4.0/"><quote>foo\n\nbuz</quote>|, @builder.raw_result
|
169
|
+
end
|
170
|
+
|
171
|
+
def test_note
|
172
|
+
@builder.note(["test1", "test1.5", "", "test<i>2</i>"], "this is @<b>{test}<&>_")
|
173
|
+
assert_equal %Q|<?xml version="1.0" encoding="UTF-8"?>\n<doc xmlns:aid="http://ns.adobe.com/AdobeInDesign/4.0/"><note><title aid:pstyle='note-title'>this is <b>test</b><&>_</title><p>test1test1.5</p><p>test<i>2</i></p></note>|, @builder.raw_result
|
174
|
+
end
|
175
|
+
|
176
|
+
def test_memo
|
177
|
+
@builder.memo(["test1", "test1.5", "", "test<i>2</i>"], "this is @<b>{test}<&>_")
|
178
|
+
assert_equal %Q|<?xml version="1.0" encoding="UTF-8"?>\n<doc xmlns:aid="http://ns.adobe.com/AdobeInDesign/4.0/"><memo><title aid:pstyle='memo-title'>this is <b>test</b><&>_</title><p>test1test1.5</p><p>test<i>2</i></p></memo>|, @builder.raw_result
|
179
|
+
end
|
180
|
+
|
181
|
+
def test_term
|
182
|
+
@builder.term(["test1", "test1.5", "", "test<i>2</i>"])
|
183
|
+
assert_equal %Q|<?xml version="1.0" encoding="UTF-8"?>\n<doc xmlns:aid="http://ns.adobe.com/AdobeInDesign/4.0/"><term><p>test1test1.5</p><p>test<i>2</i></p></term>|, @builder.raw_result
|
184
|
+
end
|
185
|
+
|
186
|
+
def test_term_deprecated
|
187
|
+
ReVIEW.book.param["deprecated-blocklines"] = true
|
188
|
+
@builder.term(["test1", "test1.5", "", "test<i>2</i>"])
|
189
|
+
ReVIEW.book.param["deprecated-blocklines"] = nil
|
190
|
+
assert_equal %Q|<?xml version="1.0" encoding="UTF-8"?>\n<doc xmlns:aid="http://ns.adobe.com/AdobeInDesign/4.0/"><term>test1\ntest1.5\n\ntest<i>2</i></term>|, @builder.raw_result
|
191
|
+
end
|
192
|
+
|
193
|
+
def test_notice
|
194
|
+
@builder.notice(["test1", "test1.5", "", "test<i>2</i>"], "this is @<b>{test}<&>_")
|
195
|
+
assert_equal %Q|<?xml version="1.0" encoding="UTF-8"?>\n<doc xmlns:aid="http://ns.adobe.com/AdobeInDesign/4.0/"><notice-t><title aid:pstyle='notice-title'>this is <b>test</b><&>_</title><p>test1test1.5</p><p>test<i>2</i></p></notice-t>|, @builder.raw_result
|
196
|
+
end
|
197
|
+
|
198
|
+
def test_notice_without_caption
|
199
|
+
@builder.notice(["test1", "test1.5", "", "test<i>2</i>"], nil)
|
200
|
+
assert_equal %Q|<?xml version="1.0" encoding="UTF-8"?>\n<doc xmlns:aid="http://ns.adobe.com/AdobeInDesign/4.0/"><notice><p>test1test1.5</p><p>test<i>2</i></p></notice>|, @builder.raw_result
|
201
|
+
end
|
202
|
+
|
203
|
+
def test_point
|
204
|
+
@builder.point(["test1", "test1.5", "", "test<i>2</i>"], "this is @<b>{test}<&>_")
|
205
|
+
assert_equal %Q|<?xml version="1.0" encoding="UTF-8"?>\n<doc xmlns:aid="http://ns.adobe.com/AdobeInDesign/4.0/"><point-t><title aid:pstyle='point-title'>this is <b>test</b><&>_</title><p>test1test1.5</p><p>test<i>2</i></p></point-t>|, @builder.raw_result
|
206
|
+
end
|
207
|
+
|
208
|
+
def test_point_without_caption
|
209
|
+
@builder.point(["test1", "test1.5", "", "test<i>2</i>"], nil)
|
210
|
+
assert_equal %Q|<?xml version="1.0" encoding="UTF-8"?>\n<doc xmlns:aid="http://ns.adobe.com/AdobeInDesign/4.0/"><point><p>test1test1.5</p><p>test<i>2</i></p></point>|, @builder.raw_result
|
211
|
+
end
|
212
|
+
|
213
|
+
def test_insn
|
214
|
+
@param["listinfo"] = true
|
215
|
+
@builder.insn(["test1", "test1.5", "", "test<i>2</i>"], "this is @<b>{test}<&>_")
|
216
|
+
@param["listinfo"] = nil
|
217
|
+
assert_equal %Q|<?xml version="1.0" encoding="UTF-8"?>\n<doc xmlns:aid="http://ns.adobe.com/AdobeInDesign/4.0/"><insn><floattitle type="insn">this is <b>test</b><&>_</floattitle><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></insn>|, @builder.raw_result
|
218
|
+
end
|
219
|
+
|
220
|
+
def test_box
|
221
|
+
@param["listinfo"] = true
|
222
|
+
@builder.box(["test1", "test1.5", "", "test<i>2</i>"], "this is @<b>{test}<&>_")
|
223
|
+
@param["listinfo"] = nil
|
224
|
+
assert_equal %Q|<?xml version="1.0" encoding="UTF-8"?>\n<doc xmlns:aid="http://ns.adobe.com/AdobeInDesign/4.0/"><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>|, @builder.raw_result
|
225
|
+
end
|
226
|
+
|
227
|
+
def test_flushright
|
228
|
+
@builder.flushright(["foo", "bar", "","buz"])
|
229
|
+
assert_equal %Q|<?xml version="1.0" encoding="UTF-8"?>\n<doc xmlns:aid="http://ns.adobe.com/AdobeInDesign/4.0/"><p align='right'>foobar</p><p align='right'>buz</p>|, @builder.raw_result
|
230
|
+
end
|
231
|
+
|
232
|
+
def test_noindent
|
233
|
+
@builder.noindent
|
234
|
+
@builder.paragraph(["foo", "bar"])
|
235
|
+
@builder.paragraph(["foo2", "bar2"])
|
236
|
+
assert_equal %Q|<?xml version="1.0" encoding="UTF-8"?>\n<doc xmlns:aid="http://ns.adobe.com/AdobeInDesign/4.0/"><p aid:pstyle="noindent" noindent='1'>foobar</p><p>foo2bar2</p>|, @builder.raw_result
|
237
|
+
end
|
238
|
+
|
239
|
+
def test_raw
|
240
|
+
@builder.raw("<&>\\n")
|
241
|
+
assert_equal %Q|<?xml version="1.0" encoding="UTF-8"?>\n<doc xmlns:aid="http://ns.adobe.com/AdobeInDesign/4.0/"><&>\n|, @builder.raw_result
|
242
|
+
end
|
243
|
+
|
244
|
+
def test_image
|
245
|
+
def @chapter.image(id)
|
246
|
+
item = ImageIndex::Item.new("sampleimg",1)
|
247
|
+
item.instance_eval{@pathes=["./images/chap1-sampleimg.png"]}
|
248
|
+
item
|
249
|
+
end
|
250
|
+
|
251
|
+
@builder.image_image("sampleimg","sample photo",nil)
|
252
|
+
assert_equal %Q|<?xml version="1.0" encoding="UTF-8"?>\n<doc xmlns:aid="http://ns.adobe.com/AdobeInDesign/4.0/"><img><Image href="file://images/chap1-sampleimg.png" /><caption>図1.1 sample photo</caption></img>|, @builder.raw_result
|
253
|
+
end
|
254
|
+
|
255
|
+
def test_image_with_metric
|
256
|
+
def @chapter.image(id)
|
257
|
+
item = ImageIndex::Item.new("sampleimg",1)
|
258
|
+
item.instance_eval{@pathes=["./images/chap1-sampleimg.png"]}
|
259
|
+
item
|
260
|
+
end
|
261
|
+
|
262
|
+
@builder.image_image("sampleimg","sample photo","scale=1.2")
|
263
|
+
assert_equal %Q|<?xml version="1.0" encoding="UTF-8"?>\n<doc xmlns:aid="http://ns.adobe.com/AdobeInDesign/4.0/"><img><Image href="file://images/chap1-sampleimg.png" scale="1.2" /><caption>図1.1 sample photo</caption></img>|, @builder.raw_result
|
264
|
+
end
|
265
|
+
|
266
|
+
def test_indepimage
|
267
|
+
def @chapter.image(id)
|
268
|
+
item = ImageIndex::Item.new("sampleimg",1)
|
269
|
+
item.instance_eval{@pathes=["./images/chap1-sampleimg.png"]}
|
270
|
+
item
|
271
|
+
end
|
272
|
+
|
273
|
+
@builder.indepimage("sampleimg","sample photo",nil)
|
274
|
+
assert_equal %Q|<?xml version="1.0" encoding="UTF-8"?>\n<doc xmlns:aid="http://ns.adobe.com/AdobeInDesign/4.0/"><img><Image href="file://images/chap1-sampleimg.png" /><caption>sample photo</caption></img>|, @builder.raw_result
|
275
|
+
end
|
276
|
+
|
277
|
+
def test_indepimage_without_caption
|
278
|
+
def @chapter.image(id)
|
279
|
+
item = ImageIndex::Item.new("sampleimg",1)
|
280
|
+
item.instance_eval{@pathes=["./images/chap1-sampleimg.png"]}
|
281
|
+
item
|
282
|
+
end
|
283
|
+
|
284
|
+
@builder.indepimage("sampleimg",nil,nil)
|
285
|
+
assert_equal %Q|<?xml version="1.0" encoding="UTF-8"?>\n<doc xmlns:aid="http://ns.adobe.com/AdobeInDesign/4.0/"><img><Image href="file://images/chap1-sampleimg.png" /></img>|, @builder.raw_result
|
286
|
+
end
|
287
|
+
|
288
|
+
def test_indepimage_with_metric
|
289
|
+
def @chapter.image(id)
|
290
|
+
item = ImageIndex::Item.new("sampleimg",1)
|
291
|
+
item.instance_eval{@pathes=["./images/chap1-sampleimg.png"]}
|
292
|
+
item
|
293
|
+
end
|
294
|
+
|
295
|
+
@builder.indepimage("sampleimg","sample photo","scale=1.2")
|
296
|
+
assert_equal %Q|<?xml version="1.0" encoding="UTF-8"?>\n<doc xmlns:aid="http://ns.adobe.com/AdobeInDesign/4.0/"><img><Image href="file://images/chap1-sampleimg.png" scale="1.2" /><caption>sample photo</caption></img>|, @builder.raw_result
|
297
|
+
end
|
298
|
+
|
299
|
+
def test_indepimage_without_caption_but_with_metric
|
300
|
+
def @chapter.image(id)
|
301
|
+
item = ImageIndex::Item.new("sampleimg",1)
|
302
|
+
item.instance_eval{@pathes=["./images/chap1-sampleimg.png"]}
|
303
|
+
item
|
304
|
+
end
|
305
|
+
|
306
|
+
@builder.indepimage("sampleimg",nil,"scale=1.2")
|
307
|
+
assert_equal %Q|<?xml version="1.0" encoding="UTF-8"?>\n<doc xmlns:aid="http://ns.adobe.com/AdobeInDesign/4.0/"><img><Image href="file://images/chap1-sampleimg.png" scale="1.2" /></img>|, @builder.raw_result
|
308
|
+
end
|
309
|
+
|
310
|
+
end
|