review 0.9.0 → 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 (49) hide show
  1. data/.travis.yml +9 -0
  2. data/ChangeLog +326 -0
  3. data/Rakefile +3 -5
  4. data/VERSION +1 -1
  5. data/bin/review-compile +50 -50
  6. data/bin/review-epubmaker +62 -75
  7. data/bin/review-epubmaker-ng +185 -0
  8. data/bin/review-index +2 -1
  9. data/bin/review-pdfmaker +158 -101
  10. data/bin/review-vol +6 -2
  11. data/doc/format.rdoc +111 -46
  12. data/doc/libepubmaker/sample.yaml +90 -0
  13. data/doc/quickstart.rdoc +188 -0
  14. data/doc/sample.yaml +8 -0
  15. data/lib/epubmaker.rb +28 -0
  16. data/lib/epubmaker/content.rb +82 -0
  17. data/lib/epubmaker/epubv2.rb +419 -0
  18. data/lib/epubmaker/epubv3.rb +249 -0
  19. data/lib/epubmaker/producer.rb +204 -0
  20. data/lib/epubmaker/resource.rb +66 -0
  21. data/lib/review.rb +1 -1
  22. data/lib/review/book.rb +27 -4
  23. data/lib/review/builder.rb +153 -20
  24. data/lib/review/compiler.rb +61 -10
  25. data/lib/review/ewbbuilder.rb +3 -2
  26. data/lib/review/htmlbuilder.rb +174 -67
  27. data/lib/review/i18n.rb +30 -0
  28. data/lib/review/i18n.yaml +23 -0
  29. data/lib/review/idgxmlbuilder.rb +110 -63
  30. data/lib/review/index.rb +34 -12
  31. data/lib/review/latexbuilder.rb +128 -33
  32. data/lib/review/latexutils.rb +18 -1
  33. data/lib/review/textbuilder.rb +17 -0
  34. data/lib/review/tocparser.rb +3 -1
  35. data/lib/review/tocprinter.rb +1 -0
  36. data/lib/review/topbuilder.rb +397 -198
  37. data/review.gemspec +101 -100
  38. data/test/test_book.rb +27 -0
  39. data/test/test_epubmaker.rb +507 -0
  40. data/test/test_helper.rb +8 -0
  41. data/test/test_htmlbuilder.rb +295 -10
  42. data/test/test_i18n.rb +64 -0
  43. data/test/test_idgxmlbuilder.rb +268 -10
  44. data/test/test_latexbuilder.rb +316 -20
  45. data/test/test_preprocessor.rb +23 -0
  46. data/test/test_topbuilder.rb +246 -0
  47. metadata +46 -53
  48. data/doc/format.re +0 -505
  49. data/test/test_index.rb +0 -15
data/test/test_helper.rb CHANGED
@@ -1,2 +1,10 @@
1
1
  $LOAD_PATH.unshift(File.dirname(__FILE__) + '/../lib/')
2
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
+
@@ -71,9 +71,19 @@ class HTMLBuidlerTest < Test::Unit::TestCase
71
71
  assert_equal %Q|<a href="http://github.com" class="link">http://github.com</a>|, ret
72
72
  end
73
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
+
74
84
  def test_inline_raw
75
85
  ret = @builder.inline_raw("@<tt>{inline}")
76
- assert_equal %Q|@&lt;tt&gt;{inline}|, ret
86
+ assert_equal %Q|@<tt>{inline}|, ret
77
87
  end
78
88
 
79
89
  def test_inline_in_table
@@ -126,6 +136,11 @@ class HTMLBuidlerTest < Test::Unit::TestCase
126
136
  assert_equal %Q|test &#x2460; test2|, ret
127
137
  end
128
138
 
139
+ def test_inline_ruby
140
+ ret = @builder.compile_inline("@<ruby>{粗雑,クルード}と思われているなら@<ruby>{繊細,テクニカル}にやり、繊細と思われているなら粗雑にやる。")
141
+ assert_equal "<ruby><rb>粗雑</rb><rp>(</rp><rt>クルード</rt><rp>)</rp></ruby>と思われているなら<ruby><rb>繊細</rb><rp>(</rp><rt>テクニカル</rt><rp>)</rp></ruby>にやり、繊細と思われているなら粗雑にやる。", ret
142
+ end
143
+
129
144
  def test_quote
130
145
  lines = ["foo", "bar", "","buz"]
131
146
  @builder.quote(lines)
