tmtms-review 1.0.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.
Files changed (107) hide show
  1. checksums.yaml +7 -0
  2. data/.travis.yml +9 -0
  3. data/COPYING +515 -0
  4. data/ChangeLog +2083 -0
  5. data/README.rdoc +50 -0
  6. data/Rakefile +56 -0
  7. data/VERSION +1 -0
  8. data/bin/review-check +178 -0
  9. data/bin/review-checkdep +63 -0
  10. data/bin/review-compile +205 -0
  11. data/bin/review-epubmaker +661 -0
  12. data/bin/review-epubmaker-ng +176 -0
  13. data/bin/review-index +118 -0
  14. data/bin/review-pdfmaker +208 -0
  15. data/bin/review-preproc +142 -0
  16. data/bin/review-validate +51 -0
  17. data/bin/review-vol +102 -0
  18. data/debian/README.Debian +12 -0
  19. data/debian/README.source +5 -0
  20. data/debian/changelog +5 -0
  21. data/debian/compat +1 -0
  22. data/debian/control +22 -0
  23. data/debian/copyright +62 -0
  24. data/debian/docs +6 -0
  25. data/debian/manpage.1.ex +59 -0
  26. data/debian/patches/path.diff +91 -0
  27. data/debian/patches/series +1 -0
  28. data/debian/review.install +13 -0
  29. data/debian/review.links +4 -0
  30. data/debian/rules +13 -0
  31. data/debian/source/format +1 -0
  32. data/doc/format.rdoc +582 -0
  33. data/doc/format_idg.rdoc +180 -0
  34. data/doc/libepubmaker/sample.yaml +90 -0
  35. data/doc/quickstart.rdoc +188 -0
  36. data/doc/ruby-uuid/README +11 -0
  37. data/doc/ruby-uuid/README.ja +34 -0
  38. data/doc/sample.css +108 -0
  39. data/doc/sample.yaml +62 -0
  40. data/lib/epubmaker.rb +28 -0
  41. data/lib/epubmaker/content.rb +82 -0
  42. data/lib/epubmaker/epubv2.rb +418 -0
  43. data/lib/epubmaker/epubv3.rb +249 -0
  44. data/lib/epubmaker/producer.rb +204 -0
  45. data/lib/epubmaker/resource.rb +66 -0
  46. data/lib/lineinput.rb +155 -0
  47. data/lib/review.rb +3 -0
  48. data/lib/review/book.rb +46 -0
  49. data/lib/review/book/base.rb +235 -0
  50. data/lib/review/book/chapter.rb +81 -0
  51. data/lib/review/book/compilable.rb +159 -0
  52. data/lib/review/book/index.rb +339 -0
  53. data/lib/review/book/page_metric.rb +38 -0
  54. data/lib/review/book/parameters.rb +97 -0
  55. data/lib/review/book/part.rb +44 -0
  56. data/lib/review/book/volume.rb +65 -0
  57. data/lib/review/builder.rb +444 -0
  58. data/lib/review/compiler.rb +550 -0
  59. data/lib/review/configure.rb +38 -0
  60. data/lib/review/epubbuilder.rb +18 -0
  61. data/lib/review/exception.rb +21 -0
  62. data/lib/review/extentions.rb +3 -0
  63. data/lib/review/extentions/object.rb +9 -0
  64. data/lib/review/extentions/string.rb +33 -0
  65. data/lib/review/htmlbuilder.rb +1097 -0
  66. data/lib/review/htmllayout.rb +19 -0
  67. data/lib/review/htmlutils.rb +36 -0
  68. data/lib/review/i18n.rb +30 -0
  69. data/lib/review/i18n.yaml +34 -0
  70. data/lib/review/idgxmlbuilder.rb +1145 -0
  71. data/lib/review/latexbuilder.rb +815 -0
  72. data/lib/review/latexindex.rb +35 -0
  73. data/lib/review/latexutils.rb +79 -0
  74. data/lib/review/preprocessor.rb +563 -0
  75. data/lib/review/review.tex.erb +232 -0
  76. data/lib/review/textbuilder.rb +17 -0
  77. data/lib/review/textutils.rb +66 -0
  78. data/lib/review/tocparser.rb +342 -0
  79. data/lib/review/tocprinter.rb +221 -0
  80. data/lib/review/topbuilder.rb +785 -0
  81. data/lib/review/unfold.rb +138 -0
  82. data/lib/uuid.rb +312 -0
  83. data/review.gemspec +141 -0
  84. data/test/CHAPS +2 -0
  85. data/test/bib.re +13 -0
  86. data/test/book_test_helper.rb +35 -0
  87. data/test/test.re +43 -0
  88. data/test/test_book.rb +598 -0
  89. data/test/test_book_chapter.rb +418 -0
  90. data/test/test_book_parameter.rb +42 -0
  91. data/test/test_book_part.rb +50 -0
  92. data/test/test_builder.rb +144 -0
  93. data/test/test_compiler.rb +44 -0
  94. data/test/test_epubmaker.rb +507 -0
  95. data/test/test_helper.rb +27 -0
  96. data/test/test_htmlbuilder.rb +554 -0
  97. data/test/test_htmlutils.rb +28 -0
  98. data/test/test_i18n.rb +64 -0
  99. data/test/test_idgxmlbuilder.rb +589 -0
  100. data/test/test_index.rb +31 -0
  101. data/test/test_latexbuilder.rb +656 -0
  102. data/test/test_lineinput.rb +198 -0
  103. data/test/test_preprocessor.rb +23 -0
  104. data/test/test_textutils.rb +68 -0
  105. data/test/test_topbuilder.rb +244 -0
  106. data/test/test_uuid.rb +156 -0
  107. metadata +161 -0
