review 1.0.0 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (100) hide show
  1. data/.travis.yml +1 -2
  2. data/ChangeLog +65 -0
  3. data/Gemfile +5 -0
  4. data/README.rdoc +6 -1
  5. data/Rakefile +14 -28
  6. data/bin/review-check +9 -21
  7. data/bin/review-compile +45 -12
  8. data/bin/review-epubmaker +477 -220
  9. data/bin/review-epubmaker-ng +5 -14
  10. data/bin/review-index +4 -2
  11. data/bin/review-init +94 -0
  12. data/bin/review-pdfmaker +70 -287
  13. data/bin/review-preproc +5 -2
  14. data/bin/review-vol +4 -11
  15. data/debian/changelog +3 -3
  16. data/debian/copyright +5 -3
  17. data/debian/docs +1 -0
  18. data/doc/format.rdoc +57 -11
  19. data/doc/quickstart.rdoc +4 -4
  20. data/doc/sample.yaml +11 -7
  21. data/lib/epubmaker.rb +1 -1
  22. data/lib/epubmaker/epubv2.rb +26 -27
  23. data/lib/epubmaker/epubv3.rb +13 -13
  24. data/lib/epubmaker/producer.rb +1 -1
  25. data/lib/review.rb +3 -4
  26. data/lib/review/book.rb +17 -581
  27. data/lib/review/book/base.rb +247 -0
  28. data/lib/review/book/chapter.rb +81 -0
  29. data/lib/review/book/compilable.rb +163 -0
  30. data/lib/review/book/index.rb +339 -0
  31. data/lib/review/book/page_metric.rb +38 -0
  32. data/lib/review/book/parameters.rb +97 -0
  33. data/lib/review/book/part.rb +44 -0
  34. data/lib/review/book/volume.rb +65 -0
  35. data/lib/review/builder.rb +34 -40
  36. data/lib/review/compiler.rb +32 -13
  37. data/lib/review/configure.rb +38 -0
  38. data/lib/review/ewbbuilder.rb +23 -21
  39. data/lib/review/extentions.rb +3 -0
  40. data/lib/review/extentions/object.rb +9 -0
  41. data/lib/review/{compat.rb → extentions/string.rb} +11 -0
  42. data/lib/review/htmlbuilder.rb +162 -74
  43. data/lib/review/htmlutils.rb +28 -1
  44. data/lib/review/i18n.yaml +11 -0
  45. data/lib/review/idgxmlbuilder.rb +119 -35
  46. data/lib/review/inaobuilder.rb +355 -0
  47. data/lib/review/latexbuilder.rb +133 -59
  48. data/lib/review/latexutils.rb +15 -6
  49. data/lib/review/makerhelper.rb +59 -0
  50. data/lib/review/markdownbuilder.rb +129 -0
  51. data/lib/review/preprocessor.rb +20 -7
  52. data/lib/review/review.tex.erb +250 -0
  53. data/lib/review/textutils.rb +28 -3
  54. data/lib/review/tocparser.rb +20 -12
  55. data/lib/review/tocprinter.rb +7 -3
  56. data/lib/review/topbuilder.rb +44 -27
  57. data/lib/review/version.rb +3 -0
  58. data/review.gemspec +20 -117
  59. data/test/book_test_helper.rb +35 -0
  60. data/test/sample-book/README.md +5 -0
  61. data/test/sample-book/src/CHAPS +2 -0
  62. data/test/sample-book/src/PREDEF +1 -0
  63. data/test/sample-book/src/Rakefile +26 -0
  64. data/test/sample-book/src/_cover.html +3 -0
  65. data/test/sample-book/src/ch01.re +71 -0
  66. data/test/sample-book/src/ch02.re +3 -0
  67. data/test/sample-book/src/config.yml +55 -0
  68. data/test/sample-book/src/images/ch01-imgsample.jpg +0 -0
  69. data/test/sample-book/src/images/cover.jpg +0 -0
  70. data/test/sample-book/src/main.css +251 -0
  71. data/test/sample-book/src/preface.re +15 -0
  72. data/test/sample-book/src/sty/jumoline.sty +310 -0
  73. data/test/sample-book/src/sty/samplemacro.sty +21 -0
  74. data/test/sample-book/src/vendor/jumoline/README +29 -0
  75. data/test/sample-book/src/vendor/jumoline/jumoline.dtx +2988 -0
  76. data/test/sample-book/src/vendor/jumoline/jumoline.ins +6 -0
  77. data/test/test_book.rb +26 -646
  78. data/test/test_book_chapter.rb +418 -0
  79. data/test/test_book_parameter.rb +42 -0
  80. data/test/test_book_part.rb +53 -0
  81. data/test/test_builder.rb +17 -10
  82. data/test/test_compiler.rb +46 -0
  83. data/test/test_epubmaker.rb +1 -1
  84. data/test/test_epubmaker_cmd.rb +36 -0
  85. data/test/test_helper.rb +17 -0
  86. data/test/test_htmlbuilder.rb +156 -24
  87. data/test/test_htmlutils.rb +4 -0
  88. data/test/test_i18n.rb +6 -2
  89. data/test/test_idgxmlbuilder.rb +33 -11
  90. data/test/test_inaobuilder.rb +247 -0
  91. data/test/test_index.rb +31 -0
  92. data/test/test_latexbuilder.rb +115 -35
  93. data/test/test_makerhelper.rb +50 -0
  94. data/test/test_pdfmaker_cmd.rb +36 -0
  95. data/test/test_preprocessor.rb +7 -7
  96. data/test/test_topbuilder.rb +6 -7
  97. data/test/test_uuid.rb +1 -0
  98. metadata +117 -12
  99. data/lib/review/index.rb +0 -323
  100. data/lib/review/volume.rb +0 -66