@@ -149,11 +164,6 @@ class HTMLBuidlerTest < Test::Unit::TestCase
149
164
  assert_equal %Q|<p class="flushright">foobar</p>\n<p class="flushright">buz</p>\n|, @builder.raw_result
150
165
  end
151
166
 
152
- def test_raw
153
- @builder.raw("<&>\\n")
154
- assert_equal %Q|<&>\n|, @builder.raw_result
155
- end
156
-
157
167
  def test_image
158
168
  def @chapter.image(id)
159
169
  item = ImageIndex::Item.new("sampleimg",1)
@@ -173,7 +183,17 @@ class HTMLBuidlerTest < Test::Unit::TestCase
173
183
  end
174
184
 
175
185
  @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
186
+ 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
187
+ end
188
+
189
+ def test_image_with_metric2
190
+ def @chapter.image(id)
191
+ item = ImageIndex::Item.new("sampleimg",1)
192
+ item.instance_eval{@pathes=["./images/chap1-sampleimg.png"]}
193
+ item
194
+ end
195
+ @builder.image_image("sampleimg","sample photo","scale=1.2,html::class=sample,latex::ignore=params")
196
+ 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
177
197
  end
178
198
 
179
199
  def test_indepimage
@@ -195,7 +215,7 @@ class HTMLBuidlerTest < Test::Unit::TestCase
195
215
  end
196
216
 
197
217
  @builder.indepimage("sampleimg",nil,nil)
198
- assert_equal %Q|<div class="image">\n<img src="images/chap1-sampleimg.png" alt="" />\n|, @builder.raw_result
218
+ assert_equal %Q|<div class="image">\n<img src="images/chap1-sampleimg.png" alt="" />\n</div>\n|, @builder.raw_result
199
219
  end
200
220
 
201
221
  def test_indepimage_with_metric
@@ -206,7 +226,18 @@ class HTMLBuidlerTest < Test::Unit::TestCase
206
226
  end
207
227
 
208
228
  @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
229
+ 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
230
+ end
231
+
232
+ def test_indepimage_with_metric2
233
+ def @chapter.image(id)
234
+ item = ImageIndex::Item.new("sampleimg",1)
235
+ item.instance_eval{@pathes=["./images/chap1-sampleimg.png"]}
236
+ item
237
+ end
238
+
239
+ @builder.indepimage("sampleimg","sample photo","scale=1.2, html::class=\"sample\",latex::ignore=params")
240
+ 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
210
241
  end
211
242
 
212
243
  def test_indepimage_without_caption_but_with_metric
@@ -217,7 +248,261 @@ class HTMLBuidlerTest < Test::Unit::TestCase
217
248
  end
218
249
 
219
250
  @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
251
+ assert_equal %Q|<div class="image">\n<img src="images/chap1-sampleimg.png" alt="" width="120%" />\n</div>\n|, @builder.raw_result
252
+ end
253
+
254
+ def test_emlist
255
+ @builder.emlist(["lineA","lineB"])
256
+ assert_equal %Q|<div class="emlist-code">\n<pre class="emlist">lineA\nlineB\n</pre>\n</div>\n|, @builder.raw_result
257
+ end
258
+
259
+ def test_emlist_caption
260
+ @builder.emlist(["lineA","lineB"],"cap1")
261
+ 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
262
+ end
263
+
264
+ def test_cmd
265
+ @builder.cmd(["lineA","lineB"])
266
+ assert_equal %Q|<div class="cmd-code">\n<pre class="cmd">lineA\nlineB\n</pre>\n</div>\n|, @builder.raw_result
221
267
  end
222
268
 
