review 0.6.0 → 0.9.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|