@@ -0,0 +1,53 @@
1
+ require 'book_test_helper'
2
+ class PartTest < Test::Unit::TestCase
3
+ include BookTestHelper
4
+
5
+ def test_initialize
6
+ part = Book::Part.new(nil, nil, nil)
7
+ assert_equal nil, part.number
8
+ assert_equal nil, part.chapters
9
+ assert_equal '', part.name
10
+
11
+ part = Book::Part.new(nil, 123, [], 'name')
12
+ assert_equal 123, part.number
13
+ assert_equal [], part.chapters
14
+ assert_equal 'name', part.name
15
+ end
16
+
17
+ def test_each_chapter
18
+ part = Book::Part.new(nil, nil, [1, 2, 3])
19
+
20
+ tmp = []
21
+ part.each_chapter do |ch|
22
+ tmp << ch
23
+ end
24
+ assert_equal [1, 2, 3], tmp
25
+ end
26
+
27
+ def test_volume
28
+ part = Book::Part.new(nil, nil, [])
29
+ assert part.volume
30
+ assert_equal 0, part.volume.bytes
31
+ assert_equal 0, part.volume.chars
32
+ assert_equal 0, part.volume.lines
33
+
34
+ chs = []
35
+ tfs = [] ## prevent from removing Tempfile
36
+ Tempfile.open('part_test') do |o|
37
+ o.print "12345"
38
+ chs << Book::Chapter.new(nil, nil, nil, o.path)
39
+ tfs << o
40
+ end
41
+ Tempfile.open('part_test') do |o|
42
+ o.print "67890"
43
+ chs << Book::Chapter.new(nil, nil, nil, o.path)
44
+ tfs << o
45
+ end
46
+
47
+ part = Book::Part.new(nil, nil, chs)
48
+ assert part.volume
49
+ assert part.volume.bytes > 0
50
+ assert part.volume.chars > 0
51
+ assert part.volume.lines > 0
52
+ end
53
+ end
@@ -98,7 +98,6 @@ class BuidlerTest < Test::Unit::TestCase
98
98
  :source_header, :source_body,