269
+ def test_cmd_caption
270
+ @builder.cmd(["lineA","lineB"], "cap1")
271
+ 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
272
+ end
273
+
274
+ def test_bib
275
+ def @chapter.bibpaper(id)
276
+ BibpaperIndex::Item.new("samplebib",1,"sample bib")
277
+ end
278
+
279
+ assert_equal %Q|<a href="./bib.html#bib-samplebib">[1]</a>|, @builder.inline_bib("samplebib")
280
+ end
281
+
282
+ def test_bibpaper
283
+ def @chapter.bibpaper(id)
284
+ BibpaperIndex::Item.new("samplebib",1,"sample bib")
285
+ end
286
+
287
+ @builder.bibpaper(["a", "b"], "samplebib", "sample bib @<b>{bold}")
288
+ assert_equal %Q|<div>\n<a id=\"bib-samplebib\">\n[1] sample bib <b>bold</b>\n</a>\n<p>\na\nb\n</p>\n</div>\n|, @builder.raw_result
289
+ end
290
+
291
+ def column_helper(review)
292
+ chap_singleton = class << @chapter; self; end
293
+ chap_singleton.send(:define_method, :content) { review }
294
+ @compiler.compile(@chapter).match(/<body>\n(.+)<\/body>/m)[1]
295
+ end
296
+
297
+ def test_column_1
298
+ review =<<-EOS
299
+ ===[column] prev column
300
+
301
+ inside prev column
302
+
303
+ ===[column] test
304
+
305
+ inside column
306
+
307
+ ===[/column]
308
+ EOS
309
+ expect =<<-EOS
310
+ <div class="column">
311
+
312
+ <h3><a id="h1-0-1" />prev column</h3>
313
+ <p>inside prev column</p>
314
+ </div>
315
+ <div class="column">
316
+
317
+ <h3><a id="h1-0-2" />test</h3>
318
+ <p>inside column</p>
319
+ </div>
320
+ EOS
321
+ assert_equal expect, column_helper(review)
322
+ end
323
+
324
+ def test_column_2
325
+ review =<<-EOS
326
+ ===[column] test
327
+
328
+ inside column
329
+
330
+ === next level
331
+ EOS
332
+ expect =<<-EOS
333
+ <div class="column">
334
+
335
+ <h3><a id="h1-0-1" />test</h3>
336
+ <p>inside column</p>
337
+ </div>
338
+
339
+ <h3><a id="h1-0-2" />next level</h3>
340
+ EOS
341
+
342
+ assert_equal expect, column_helper(review)
343
+ end
344
+
345
+ def test_column_3
346
+ review =<<-EOS
347
+ ===[column] test
348
+
349
+ inside column
350
+
351
+ ===[/column_dummy]
352
+ EOS
353
+ assert_raise(ReVIEW::CompileError) do
354
+ column_helper(review)
355
+ end
356
+ end
357
+
358
+ def test_ul
359
+ src =<<-EOS
360
+ * AAA
361
+ * BBB
362
+ EOS
363
+ expect = "<ul>\n<li>AAA</li>\n<li>BBB</li>\n</ul>\n"
364
+ ul_helper(src, expect)
365
+ end
366
+
367
+ def test_ul_cont
368
+ src =<<-EOS
369
+ * AAA
370
+ -AA
371
+ * BBB
372
+ -BB
373
+ EOS
374
+ expect = "<ul>\n<li>AAA-AA</li>\n<li>BBB-BB</li>\n</ul>\n"
375
+ ul_helper(src, expect)
376
+ end
377
+
378
+ def test_ul_nest1
379
+ src =<<-EOS
380
+ * AAA
381
+ ** AA
382
+ EOS
383
+
384
+ expect =<<-EOS
385
+ <ul>
386
+ <li>AAA<ul>
387
+ <li>AA</li>
388
+ </ul>
389
+ </li>
390
+ </ul>
391
+ EOS
392
+ ul_helper(src, expect)
393
+ end
394
+
395
+ def test_ul_nest2
396
+ src =<<-EOS
397
+ * AAA
398
+ ** AA
399
+ * BBB
400
+ ** BB
401
+ EOS
402
+
403
+ expect =<<-EOS
404
+ <ul>
405
+ <li>AAA<ul>
406
+ <li>AA</li>
407
+ </ul>
408
+ </li>
409
+ <li>BBB<ul>
410
+ <li>BB</li>
411
+ </ul>
412
+ </li>
413
+ </ul>
414
+ EOS
415
+ ul_helper(src, expect)
416
+ end
417
+
418
+ def test_ul_nest3
419
+ src =<<-EOS
420
+ ** AAA
421
+ * AA
422
+ * BBB
423
+ ** BB
424
+ EOS
425
+
426
+ expect =<<-EOS
427
+ <ul>
428
+ <li><ul>
429
+ <li>AAA</li>
430
+ </ul>
431
+ </li>
432
+ <li>AA</li>
433
+ <li>BBB<ul>
434
+ <li>BB</li>
435
+ </ul>
436
+ </li>
437
+ </ul>
438
+ EOS
439
+ ul_helper(src, expect)
440
+ end
441
+
442
+ def test_inline_raw0
443
+ assert_equal "normal", @builder.inline_raw("normal")
444
+ end
445
+
446
+ def test_inline_raw1
447
+ assert_equal "body", @builder.inline_raw("|html|body")
448
+ end
449
+
450
+ def test_inline_raw2
451
+ assert_equal "body", @builder.inline_raw("|html, latex|body")
452
+ end
453
+
454
+ def test_inline_raw3
455
+ assert_equal "", @builder.inline_raw("|idgxml, latex|body")
456
+ end
457
+
458
+ def test_inline_raw4
459
+ assert_equal "|html body", @builder.inline_raw("|html body")
460
+ end
461
+
462
+ def test_inline_raw5
463
+ assert_equal "nor\nmal", @builder.inline_raw("|html|nor\\nmal")
464
+ end
465
+
466
+ def test_block_raw0
467
+ @builder.raw("<>!\"\\n& ")
468
+ expect =<<-EOS
469
+ <>!"
470
+ &
471
+ EOS
472
+ assert_equal expect.chomp, @builder.raw_result
473
+ end
474
+
475
+ def test_block_raw1
476
+ @builder.raw("|html|<>!\"\\n& ")
477
+ expect =<<-EOS
478
+ <>!"
479
+ &
480
+ EOS
481
+ assert_equal expect.chomp, @builder.raw_result
482
+ end
483
+
484
+ def test_block_raw2
485
+ @builder.raw("|html, latex|<>!\"\\n& ")
486
+ expect =<<-EOS
487
+ <>!\"
488
+ &
489
+ EOS
490
+ assert_equal expect.chomp, @builder.raw_result
491
+ end
492
+
493
+ def test_block_raw3
494
+ @builder.raw("|latex, idgxml|<>!\"\\n& ")
495
+ expect =<<-EOS
496
+ EOS
497
+ assert_equal expect.chomp, @builder.raw_result
498
+ end
499
+
500
+ def test_block_raw4
501
+ @builder.raw("|html <>!\"\\n& ")
502
+ expect =<<-EOS
503
+ |html <>!\"
504
+ &
505
+ EOS
506
+ assert_equal expect.chomp, @builder.raw_result
507
+ end
223
508
  end