@@ -0,0 +1,27 @@
1
+ $LOAD_PATH.unshift(File.dirname(__FILE__) + '/../lib/')
2
+ require 'test/unit'
3
+
4
+ def ul_helper(src, expect)
5
+ io = StringIO.new(src)
6
+ li = LineInput.new(io)
7
+ @compiler.__send__(:compile_ulist, li)
8
+ assert_equal expect, @builder.raw_result
9
+ end
10
+
11
+ def builder_helper(src, expect, method_sym)
12
+ io = StringIO.new(src)
13
+ li = LineInput.new(io)
14
+ @compiler.__send__(method_sym, li)
15
+ assert_equal expect, @builder.raw_result
16
+ end
17
+
18
+ def touch_file(path)
19
+ File.open(path, "w").close
20
+ path
21
+ end
22
+
23
+ def prepare_samplebook(srcdir)
24
+ samplebook_dir = File.expand_path("sample-book/src/", File.dirname(__FILE__))
25
+ FileUtils.cp_r(Dir.glob(samplebook_dir + "/*"), srcdir)
26
+ YAML.load(File.open(srcdir + "/config.yml"))
27
+ end
@@ -0,0 +1,554 @@
1
+ # encoding: utf-8
2
+
3
+ require 'test_helper'
4
+ require 'review/compiler'
5
+ require 'review/book'
6
+ require 'review/htmlbuilder'
7
+
8
+ class HTMLBuidlerTest < Test::Unit::TestCase
9
+ include ReVIEW
10
+
11
+ def setup
12
+ @builder = HTMLBuilder.new()
13
+ @param = {
14
+ "secnolevel" => 2, # for IDGXMLBuilder, HTMLBuilder
15
+ "inencoding" => "UTF-8",
16
+ "outencoding" => "UTF-8",
17
+ "subdirmode" => nil,
18
+ "stylesheet" => nil, # for HTMLBuilder
19
+ }
20
+ ReVIEW.book.param = @param
21
+ @compiler = ReVIEW::Compiler.new(@builder)
22
+ @chapter = Book::Chapter.new(nil, 1, '-', nil, StringIO.new)
23
+ location = Location.new(nil, nil)
24
+ @builder.bind(@compiler, @chapter, location)
25
+ end
26
+
27
+ def test_headline_level1
28
+ @builder.headline(1,"test","this is test.")
29
+ assert_equal %Q|<h1 id="test"><a id="h1"></a>第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"></a>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"></a>第1章 this <b>is</b> test.&lt;&amp;&quot;&gt;</h1>\n|, @builder.raw_result
41
+ end
42
+
43
+ def test_headline_level2
44
+ @builder.headline(2,"test","this is test.")
45
+ assert_equal %Q|\n<h2 id="test"><a id="h1-1"></a>1.1 this is test.</h2>\n|, @builder.raw_result
46
+ end
47
+
48
+ def test_headline_level3
49
+ @builder.headline(3,"test","this is test.")
50
+ assert_equal %Q|\n<h3 id="test"><a id="h1-0-1"></a>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"></a>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"></a>\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_href
75
+ ret = @builder.inline_href("http://github.com, Git\\,Hub")
76
+ assert_equal %Q|<a href="http://github.com" class="link">Git,Hub</a>|, ret
77
+ end
78
+
79
+ def test_inline_href_without_label
80
+ ret = @builder.inline_href("http://github.com")
81
+ assert_equal %Q|<a href="http://github.com" class="link">http://github.com</a>|, ret
82
+ end
83
+
84
+ def test_inline_raw
85
+ ret = @builder.inline_raw("@<tt>{inline}")
86
+ assert_equal %Q|@<tt>{inline}|, ret
87
+ end
88
+
89
+ def test_inline_in_table
90
+ ret = @builder.table(["<b>1</b>\t<i>2</i>", "------------", "<b>3</b>\t<i>4</i>&lt;&gt;&amp;"])
91
+ 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>&lt;&gt;&amp;</td></tr>\n</table>\n</div>\n|, @builder.raw_result
92
+ end
93
+
94
+ def test_inline_br
95
+ ret = @builder.inline_br("")
96
+ assert_equal %Q|<br />|, ret
97
+ end
98
+
99
+ def test_inline_i
100
+ ret = @builder.compile_inline("test @<i>{inline test} test2")
101
+ assert_equal %Q|test <i>inline test</i> test2|, ret
102
+ end
103
+
104
+ def test_inline_i_and_escape
105
+ ret = @builder.compile_inline("test @<i>{inline<&;\\ test} test2")
106
+ assert_equal %Q|test <i>inline&lt;&amp;;\\ test</i> test2|, ret
107
+ end
108
+
109
+ def test_inline_b
110
+ ret = @builder.compile_inline("test @<b>{inline test} test2")
111
+ assert_equal %Q|test <b>inline test</b> test2|, ret
112
+ end
113
+
114
+ def test_inline_b_and_escape
115
+ ret = @builder.compile_inline("test @<b>{inline<&;\\ test} test2")
116
+ assert_equal %Q|test <b>inline&lt;&amp;;\\ test</b> test2|, ret
117
+ end
118
+
119
+ def test_inline_tt
120
+ ret = @builder.compile_inline("test @<tt>{inline test} test2")
121
+ assert_equal %Q|test <tt>inline test</tt> test2|, ret
122
+ end
123
+
124
+ def test_inline_tti
125
+ ret = @builder.compile_inline("test @<tti>{inline test} test2")
126
+ assert_equal %Q|test <tt><i>inline test</i></tt> test2|, ret
127
+ end
128
+
129
+ def test_inline_ttb
130
+ ret = @builder.compile_inline("test @<ttb>{inline test} test2")
131
+ assert_equal %Q|test <tt><b>inline test</b></tt> test2|, ret
132
+ end
133
+
134
+ def test_inline_hd_chap
135
+ def @chapter.headline_index
136
+ items = [Book::HeadlineIndex::Item.new("chap1|test", [1, 1], "te_st")]
137
+ Book::HeadlineIndex.new(items, self)
138
+ end
139
+
140
+ @param["secnolevel"] = 2
141
+ ret = @builder.compile_inline("test @<hd>{chap1|test} test2")
142
+ assert_equal %Q|test 「te_st」 test2|, ret
143
+
144
+ @param["secnolevel"] = 3
145
+ ret = @builder.compile_inline("test @<hd>{chap1|test} test2")
146
+ assert_equal %Q|test 「1.1.1 te_st」 test2|, ret
147
+ end
148
+
149
+ def test_inline_uchar
150
+ ret = @builder.compile_inline("test @<uchar>{2460} test2")
151
+ assert_equal %Q|test &#x2460; test2|, ret
152
+ end
153
+
154
+ def test_inline_ruby
155
+ ret = @builder.compile_inline("@<ruby>{粗雑,クルード}と思われているなら@<ruby>{繊細,テクニカル}にやり、繊細と思われているなら粗雑にやる。")
156
+ assert_equal "<ruby><rb>粗雑</rb><rp>(</rp><rt>クルード</rt><rp>)</rp></ruby>と思われているなら<ruby><rb>繊細</rb><rp>(</rp><rt>テクニカル</rt><rp>)</rp></ruby>にやり、繊細と思われているなら粗雑にやる。", ret
157
+ end
158
+
159
+ def test_inline_ref
160
+ ret = @builder.compile_inline("@<ref>{外部参照<>&}")
161
+ assert_equal %Q|<a target='外部参照&lt;&gt;&amp;'>「●● 外部参照&lt;&gt;&amp;」</a>|, ret
162
+ end
163
+
164
+ def test_quote
165
+ lines = ["foo", "bar", "","buz"]
166
+ @builder.quote(lines)
167
+ assert_equal %Q|<blockquote><p>foobar</p>\n<p>buz</p></blockquote>\n|, @builder.raw_result
168
+ end
169
+
170
+ def test_memo
171
+ @builder.memo(["test1", "", "test<i>2</i>"], "this is @<b>{test}<&>_")
172
+ assert_equal %Q|<div class="memo">\n<p class="caption">this is <b>test</b>&lt;&amp;&gt;_</p>\n<p>test1</p>\n<p>test<i>2</i></p>\n</div>\n|, @builder.raw_result
173
+ end
174
+
175
+ def test_noindent
176
+ @builder.noindent
177
+ @builder.paragraph(["foo", "bar"])
178
+ @builder.paragraph(["foo2", "bar2"])
179
+ assert_equal %Q|<p class="noindent">foobar</p>\n<p>foo2bar2</p>\n|, @builder.raw_result
180
+ end
181
+
182
+ def test_flushright
183
+ @builder.flushright(["foo", "bar", "", "buz"])
184
+ assert_equal %Q|<p class="flushright">foobar</p>\n<p class="flushright">buz</p>\n|, @builder.raw_result
185
+ end
186
+
187
+ def test_centering
188
+ @builder.centering(["foo", "bar", "", "buz"])
189
+ assert_equal %Q|<p class="center">foobar</p>\n<p class="center">buz</p>\n|, @builder.raw_result
190
+ end
191
+
192
+ def test_image
193
+ def @chapter.image(id)
194
+ item = Book::ImageIndex::Item.new("sampleimg",1)
195
+ item.instance_eval{@pathes=["./images/chap1-sampleimg.png"]}
196
+ item
197
+ end
198
+
199
+ @builder.image_image("sampleimg","sample photo",nil)
200
+ 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
201
+ end
202
+
203
+ def test_image_with_metric
204
+ def @chapter.image(id)
205
+ item = Book::ImageIndex::Item.new("sampleimg",1)
206
+ item.instance_eval{@pathes=["./images/chap1-sampleimg.png"]}
207
+ item
208
+ end
209
+
210
+ @builder.image_image("sampleimg","sample photo","scale=1.2")
211
+ assert_equal %Q|<div class="image">\n<img src="images/chap1-sampleimg.png" alt="sample photo" width="120%" />\n<p class="caption">\n図1.1: sample photo\n</p>\n</div>\n|, @builder.raw_result
212
+ end
213
+
214
+ def test_image_with_metric2
215
+ def @chapter.image(id)
216
+ item = Book::ImageIndex::Item.new("sampleimg",1)
217
+ item.instance_eval{@pathes=["./images/chap1-sampleimg.png"]}
218
+ item
219
+ end
220
+ @builder.image_image("sampleimg","sample photo","scale=1.2,html::class=sample,latex::ignore=params")
221
+ assert_equal %Q|<div class="image">\n<img src="images/chap1-sampleimg.png" alt="sample photo" width="120%" class="sample" />\n<p class="caption">\n図1.1: sample photo\n</p>\n</div>\n|, @builder.raw_result
222
+ end
223
+
224
+ def test_indepimage
225
+ def @chapter.image(id)
226
+ item = Book::ImageIndex::Item.new("sampleimg",1)
227
+ item.instance_eval{@pathes=["./images/chap1-sampleimg.png"]}
228
+ item
229
+ end
230
+
231
+ @builder.indepimage("sampleimg","sample photo",nil)
232
+ 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
233
+ end
234
+
235
+ def test_indepimage_without_caption
236
+ def @chapter.image(id)
237
+ item = Book::ImageIndex::Item.new("sampleimg",1)
238
+ item.instance_eval{@pathes=["./images/chap1-sampleimg.png"]}
239
+ item
240
+ end
241
+
242
+ @builder.indepimage("sampleimg",nil,nil)
243
+ assert_equal %Q|<div class="image">\n<img src="images/chap1-sampleimg.png" alt="" />\n</div>\n|, @builder.raw_result
244
+ end
245
+
246
+ def test_indepimage_with_metric
247
+ def @chapter.image(id)
248
+ item = Book::ImageIndex::Item.new("sampleimg",1)
249
+ item.instance_eval{@pathes=["./images/chap1-sampleimg.png"]}
250
+ item
251
+ end
252
+
253
+ @builder.indepimage("sampleimg","sample photo","scale=1.2")
254
+ assert_equal %Q|<div class="image">\n<img src="images/chap1-sampleimg.png" alt="sample photo" width="120%" />\n<p class="caption">\n図: sample photo\n</p>\n</div>\n|, @builder.raw_result
255
+ end
256
+
257
+ def test_indepimage_with_metric2
258
+ def @chapter.image(id)
259
+ item = Book::ImageIndex::Item.new("sampleimg",1)
260
+ item.instance_eval{@pathes=["./images/chap1-sampleimg.png"]}
261
+ item
262
+ end
263
+
264
+ @builder.indepimage("sampleimg","sample photo","scale=1.2, html::class=\"sample\",latex::ignore=params")
265
+ assert_equal %Q|<div class="image">\n<img src="images/chap1-sampleimg.png" alt="sample photo" width="120%" class="sample" />\n<p class="caption">\n図: sample photo\n</p>\n</div>\n|, @builder.raw_result
266
+ end
267
+
268
+ def test_indepimage_without_caption_but_with_metric
269
+ def @chapter.image(id)
270
+ item = Book::ImageIndex::Item.new("sampleimg",1)
271
+ item.instance_eval{@pathes=["./images/chap1-sampleimg.png"]}
272
+ item
273
+ end
274
+
275
+ @builder.indepimage("sampleimg",nil,"scale=1.2")
276
+ assert_equal %Q|<div class="image">\n<img src="images/chap1-sampleimg.png" alt="" width="120%" />\n</div>\n|, @builder.raw_result
277
+ end
278
+
279
+ def test_emlist
280
+ @builder.emlist(["lineA","lineB"])
281
+ assert_equal %Q|<div class="emlist-code">\n<pre class="emlist">lineA\nlineB\n</pre>\n</div>\n|, @builder.raw_result
282
+ end
283
+
284
+ def test_emlist_caption
285
+ @builder.emlist(["lineA","lineB"],"cap1")
286
+ assert_equal %Q|<div class="emlist-code">\n<p class="caption">cap1</p>\n<pre class="emlist">lineA\nlineB\n</pre>\n</div>\n|, @builder.raw_result
287
+ end
288
+
289
+ def test_emlist_with_tab
290
+ @builder.emlist(["\tlineA","\t\tlineB","\tlineC"])
291
+ assert_equal %Q|<div class="emlist-code">\n<pre class="emlist"> lineA\n lineB\n lineC\n</pre>\n</div>\n|, @builder.raw_result
292
+ end
293
+
294
+ def test_emlist_with_4tab
295
+ @builder.instance_eval{@tabwidth=4}
296
+ @builder.emlist(["\tlineA","\t\tlineB","\tlineC"])
297
+ assert_equal %Q|<div class="emlist-code">\n<pre class="emlist"> lineA\n lineB\n lineC\n</pre>\n</div>\n|, @builder.raw_result
298
+ end
299
+
300
+ def test_cmd
301
+ @builder.cmd(["lineA","lineB"])
302
+ assert_equal %Q|<div class="cmd-code">\n<pre class="cmd">lineA\nlineB\n</pre>\n</div>\n|, @builder.raw_result
303
+ end
304
+
305
+ def test_cmd_caption
306
+ @builder.cmd(["lineA","lineB"], "cap1")
307
+ assert_equal %Q|<div class="cmd-code">\n<p class="caption">cap1</p>\n<pre class="cmd">lineA\nlineB\n</pre>\n</div>\n|, @builder.raw_result
308
+ end
309
+
310
+ def test_bib
311
+ def @chapter.bibpaper(id)
312
+ Book::BibpaperIndex::Item.new("samplebib",1,"sample bib")
313
+ end
314
+
315
+ assert_equal %Q|<a href="./bib.html#bib-samplebib">[1]</a>|, @builder.inline_bib("samplebib")
316
+ end
317
+
318
+ def test_bibpaper
319
+ def @chapter.bibpaper(id)
320
+ Book::BibpaperIndex::Item.new("samplebib",1,"sample bib")
321
+ end
322
+
323
+ @builder.bibpaper(["a", "b"], "samplebib", "sample bib @<b>{bold}")
324
+ assert_equal %Q|<div class=\"bibpaper\">\n<a id=\"bib-samplebib\">[1] sample bib <b>bold</b></a>\n<p>a\nb\n</p>\n</div>\n|, @builder.raw_result
325
+ end
326
+
327
+ def column_helper(review)
328
+ chap_singleton = class << @chapter; self; end
329
+ chap_singleton.send(:define_method, :content) { review }
330
+ @compiler.compile(@chapter).match(/<body>\n(.+)<\/body>/m)[1]
331
+ end
332
+
333
+ def test_column_1
334
+ review =<<-EOS
335
+ ===[column] prev column
336
+
337
+ inside prev column
338
+
339
+ ===[column] test
340
+
341
+ inside column
342
+
343
+ ===[/column]
344
+ EOS
345
+ expect =<<-EOS
346
+ <div class="column">
347
+
348
+ <h3><a id="h1-0-1"></a>prev column</h3>
349
+ <p>inside prev column</p>
350
+ </div>
351
+ <div class="column">
352
+
353
+ <h3><a id="h1-0-2"></a>test</h3>
354
+ <p>inside column</p>
355
+ </div>
356
+ EOS
357
+ assert_equal expect, column_helper(review)
358
+ end
359
+
360
+ def test_column_2
361
+ review =<<-EOS
362
+ ===[column] test
363
+
364
+ inside column
365
+
366
+ === next level
367
+ EOS
368
+ expect =<<-EOS
369
+ <div class="column">
370
+
371
+ <h3><a id="h1-0-1"></a>test</h3>
372
+ <p>inside column</p>
373
+ </div>
374
+
375
+ <h3><a id="h1-0-2"></a>next level</h3>
376
+ EOS
377
+
378
+ assert_equal expect, column_helper(review)
379
+ end
380
+
381
+ def test_column_3
382
+ review =<<-EOS
383
+ ===[column] test
384
+
385
+ inside column
386
+
387
+ ===[/column_dummy]
388
+ EOS
389
+ assert_raise(ReVIEW::CompileError) do
390
+ column_helper(review)
391
+ end
392
+ end
393
+
394
+ def test_ul
395
+ src =<<-EOS
396
+ * AAA
397
+ * BBB
398
+ EOS
399
+ expect = "<ul>\n<li>AAA</li>\n<li>BBB</li>\n</ul>\n"
400
+ ul_helper(src, expect)
401
+ end
402
+
403
+ def test_ul_cont
404
+ src =<<-EOS
405
+ * AAA
406
+ -AA
407
+ * BBB
408
+ -BB
409
+ EOS
410
+ expect = "<ul>\n<li>AAA-AA</li>\n<li>BBB-BB</li>\n</ul>\n"
411
+ ul_helper(src, expect)
412
+ end
413
+
414
+ def test_ul_nest1
415
+ src =<<-EOS
416
+ * AAA
417
+ ** AA
418
+ EOS
419
+
420
+ expect =<<-EOS
421
+ <ul>
422
+ <li>AAA<ul>
423
+ <li>AA</li>
424
+ </ul>
425
+ </li>
426
+ </ul>
427
+ EOS
428
+ ul_helper(src, expect)
429
+ end
430
+
431
+ def test_ul_nest2
432
+ src =<<-EOS
433
+ * AAA
434
+ ** AA
435
+ * BBB
436
+ ** BB
437
+ EOS
438
+
439
+ expect =<<-EOS
440
+ <ul>
441
+ <li>AAA<ul>
442
+ <li>AA</li>
443
+ </ul>
444
+ </li>
445
+ <li>BBB<ul>
446
+ <li>BB</li>
447
+ </ul>
448
+ </li>
449
+ </ul>
450
+ EOS
451
+ ul_helper(src, expect)
452
+ end
453
+
454
+ def test_ul_nest3
455
+ src =<<-EOS
456
+ ** AAA
457
+ * AA
458
+ * BBB
459
+ ** BB
460
+ EOS
461
+
462
+ expect =<<-EOS
463
+ <ul>
464
+ <li><ul>
465
+ <li>AAA</li>
466
+ </ul>
467
+ </li>
468
+ <li>AA</li>
469
+ <li>BBB<ul>
470
+ <li>BB</li>
471
+ </ul>
472
+ </li>
473
+ </ul>
474
+ EOS
475
+ ul_helper(src, expect)
476
+ end
477
+
478
+ def test_inline_raw0
479
+ assert_equal "normal", @builder.inline_raw("normal")
480
+ end
481
+
482
+ def test_inline_raw1
483
+ assert_equal "body", @builder.inline_raw("|html|body")
484
+ end
485
+
486
+ def test_inline_raw2
487
+ assert_equal "body", @builder.inline_raw("|html, latex|body")
488
+ end
489
+
490
+ def test_inline_raw3
491
+ assert_equal "", @builder.inline_raw("|idgxml, latex|body")
492
+ end
493
+
494
+ def test_inline_raw4
495
+ assert_equal "|html body", @builder.inline_raw("|html body")
496
+ end
497
+
498
+ def test_inline_raw5
499
+ assert_equal "nor\nmal", @builder.inline_raw("|html|nor\\nmal")
500
+ end
501
+
502
+ def test_block_raw0
503
+ @builder.raw("<>!\"\\n& ")
504
+ expect =<<-EOS
505
+ <>!"
506
+ &
507
+ EOS
508
+ assert_equal expect.chomp, @builder.raw_result
509
+ end
510
+
511
+ def test_block_raw1
512
+ @builder.raw("|html|<>!\"\\n& ")
513
+ expect =<<-EOS
514
+ <>!"
515
+ &
516
+ EOS
517
+ assert_equal expect.chomp, @builder.raw_result
518
+ end
519
+
520
+ def test_block_raw2
521
+ @builder.raw("|html, latex|<>!\"\\n& ")
522
+ expect =<<-EOS
523
+ <>!\"
524
+ &
525
+ EOS
526
+ assert_equal expect.chomp, @builder.raw_result
527
+ end
528
+
529
+ def test_block_raw3
530
+ @builder.raw("|latex, idgxml|<>!\"\\n& ")
531
+ expect =<<-EOS
532
+ EOS
533
+ assert_equal expect.chomp, @builder.raw_result
534
+ end
535
+
536
+ def test_block_raw4
537
+ @builder.raw("|html <>!\"\\n& ")
538
+ expect =<<-EOS
539
+ |html <>!\"
540
+ &
541
+ EOS
542
+ assert_equal expect.chomp, @builder.raw_result
543
+ end
544
+
545
+ def test_inline_fn
546
+ fn = Book::FootnoteIndex.parse(['//footnote[foo][bar\\a\\$buz]'])
547
+ @chapter.instance_eval{@footnote_index=fn}
548
+ @builder.footnote("foo",'bar\\a\\$buz')
549
+ expect =<<-'EOS'
550
+ <div class="footnote"><p class="footnote">[<a id="fn-foo">*1</a>] bar\a\$buz</p></div>
551
+ EOS
552
+ assert_equal expect, @builder.raw_result
553
+ end
554
+ end