99
99
  :image_image, :image_dummy,
100
100
  :table_header, :table_begin, :tr, :th, :table_end,
101
- :nofunc_text,
102
101
  :compile_ruby, :compile_kw, :compile_href,
103
102
  :bibpaper_header, :bibpaper_bibpaper,
104
103
  :inline_hd_chap,
@@ -113,18 +112,26 @@ class BuidlerTest < Test::Unit::TestCase
113
112
  assert_equal [:text, text], @b.compile_inline(text)
114
113
  end
115
114
 
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
115
+ def test_inline_ruby
116
+ def @b.compile_ruby(base,ruby)
117
+ [base,ruby]
118
+ end
119
+ str = @b.inline_ruby("foo,bar")
120
+ assert_equal str, ["foo","bar"]
121
+ str = @b.inline_ruby("foo\\,\\,,\\,bar,buz")
122
+ assert_equal str, ["foo,,",",bar,buz"]
121
123
  end
122
124
 
123
- def test_convert_outencoding_2arg
124
- ReVIEW.book.param = {'outencoding' => "UTF-8"}
125
+ def test_compile_inline_backslash
126
+ text = "abc\\d\\#a"
127
+ assert_equal [:text, text], @b.compile_inline(text)
128
+ end
129
+
130
+ def test_convert_outencoding
131
+ ReVIEW.book.param = {'outencoding' => "EUC"}
125
132
  b = Builder.new
126
- ret = b.convert_outencoding("a","b")
127
- assert_equal(["a","b"], ret)
133
+ ret = b.convert_outencoding("a", ReVIEW.book.param["outencoding"])
134
+ assert_equal "a", ret
128
135
  end
129
136
 
130
137
  class XBuilder < Builder
@@ -0,0 +1,46 @@
1
+ # encoding: utf-8
2
+
3
+ require 'test_helper'
4
+ require 'review/compiler'
5
+ require 'review/book'
6
+ require 'review/latexbuilder'
7
+
8
+ class CompilerTest < Test::Unit::TestCase
9
+ include ReVIEW
10
+
11
+ def setup
12
+ @builder = LATEXBuilder.new()
13
+ @c = Compiler.new(@builder)
14
+ end
15
+
16
+ def test_parse_args
17
+ args = @c.__send__(:parse_args, "[foo][bar]")
18
+ assert_equal ["foo","bar"], args
19
+ end
20
+
21
+ def test_parse_args_with_brace1
22
+ args = @c.__send__(:parse_args, "[fo[\\][\\]o][bar]")
23
+ assert_equal ["fo[][]o","bar"], args
24
+ end
25
+
26
+ def test_parse_args_with_brace2
27
+ args = @c.__send__(:parse_args, "[f\\]o\\]o][bar]")
28
+ assert_equal ["f]o]o","bar"], args
29
+ end
30
+
31
+ def test_parse_args_with_backslash
32
+ args = @c.__send__(:parse_args, "[foo][bar\\buz]")
33
+ assert_equal ["foo","bar\\buz"], args
34
+ end
35
+
36
+ def test_parse_args_with_backslash2
37
+ args = @c.__send__(:parse_args, "[foo][bar\\#\\[\\!]")
38
+ assert_equal ["foo","bar\\#\\[\\!"], args
39
+ end
40
+
41
+ def test_parse_args_with_backslash3
42
+ args = @c.__send__(:parse_args, "[foo][bar\\\\buz]")
43
+ assert_equal ["foo","bar\\buz"], args
44
+ end
45
+ end
46
+
@@ -35,7 +35,7 @@ class EPUBMakerTest < Test::Unit::TestCase
35
35
 
36
36
  def test_mimetype
37
37
  @producer.mimetype(@output)
38
- assert_equal %Q[application/epub+zip\n], @output.string
38
+ assert_equal %Q[application/epub+zip], @output.string
39
39
  end
40
40
 
41
41
  def test_container