data/test/test_i18n.rb ADDED
@@ -0,0 +1,64 @@
1
+ # -*- coding: utf-8 -*-
2
+ require 'test_helper'
3
+ require 'review/i18n'
4
+
5
+ class I18nTest < Test::Unit::TestCase
6
+ include ReVIEW
7
+
8
+ def test_ja
9
+ I18n.i18n "ja"
10
+ assert_equal I18n.t("image"), "図"
11
+ assert_equal I18n.t("table"), "表"
12
+ assert_equal I18n.t("chapter", 1), "第1章"
13
+ assert_equal I18n.t("etc"), "etc"
14
+ end
15
+
16
+ def test_ja_with_user_i18n
17
+ I18n.i18n "ja", {"image" => "ず"}
18
+ assert_equal I18n.t("image"), "ず"
19
+ assert_equal I18n.t("table"), "表"
20
+ assert_equal I18n.t("chapter", 1), "第1章"
21
+ assert_equal I18n.t("etc"), "etc"
22
+ end
23
+
24
+ def test_en
25
+ I18n.i18n "en"
26
+ assert_equal I18n.t("image"), "Figure "
27
+ assert_equal I18n.t("table"), "Table "
28
+ assert_equal I18n.t("chapter", 1), "Chapter 1"
29
+ assert_equal I18n.t("etc"), "etc"
30
+ end
31
+
32
+ def test_nil
33
+ I18n.i18n "nil"
34
+ assert_equal I18n.t("image"), "image"
35
+ assert_equal I18n.t("table"), "table"
36
+ assert_equal I18n.t("etc"), "etc"
37
+ end
38
+
39
+ def test_htmlbuilder
40
+ _setup_htmlbuilder
41
+ @builder.headline(1,"test","this is test.")
42
+ assert_equal %Q|<h1 id="test"><a id="h1" />Chapter 1. this is test.</h1>\n|, @builder.raw_result
43
+ end
44
+
45
+ def _setup_htmlbuilder
46
+ I18n.i18n "en"
47
+ @builder = HTMLBuilder.new()
48
+ @param = {
49
+ "secnolevel" => 2, # for IDGXMLBuilder, HTMLBuilder
50
+ "inencoding" => "UTF-8",
51
+ "outencoding" => "UTF-8",
52
+ "stylesheet" => nil, # for HTMLBuilder
53
+ }
54
+ ReVIEW.book.param = @param
55
+ @compiler = ReVIEW::Compiler.new(@builder)
56
+ @chapter = Chapter.new(nil, 1, '-', nil, StringIO.new)
57
+ location = Location.new(nil, nil)
58
+ @builder.bind(@compiler, @chapter, location)
59
+ end
60
+
61
+ def teardown
62
+ I18n.i18n "ja"
63
+ end
64
+ end
@@ -68,6 +68,11 @@ class IDGXMLBuidlerTest < Test::Unit::TestCase
68
68
  assert_equal %Q|<a linkurl='http://github.com'>http://github.com</a>|, ret
69
69
  end
70
70
 
71
+ def test_inline_href
72
+ ret = @builder.inline_href("http://github.com, Git\\,Hub")
73
+ assert_equal %Q|<a linkurl='http://github.com'>Git,Hub</a>|, ret
74
+ end
75
+
71
76
  def test_inline_raw
72
77
  ret = @builder.inline_raw("@<tt>{inline}")
73
78
  assert_equal %Q|@<tt>{inline}|, ret
@@ -75,12 +80,12 @@ class IDGXMLBuidlerTest < Test::Unit::TestCase
75
80
 
76
81
  def test_inline_in_table
77
82
  ret = @builder.table(["<b>1</b>\t<i>2</i>", "------------", "<b>3</b>\t<i>4</i>&lt;&gt;&amp;"])
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>&lt;&gt;&amp;</td></tbody></table>|, @builder.raw_result
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 xyh="1,1,1" aid:table="cell" aid:theader="1" aid:crows="1" aid:ccols="1" aid:ccolwidth="14.2450142450142"><b>1</b></td><td xyh="2,1,1" aid:table="cell" aid:theader="1" aid:crows="1" aid:ccols="1" aid:ccolwidth="14.2450142450142"><i>2</i></td><td xyh="1,2,1" aid:table="cell" aid:crows="1" aid:ccols="1" aid:ccolwidth="14.2450142450142"><b>3</b></td><td xyh="2,2,1" aid:table="cell" aid:crows="1" aid:ccols="1" aid:ccolwidth="14.2450142450142"><i>4</i>&lt;&gt;&amp;</td></tbody></table>|, @builder.raw_result
79
84
  end
80
85
 
81
86
  def test_inline_in_table_without_header
82
87
  ret = @builder.table(["<b>1</b>\t<i>2</i>", "<b>3</b>\t<i>4</i>&lt;&gt;&amp;"])
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>&lt;&gt;&amp;</td></tbody></table>|, @builder.raw_result
88
+ 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 xyh="1,1,0" aid:table="cell" aid:crows="1" aid:ccols="1" aid:ccolwidth="14.2450142450142"><b>1</b></td><td xyh="2,1,0" aid:table="cell" aid:crows="1" aid:ccols="1" aid:ccolwidth="14.2450142450142"><i>2</i></td><td xyh="1,2,0" aid:table="cell" aid:crows="1" aid:ccols="1" aid:ccolwidth="14.2450142450142"><b>3</b></td><td xyh="2,2,0" aid:table="cell" aid:crows="1" aid:ccols="1" aid:ccolwidth="14.2450142450142"><i>4</i>&lt;&gt;&amp;</td></tbody></table>|, @builder.raw_result
84
89
  end
85
90
 
86
91
  def test_inline_in_table_without_cellwidth
@@ -210,6 +215,34 @@ class IDGXMLBuidlerTest < Test::Unit::TestCase
210
215
  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
216
  end
212
217
 
218
+ def test_emlist
219
+ @builder.emlist(["test1", "test1.5", "", "test<i>2</i>"], "this is @<b>{test}<&>_")
220
+ assert_equal %Q|<?xml version="1.0" encoding="UTF-8"?>\n<doc xmlns:aid="http://ns.adobe.com/AdobeInDesign/4.0/"><list type='emlist'><caption aid:pstyle='emlist-title'>this is <b>test</b>&lt;&amp;&gt;_</caption><pre>test1\ntest1.5\n\ntest<i>2</i>\n</pre></list>|, @builder.raw_result
221
+ end
222
+
223
+ def test_emlist_listinfo
224
+ @param["listinfo"] = true
225
+ @builder.emlist(["test1", "test1.5", "", "test<i>2</i>"], "this is @<b>{test}<&>_")
226
+ assert_equal %Q|<?xml version="1.0" encoding="UTF-8"?>\n<doc xmlns:aid="http://ns.adobe.com/AdobeInDesign/4.0/"><list type='emlist'><caption aid:pstyle='emlist-title'>this is <b>test</b>&lt;&amp;&gt;_</caption><pre><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></pre></list>|, @builder.raw_result
227
+ end
228
+
229
+ def test_list
230
+ def @chapter.list(id)
231
+ ListIndex::Item.new("samplelist",1)
232
+ end
233
+ @builder.list(["test1", "test1.5", "", "test<i>2</i>"], "samplelist", "this is @<b>{test}<&>_")
234
+ assert_equal %Q|<?xml version="1.0" encoding="UTF-8"?>\n<doc xmlns:aid="http://ns.adobe.com/AdobeInDesign/4.0/"><codelist><caption>リスト1.1 this is <b>test</b>&lt;&amp;&gt;_</caption><pre>test1\ntest1.5\n\ntest<i>2</i>\n</pre></codelist>|, @builder.raw_result
235
+ end
236
+
237
+ def test_list_listinfo
238
+ def @chapter.list(id)
239
+ ListIndex::Item.new("samplelist",1)
240
+ end
241
+ @param["listinfo"] = true
242
+ @builder.list(["test1", "test1.5", "", "test<i>2</i>"], "samplelist", "this is @<b>{test}<&>_")
243
+ assert_equal %Q|<?xml version="1.0" encoding="UTF-8"?>\n<doc xmlns:aid="http://ns.adobe.com/AdobeInDesign/4.0/"><codelist><caption>リスト1.1 this is <b>test</b>&lt;&amp;&gt;_</caption><pre><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></pre></codelist>|, @builder.raw_result
244
+ end
245
+
213
246
  def test_insn