@@ -0,0 +1,36 @@
1
+ # encoding: utf-8
2
+
3
+ require 'test_helper'
4
+ require 'tmpdir'
5
+ require 'fileutils'
6
+ require 'yaml'
7
+
8
+ REVIEW_EPUBMAKER = File.expand_path('../bin/review-epubmaker', File.dirname(__FILE__))
9
+
10
+ class EPUBMakerCmdTest < Test::Unit::TestCase
11
+ def setup
12
+ @tmpdir1 = Dir.mktmpdir
13
+ @tmpdir2 = Dir.mktmpdir
14
+
15
+ @old_rubylib = ENV['RUBYLIB']
16
+ ENV['RUBYLIB'] = File.expand_path('../lib', File.dirname(__FILE__))
17
+ end
18
+
19
+ def teardown
20
+ FileUtils.rm_rf @tmpdir1
21
+ FileUtils.rm_rf @tmpdir2
22
+ ENV['RUBYLIB'] = @old_rubylib
23
+ end
24
+
25
+ def test_epubmaker_cmd
26
+ config = prepare_samplebook(@tmpdir1)
27
+ builddir = @tmpdir1 + "/" + config['bookname'] + '-epub'
28
+ assert ! File.exists?(builddir)
29
+
30
+ Dir.chdir(@tmpdir1) do
31
+ system("#{REVIEW_EPUBMAKER} config.yml 1>/dev/null 2>/dev/null")
32
+ end
33
+
34
+ assert File.exists?(builddir)
35
+ end
36
+ end
@@ -8,3 +8,20 @@ def ul_helper(src, expect)
8
8
  assert_equal expect, @builder.raw_result
9
9
  end
10
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
@@ -4,6 +4,7 @@ require 'test_helper'
4
4
  require 'review/compiler'
5
5
  require 'review/book'
6
6
  require 'review/htmlbuilder'
7
+ require 'review/i18n'
7
8
 
8
9
  class HTMLBuidlerTest < Test::Unit::TestCase
9
10
  include ReVIEW
@@ -19,46 +20,46 @@ class HTMLBuidlerTest < Test::Unit::TestCase
19
20
  }
20
21
  ReVIEW.book.param = @param
21
22
  @compiler = ReVIEW::Compiler.new(@builder)
22
- @chapter = Chapter.new(nil, 1, '-', nil, StringIO.new)
23
+ @chapter = Book::Chapter.new(Book::Base.new(nil), 1, '-', nil, StringIO.new)
23
24
  location = Location.new(nil, nil)
24
25
  @builder.bind(@compiler, @chapter, location)
25
26
  end
26
27
 
27
28
  def test_headline_level1
28
29
  @builder.headline(1,"test","this is test.")
29
- assert_equal %Q|<h1 id="test"><a id="h1" />第1章 this is test.</h1>\n|, @builder.raw_result
30
+ assert_equal %Q|<h1 id="test"><a id="h1"></a>第1章 this is test.</h1>\n|, @builder.raw_result
30
31
  end
31
32
 
32
33
  def test_headline_level1_without_secno
33
34
  @param["secnolevel"] = 0
34
35
  @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
+ assert_equal %Q|<h1 id="test"><a id="h1"></a>this is test.</h1>\n|, @builder.raw_result
36
37
  end
37
38
 
38
39
  def test_headline_level1_with_inlinetag
39
40
  @builder.headline(1,"test","this @<b>{is} test.<&\">")
40
- assert_equal %Q|<h1 id="test"><a id="h1" />第1章 this <b>is</b> test.&lt;&amp;&quot;&gt;</h1>\n|, @builder.raw_result
41
+ 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
42
  end
42
43
 
43
44
  def test_headline_level2
44
45
  @builder.headline(2,"test","this is test.")
45
- assert_equal %Q|\n<h2 id="test"><a id="h1-1" />1.1 this is test.</h2>\n|, @builder.raw_result
46
+ assert_equal %Q|\n<h2 id="test"><a id="h1-1"></a>1.1 this is test.</h2>\n|, @builder.raw_result
46
47
  end
47
48
 
48
49
  def test_headline_level3
49
50
  @builder.headline(3,"test","this is test.")
50
- assert_equal %Q|\n<h3 id="test"><a id="h1-0-1" />this is test.</h3>\n|, @builder.raw_result
51
+ assert_equal %Q|\n<h3 id="test"><a id="h1-0-1"></a>this is test.</h3>\n|, @builder.raw_result
51
52
  end
52
53
 
53
54
  def test_headline_level3_with_secno
54
55
  @param["secnolevel"] = 3
55
56
  @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
+ 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
58
  end
58
59
 
59
60
  def test_label
60
61
  @builder.label("label_test")
61
- assert_equal %Q|<a id="label_test" />\n|, @builder.raw_result
62
+ assert_equal %Q|<a id="label_test"></a>\n|, @builder.raw_result
62
63
  end
63
64
 
64
65
  def test_href
@@ -131,6 +132,21 @@ class HTMLBuidlerTest < Test::Unit::TestCase
131
132
  assert_equal %Q|test <tt><b>inline test</b></tt> test2|, ret
132
133
  end
133
134
 
135
+ def test_inline_hd_chap
136
+ def @chapter.headline_index
137
+ items = [Book::HeadlineIndex::Item.new("chap1|test", [1, 1], "te_st")]
138
+ Book::HeadlineIndex.new(items, self)
139
+ end
140
+
141
+ @param["secnolevel"] = 2
142
+ ret = @builder.compile_inline("test @<hd>{chap1|test} test2")
143
+ assert_equal %Q|test 「te_st」 test2|, ret
144
+
145
+ @param["secnolevel"] = 3
146
+ ret = @builder.compile_inline("test @<hd>{chap1|test} test2")
147
+ assert_equal %Q|test 「1.1.1 te_st」 test2|, ret
148
+ end
149
+
134
150
  def test_inline_uchar
135
151
  ret = @builder.compile_inline("test @<uchar>{2460} test2")
136
152
  assert_equal %Q|test &#x2460; test2|, ret
@@ -138,7 +154,17 @@ class HTMLBuidlerTest < Test::Unit::TestCase
138
154
 
139
155
  def test_inline_ruby
140
156
  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
157
+ assert_equal "<ruby><rb>粗雑</rb><rp>(</rp><rt>クルード</rt><rp>)</rp></ruby>と思われているなら<ruby><rb>繊細</rb><rp>(</rp><rt>テクニカル</rt><rp>)</rp></ruby>にやり、繊細と思われているなら粗雑にやる。", ret
158
+ end
159
+
160
+ def test_inline_ruby_comma
161
+ ret = @builder.compile_inline("@<ruby>{foo\\, bar\\, buz,フー・バー・バズ}")
162
+ assert_equal "<ruby><rb>foo, bar, buz</rb><rp>(</rp><rt>フー・バー・バズ</rt><rp>)</rp></ruby>", ret
163
+ end
164
+
165
+ def test_inline_ref
166
+ ret = @builder.compile_inline("@<ref>{外部参照<>&}")
167
+ assert_equal %Q|<a target='外部参照&lt;&gt;&amp;'>「●● 外部参照&lt;&gt;&amp;」</a>|, ret
142
168
  end
143
169
 
144
170
  def test_quote
@@ -164,9 +190,14 @@ class HTMLBuidlerTest < Test::Unit::TestCase
164
190
  assert_equal %Q|<p class="flushright">foobar</p>\n<p class="flushright">buz</p>\n|, @builder.raw_result
165
191
  end
166
192
 
193
+ def test_centering
194
+ @builder.centering(["foo", "bar", "", "buz"])
195
+ assert_equal %Q|<p class="center">foobar</p>\n<p class="center">buz</p>\n|, @builder.raw_result
196
+ end
197
+
167
198
  def test_image
168
199
  def @chapter.image(id)