214
247
  @param["listinfo"] = true
215
248
  @builder.insn(["test1", "test1.5", "", "test<i>2</i>"], "this is @<b>{test}<&>_")
@@ -236,11 +269,6 @@ class IDGXMLBuidlerTest < Test::Unit::TestCase
236
269
  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
270
  end
238
271
 
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
272
  def test_image
245
273
  def @chapter.image(id)
246
274
  item = ImageIndex::Item.new("sampleimg",1)
@@ -249,7 +277,7 @@ class IDGXMLBuidlerTest < Test::Unit::TestCase
249
277
  end
250
278
 
251
279
  @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
280
+ 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
281
  end
254
282
 
255
283
  def test_image_with_metric
@@ -263,6 +291,17 @@ class IDGXMLBuidlerTest < Test::Unit::TestCase
263
291
  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
292
  end
265
293
 
294
+ def test_image_with_metric2
295
+ def @chapter.image(id)
296
+ item = ImageIndex::Item.new("sampleimg",1)
297
+ item.instance_eval{@pathes=["./images/chap1-sampleimg.png"]}
298
+ item
299
+ end
300
+
301
+ @builder.image_image("sampleimg","sample photo","scale=1.2, html::class=\"sample\", latex::ignore=params, idgxml::ostyle=object")
302
+ 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" ostyle="object" /><caption>図1.1 sample photo</caption></img>|, @builder.raw_result
303
+ end
304
+
266
305
  def test_indepimage
267
306
  def @chapter.image(id)
268
307
  item = ImageIndex::Item.new("sampleimg",1)
@@ -271,7 +310,7 @@ class IDGXMLBuidlerTest < Test::Unit::TestCase
271
310
  end
272
311
 
273
312
  @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
313
+ 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
314
  end
276
315
 
277
316
  def test_indepimage_without_caption
@@ -282,7 +321,7 @@ class IDGXMLBuidlerTest < Test::Unit::TestCase
282
321
  end
283
322
 
284
323
  @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
324
+ 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
325
  end
287
326
 
288
327
  def test_indepimage_with_metric
@@ -296,6 +335,17 @@ class IDGXMLBuidlerTest < Test::Unit::TestCase
296
335
  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
336
  end
298
337
 
338
+ def test_indepimage_with_metric2
339
+ def @chapter.image(id)
340
+ item = ImageIndex::Item.new("sampleimg",1)
341
+ item.instance_eval{@pathes=["./images/chap1-sampleimg.png"]}
342
+ item
343
+ end
344
+
345
+ @builder.indepimage("sampleimg","sample photo","scale=1.2, html::class=\"sample\", latex::ignore=params, idgxml::ostyle=\"object\"")
346
+ 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" ostyle="object" /><caption>sample photo</caption></img>|, @builder.raw_result
347
+ end
348
+
299
349
  def test_indepimage_without_caption_but_with_metric
300
350
  def @chapter.image(id)
301
351
  item = ImageIndex::Item.new("sampleimg",1)
@@ -307,4 +357,212 @@ class IDGXMLBuidlerTest < Test::Unit::TestCase
307
357
  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
358
  end
309
359
 