169
- item = ImageIndex::Item.new("sampleimg",1)
200
+ item = Book::ImageIndex::Item.new("sampleimg",1)
170
201
  item.instance_eval{@pathes=["./images/chap1-sampleimg.png"]}
171
202
  item
172
203
  end
@@ -177,7 +208,7 @@ class HTMLBuidlerTest < Test::Unit::TestCase
177
208
 
178
209
  def test_image_with_metric
179
210
  def @chapter.image(id)
180
- item = ImageIndex::Item.new("sampleimg",1)
211
+ item = Book::ImageIndex::Item.new("sampleimg",1)
181
212
  item.instance_eval{@pathes=["./images/chap1-sampleimg.png"]}
182
213
  item
183
214
  end
@@ -188,7 +219,7 @@ class HTMLBuidlerTest < Test::Unit::TestCase
188
219
 
189
220
  def test_image_with_metric2
190
221
  def @chapter.image(id)
191
- item = ImageIndex::Item.new("sampleimg",1)
222
+ item = Book::ImageIndex::Item.new("sampleimg",1)
192
223
  item.instance_eval{@pathes=["./images/chap1-sampleimg.png"]}
193
224
  item
194
225
  end
@@ -198,7 +229,7 @@ class HTMLBuidlerTest < Test::Unit::TestCase
198
229
 
199
230
  def test_indepimage
200
231
  def @chapter.image(id)
201
- item = ImageIndex::Item.new("sampleimg",1)
232
+ item = Book::ImageIndex::Item.new("sampleimg",1)
202
233
  item.instance_eval{@pathes=["./images/chap1-sampleimg.png"]}
203
234
  item
204
235
  end
@@ -209,7 +240,7 @@ class HTMLBuidlerTest < Test::Unit::TestCase
209
240
 
210
241
  def test_indepimage_without_caption
211
242
  def @chapter.image(id)
212
- item = ImageIndex::Item.new("sampleimg",1)
243
+ item = Book::ImageIndex::Item.new("sampleimg",1)
213
244
  item.instance_eval{@pathes=["./images/chap1-sampleimg.png"]}
214
245
  item
215
246
  end
@@ -220,7 +251,7 @@ class HTMLBuidlerTest < Test::Unit::TestCase
220
251
 
221
252
  def test_indepimage_with_metric
222
253
  def @chapter.image(id)
223
- item = ImageIndex::Item.new("sampleimg",1)
254
+ item = Book::ImageIndex::Item.new("sampleimg",1)
224
255
  item.instance_eval{@pathes=["./images/chap1-sampleimg.png"]}
225
256
  item
226
257
  end
@@ -231,7 +262,7 @@ class HTMLBuidlerTest < Test::Unit::TestCase
231
262
 
232
263
  def test_indepimage_with_metric2
233
264
  def @chapter.image(id)
234
- item = ImageIndex::Item.new("sampleimg",1)
265
+ item = Book::ImageIndex::Item.new("sampleimg",1)
235
266
  item.instance_eval{@pathes=["./images/chap1-sampleimg.png"]}
236
267
  item
237
268
  end
@@ -242,7 +273,7 @@ class HTMLBuidlerTest < Test::Unit::TestCase
242
273
 
243
274
  def test_indepimage_without_caption_but_with_metric
244
275
  def @chapter.image(id)
245
- item = ImageIndex::Item.new("sampleimg",1)
276
+ item = Book::ImageIndex::Item.new("sampleimg",1)
246
277
  item.instance_eval{@pathes=["./images/chap1-sampleimg.png"]}
247
278
  item
248
279
  end
@@ -251,6 +282,20 @@ class HTMLBuidlerTest < Test::Unit::TestCase
251
282
  assert_equal %Q|<div class="image">\n<img src="images/chap1-sampleimg.png" alt="" width="120%" />\n</div>\n|, @builder.raw_result
252
283
  end
253
284
 