360
+ def column_helper(review)
361
+ chap_singleton = class << @chapter; self; end
362
+ chap_singleton.send(:define_method, :content) { review }
363
+ @compiler.compile(@chapter)
364
+ end
365
+
366
+ def test_column_1
367
+ review =<<-EOS
368
+ ===[column] prev column
369
+
370
+ inside prev column
371
+
372
+ ===[column] test
373
+
374
+ inside column
375
+
376
+ ===[/column]
377
+ EOS
378
+ expect =<<-EOS
379
+ <?xml version="1.0" encoding="UTF-8"?>
380
+ <doc xmlns:aid="http://ns.adobe.com/AdobeInDesign/4.0/"><column><title aid:pstyle="column-title">prev column</title><p>inside prev column</p></column><column><title aid:pstyle="column-title">test</title><p>inside column</p></column></doc>
381
+ EOS
382
+ assert_equal expect, column_helper(review)
383
+ end
384
+
385
+ def test_column_2
386
+ review =<<-EOS
387
+ ===[column] test
388
+
389
+ inside column
390
+
391
+ === next level
392
+ EOS
393
+ expect =<<-EOS
394
+ <?xml version="1.0" encoding="UTF-8"?>
395
+ <doc xmlns:aid="http://ns.adobe.com/AdobeInDesign/4.0/"><column><title aid:pstyle="column-title">test</title><p>inside column</p></column><title aid:pstyle=\"h3\">next level</title><?dtp level="3" section="next level"?></doc>
396
+ EOS
397
+
398
+ assert_equal expect, column_helper(review)
399
+ end
400
+
401
+ def test_column_3
402
+ review =<<-EOS
403
+ ===[column] test
404
+
405
+ inside column
406
+
407
+ ===[/column_dummy]
408
+ EOS
409
+ assert_raise(ReVIEW::CompileError) do
410
+ column_helper(review)
411
+ end
412
+ end
413
+
414
+ def test_ul
415
+ src =<<-EOS
416
+ * AAA
417
+ * BBB
418
+ EOS
419
+
420
+ expect =<<-EOS
421
+ <?xml version="1.0" encoding="UTF-8"?>
422
+ <doc xmlns:aid="http://ns.adobe.com/AdobeInDesign/4.0/"><ul><li aid:pstyle="ul-item">AAA</li><li aid:pstyle="ul-item">BBB</li></ul>
423
+ EOS
424
+ ul_helper(src, expect.chomp)
425
+ end
426
+
427
+ def test_ul_cont
428
+ src =<<-EOS
429
+ * AAA
430
+ -AA
431
+ * BBB
432
+ -BB
433
+ EOS
434
+
435
+ expect =<<-EOS
436
+ <?xml version="1.0" encoding="UTF-8"?>
437
+ <doc xmlns:aid="http://ns.adobe.com/AdobeInDesign/4.0/"><ul><li aid:pstyle="ul-item">AAA-AA</li><li aid:pstyle="ul-item">BBB-BB</li></ul>
438
+ EOS
439
+ ul_helper(src, expect.chomp)
440
+ end
441
+
442
+ def test_ul_nest1
443
+ src =<<-EOS
444
+ * AAA
445
+ ** AA
446
+ EOS
447
+
448
+ expect =<<-EOS
449
+ <?xml version="1.0" encoding="UTF-8"?>
450
+ <doc xmlns:aid="http://ns.adobe.com/AdobeInDesign/4.0/"><ul><li aid:pstyle="ul-item">AAA<ul2><li aid:pstyle="ul-item">AA</li></ul2></li></ul>
451
+ EOS
452
+ ul_helper(src, expect.chomp)
453
+ end
454
+
455
+ def test_ul_nest2
456
+ src =<<-EOS
457
+ * AAA
458
+ ** AA
459
+ * BBB
460
+ ** BB
461
+ EOS
462
+
463
+ expect =<<-EOS
464
+ <?xml version="1.0" encoding="UTF-8"?>\n<doc xmlns:aid="http://ns.adobe.com/AdobeInDesign/4.0/"><ul><li aid:pstyle="ul-item">AAA<ul2><li aid:pstyle="ul-item">AA</li></ul2></li><li aid:pstyle="ul-item">BBB<ul2><li aid:pstyle="ul-item">BB</li></ul2></li></ul>
465
+ EOS
466
+ ul_helper(src, expect.chomp)
467
+ end
468
+
469
+ def test_ul_nest3
470
+ src =<<-EOS
471
+ ** AAA
472
+ * AA
473
+ * BBB
474
+ ** BB
475
+ EOS
476
+
477
+ expect =<<-EOS
478
+ <?xml version="1.0" encoding="UTF-8"?>\n<doc xmlns:aid="http://ns.adobe.com/AdobeInDesign/4.0/"><ul><li aid:pstyle="ul-item"><ul2><li aid:pstyle="ul-item">AAA</li></ul2></li><li aid:pstyle="ul-item">AA</li><li aid:pstyle="ul-item">BBB<ul2><li aid:pstyle="ul-item">BB</li></ul2></li></ul>
479
+ EOS
480
+ ul_helper(src, expect.chomp)
481
+ end
482
+
483
+ def test_ul_nest4
484
+ src =<<-EOS
485
+ * A
486
+ ** B
487
+ ** C
488
+ *** D
489
+ ** E
490
+ * F
491
+ ** G
492
+ EOS
493
+
494
+ expect =<<-EOS
495
+ <?xml version="1.0" encoding="UTF-8"?>\n<doc xmlns:aid="http://ns.adobe.com/AdobeInDesign/4.0/"><ul><li aid:pstyle="ul-item">A<ul2><li aid:pstyle="ul-item">B</li><li aid:pstyle="ul-item">C<ul3><li aid:pstyle="ul-item">D</li></ul3></li><li aid:pstyle="ul-item">E</li></ul2></li><li aid:pstyle="ul-item">F<ul2><li aid:pstyle="ul-item">G</li></ul2></li></ul>
496
+ EOS
497
+ ul_helper(src, expect.chomp)
498
+ end
499
+
500
+ def test_inline_raw0
501
+ assert_equal "normal", @builder.inline_raw("normal")
502
+ end
503
+
504
+ def test_inline_raw1
505
+ assert_equal "body", @builder.inline_raw("|idgxml|body")
506
+ end
507
+
508
+ def test_inline_raw2
509
+ assert_equal "body", @builder.inline_raw("|idgxml, latex|body")
510
+ end
511
+
512
+ def test_inline_raw3
513
+ assert_equal "", @builder.inline_raw("|latex, html|body")
514
+ end
515
+
516
+ def test_inline_raw4
517
+ assert_equal "|idgxml body", @builder.inline_raw("|idgxml body")
518
+ end
519
+
520
+ def test_inline_raw5
521
+ assert_equal "nor\nmal", @builder.inline_raw("|idgxml|nor\\nmal")
522
+ end
523
+
524
+ def test_block_raw0
525
+ @builder.raw("<>!\"\\n& ")
526
+ expect =<<-EOS
527
+ <?xml version="1.0" encoding="UTF-8"?>\n<doc xmlns:aid="http://ns.adobe.com/AdobeInDesign/4.0/"><>!"
528
+ &
529
+ EOS
530
+ assert_equal expect.chomp, @builder.raw_result
531
+ end
532
+
533
+ def test_block_raw1
534
+ @builder.raw("|idgxml|<>!\"\\n& ")
535
+ expect =<<-EOS
536
+ <?xml version="1.0" encoding="UTF-8"?>\n<doc xmlns:aid="http://ns.adobe.com/AdobeInDesign/4.0/"><>!"
537
+ &
538
+ EOS
539
+ assert_equal expect.chomp, @builder.raw_result
540
+ end
541
+
542
+ def test_block_raw2
543
+ @builder.raw("|idgxml, latex|<>!\"\\n& ")
544
+ expect =<<-EOS
545
+ <?xml version="1.0" encoding="UTF-8"?>\n<doc xmlns:aid="http://ns.adobe.com/AdobeInDesign/4.0/"><>!\"
546
+ &
547
+ EOS
548
+ assert_equal expect.chomp, @builder.raw_result
549
+ end
550
+
551
+ def test_block_raw3
552
+ @builder.raw("|latex, html|<>!\"\\n& ")
553
+ expect =<<-EOS
554
+ <?xml version="1.0" encoding="UTF-8"?>\n<doc xmlns:aid="http://ns.adobe.com/AdobeInDesign/4.0/">
555
+ EOS
556
+ assert_equal expect.chomp, @builder.raw_result
557
+ end
558
+
559
+ def test_block_raw4
560
+ @builder.raw("|idgxml <>!\"\\n& ")
561
+ expect =<<-EOS
562
+ <?xml version="1.0" encoding="UTF-8"?>\n<doc xmlns:aid="http://ns.adobe.com/AdobeInDesign/4.0/">|idgxml <>!\"
563
+ &
564
+ EOS
565
+ assert_equal expect.chomp, @builder.raw_result
566
+ end
567
+
310
568
  end