285
+ def test_list
286
+ def @chapter.list(id)
287
+ Book::ListIndex::Item.new("samplelist",1)
288
+ end
289
+ @builder.list(["test1", "test1.5", "", "test<i>2</i>"], "samplelist", "this is @<b>{test}<&>_")
290
+
291
+ begin # FIXME: Use params instead of exception handling
292
+ require 'pygments'
293
+ assert_equal %Q|<div class="caption-code">\n<p class="caption">リスト1.1: this is <b>test</b>&lt;&amp;&gt;_</p>\n<pre class="list">test1\ntest1.5\n\ntest<span style="color: #666666">&lt;</span>i<span style="color: #666666">&gt;2&lt;/</span>i<span style="color: #666666">&gt;</span>\n</pre>\n</div>\n|, @builder.raw_result
294
+ rescue LoadError
295
+ assert_equal %Q|<div class="caption-code">\n<p class="caption">リスト1.1: this is <b>test</b>&lt;&amp;&gt;_</p>\n<pre class="list">test1\ntest1.5\n\ntest<i>2</i>\n</pre>\n</div>\n|, @builder.raw_result
296
+ end
297
+ end
298
+
254
299
  def test_emlist
255
300
  @builder.emlist(["lineA","lineB"])
256
301
  assert_equal %Q|<div class="emlist-code">\n<pre class="emlist">lineA\nlineB\n</pre>\n</div>\n|, @builder.raw_result
@@ -261,6 +306,17 @@ class HTMLBuidlerTest < Test::Unit::TestCase
261
306
  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
307
  end
263
308
 
309
+ def test_emlist_with_tab
310
+ @builder.emlist(["\tlineA","\t\tlineB","\tlineC"])
311
+ assert_equal %Q|<div class="emlist-code">\n<pre class="emlist"> lineA\n lineB\n lineC\n</pre>\n</div>\n|, @builder.raw_result
312
+ end
313
+
314
+ def test_emlist_with_4tab
315
+ @builder.instance_eval{@tabwidth=4}
316
+ @builder.emlist(["\tlineA","\t\tlineB","\tlineC"])
317
+ assert_equal %Q|<div class="emlist-code">\n<pre class="emlist"> lineA\n lineB\n lineC\n</pre>\n</div>\n|, @builder.raw_result
318
+ end
319
+
264
320
  def test_cmd
265
321
  @builder.cmd(["lineA","lineB"])
266
322
  assert_equal %Q|<div class="cmd-code">\n<pre class="cmd">lineA\nlineB\n</pre>\n</div>\n|, @builder.raw_result
@@ -273,7 +329,7 @@ class HTMLBuidlerTest < Test::Unit::TestCase
273
329
 
274
330
  def test_bib
275
331
  def @chapter.bibpaper(id)
276
- BibpaperIndex::Item.new("samplebib",1,"sample bib")
332
+ Book::BibpaperIndex::Item.new("samplebib",1,"sample bib")
277
333
  end
278
334
 
279
335
  assert_equal %Q|<a href="./bib.html#bib-samplebib">[1]</a>|, @builder.inline_bib("samplebib")
@@ -281,11 +337,20 @@ class HTMLBuidlerTest < Test::Unit::TestCase
281
337
 
282
338
  def test_bibpaper
283
339
  def @chapter.bibpaper(id)
284
- BibpaperIndex::Item.new("samplebib",1,"sample bib")
340
+ Book::BibpaperIndex::Item.new("samplebib",1,"sample bib")
285
341
  end
286
342
 
287
343
  @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
344
+ assert_equal %Q|<div class=\"bibpaper\">\n<a id=\"bib-samplebib\">[1]</a> sample bib <b>bold</b>\n<p>ab</p></div>\n|, @builder.raw_result
345
+ end
346
+
347
+ def test_bibpaper_with_anchor
348
+ def @chapter.bibpaper(id)
349
+ Book::BibpaperIndex::Item.new("samplebib",1,"sample bib")
350
+ end
351
+
352
+ @builder.bibpaper(["a", "b"], "samplebib", "sample bib @<href>{http://example.jp}")
353
+ assert_equal %Q|<div class=\"bibpaper\">\n<a id=\"bib-samplebib\">[1]</a> sample bib <a href=\"http://example.jp\" class=\"link\">http://example.jp</a>\n<p>ab</p></div>\n|, @builder.raw_result
289
354
  end
290
355
 
291
356
  def column_helper(review)
@@ -309,12 +374,12 @@ EOS
309
374
  expect =<<-EOS
310
375
  <div class="column">
311
376
 
312
- <h3><a id="h1-0-1" />prev column</h3>
377
+ <h3><a id="column-1"></a>prev column</h3>
313
378
  <p>inside prev column</p>
314
379
  </div>
315
380
  <div class="column">
316
381
 
317
- <h3><a id="h1-0-2" />test</h3>
382
+ <h3><a id="column-2"></a>test</h3>
318
383
  <p>inside column</p>
319
384
  </div>
320
385
  EOS
@@ -332,11 +397,11 @@ EOS
332
397
  expect =<<-EOS
333
398
  <div class="column">
334
399
 
335
- <h3><a id="h1-0-1" />test</h3>
400
+ <h3><a id="column-1"></a>test</h3>
336
401
  <p>inside column</p>
337
402
  </div>
338
403
 
339
- <h3><a id="h1-0-2" />next level</h3>
404
+ <h3><a id="h1-0-1"></a>next level</h3>
340
405
  EOS
341
406
 
342
407
  assert_equal expect, column_helper(review)
@@ -439,6 +504,63 @@ EOS
439
504
  ul_helper(src, expect)
440
505
  end
441
506
 
507
+ def test_ul_nest4
508
+ src =<<-EOS
509
+ * A
510
+ ** AA
511
+ *** AAA
512
+ * B
513
+ ** BB
514
+ EOS
515
+
516
+ expect =<<-EOS
517
+ <ul>
518
+ <li>A<ul>
519
+ <li>AA<ul>
520
+ <li>AAA</li>
521
+ </ul>
522
+ </li>
523
+ </ul>
524
+ </li>
525
+ <li>B<ul>
526
+ <li>BB</li>
527
+ </ul>
528
+ </li>
529
+ </ul>
530
+ EOS
531
+ ul_helper(src, expect)
532
+ end
533
+
534
+ def test_ul_nest5
535
+ src =<<-EOS
536
+ * A
537
+ ** AA
538
+ **** AAAA
539
+ * B
540
+ ** BB
541
+ EOS
542
+
543
+ expect =<<-EOS
544
+ <ul>
545
+ <li>A<ul>
546
+ <li>AA<ul>
547
+ <li><ul>
548
+ <li>AAAA</li>
549
+ </ul>
550
+ </li>
551
+ </ul>
552
+ </li>
553
+ </ul>
554
+ </li>
555
+ <li>B<ul>
556
+ <li>BB</li>
557
+ </ul>
558
+ </li>
559
+ </ul>
560
+ EOS
561
+ ul_helper(src, expect)
562
+ end
563
+
442
564
  def test_inline_raw0
443
565
  assert_equal "normal", @builder.inline_raw("normal")
444
566
  end
@@ -505,4 +627,14 @@ EOS
505
627
  EOS
506
628
  assert_equal expect.chomp, @builder.raw_result
507
629
  end
630
+
631
+ def test_inline_fn
632
+ fn = Book::FootnoteIndex.parse(['//footnote[foo][bar\\a\\$buz]'])
633
+ @chapter.instance_eval{@footnote_index=fn}
634
+ @builder.footnote("foo",'bar\\a\\$buz')
635
+ expect =<<-'EOS'
636
+ <div class="footnote"><p class="footnote">[<a id="fn-foo">*1</a>] bar\a\$buz</p></div>
637
+ EOS
638
+ assert_equal expect, @builder.raw_result
639
+ end
508
640
  end