review 1.7.2 → 2.0.0.beta1

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 (101) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +1 -43
  3. data/.travis.yml +0 -9
  4. data/ChangeLog +0 -16
  5. data/Gemfile +1 -0
  6. data/README.rdoc +1 -1
  7. data/Rakefile +12 -1
  8. data/bin/review-check +21 -8
  9. data/bin/review-compile +15 -9
  10. data/bin/review-epubmaker-legacy +6 -6
  11. data/bin/review-index +13 -2
  12. data/bin/review-init +18 -12
  13. data/bin/review-preproc +14 -1
  14. data/bin/review-validate +1 -1
  15. data/bin/review-vol +13 -1
  16. data/doc/quickstart.ja.md +1 -1
  17. data/doc/quickstart.md +1 -1
  18. data/lib/epubmaker/content.rb +3 -3
  19. data/lib/epubmaker/epubcommon.rb +108 -91
  20. data/lib/epubmaker/epubv2.rb +67 -14
  21. data/lib/epubmaker/epubv3.rb +59 -25
  22. data/lib/epubmaker/producer.rb +1 -13
  23. data/lib/lineinput.rb +0 -48
  24. data/lib/review/book/base.rb +4 -12
  25. data/lib/review/book/compilable.rb +3 -1
  26. data/lib/review/book/index.rb +4 -4
  27. data/lib/review/builder.rb +54 -47
  28. data/lib/review/compiler.rb +4662 -326
  29. data/lib/review/compiler/literals_1_8.kpeg +19 -0
  30. data/lib/review/compiler/literals_1_8.rb +432 -0
  31. data/lib/review/compiler/literals_1_9.kpeg +22 -0
  32. data/lib/review/compiler/literals_1_9.rb +435 -0
  33. data/lib/review/configure.rb +8 -20
  34. data/lib/review/epubbuilder.rb +1 -1
  35. data/lib/review/epubmaker.rb +122 -52
  36. data/lib/review/ewbbuilder.rb +4 -4
  37. data/lib/review/exception.rb +1 -1
  38. data/lib/review/extentions.rb +1 -0
  39. data/lib/review/extentions/array.rb +25 -0
  40. data/lib/review/htmlbuilder.rb +286 -275
  41. data/lib/review/htmllayout.rb +0 -2
  42. data/lib/review/htmlutils.rb +4 -4
  43. data/lib/review/i18n.rb +2 -6
  44. data/lib/review/i18n.yml +1 -1
  45. data/lib/review/idgxmlbuilder.rb +239 -204
  46. data/lib/review/inaobuilder.rb +75 -73
  47. data/lib/review/latexbuilder.rb +265 -219
  48. data/lib/review/latexutils.rb +6 -6
  49. data/lib/review/layout.tex.erb +1 -1
  50. data/lib/review/location.rb +24 -0
  51. data/lib/review/markdownbuilder.rb +124 -79
  52. data/lib/review/node.rb +267 -0
  53. data/lib/review/pdfmaker.rb +92 -92
  54. data/lib/review/preprocessor.rb +51 -14
  55. data/lib/review/review.kpeg +724 -0
  56. data/lib/review/textbuilder.rb +1 -1
  57. data/lib/review/textutils.rb +24 -18
  58. data/lib/review/tocparser.rb +3 -3
  59. data/lib/review/tocprinter.rb +31 -8
  60. data/lib/review/topbuilder.rb +119 -111
  61. data/lib/review/unfold.rb +2 -2
  62. data/lib/review/version.rb +1 -1
  63. data/review.gemspec +2 -2
  64. data/rubocop-todo.yml +456 -0
  65. data/test/assets/test_template.tex +1 -1
  66. data/test/sample-book/src/config.yml +0 -1
  67. data/test/test.re +1 -1
  68. data/test/test_book.rb +4 -4
  69. data/test/test_book_chapter.rb +70 -0
  70. data/test/test_book_part.rb +1 -1
  71. data/test/test_builder.rb +6 -28
  72. data/test/test_compiler.rb +59 -14
  73. data/test/test_helper.rb +47 -4
  74. data/test/test_htmlbuilder.rb +104 -73
  75. data/test/test_i18n.rb +5 -3
  76. data/test/test_idgxmlbuilder.rb +5 -2
  77. data/test/test_inaobuilder.rb +4 -2
  78. data/test/test_latexbuilder.rb +18 -37
  79. data/test/test_lineinput.rb +25 -4
  80. data/test/test_markdownbuilder.rb +4 -22
  81. data/test/test_pdfmaker.rb +12 -11
  82. data/test/test_textutils.rb +0 -36
  83. data/test/test_topbuilder.rb +2 -0
  84. metadata +14 -28
  85. data/.rubocop_todo.yml +0 -605
  86. data/Dockerfile +0 -22
  87. data/doc/NEWS.ja.md +0 -362
  88. data/doc/NEWS.md +0 -366
  89. data/lib/review/htmltoc.rb +0 -45
  90. data/lib/review/template.rb +0 -21
  91. data/templates/html/layout-html5.html.erb +0 -17
  92. data/templates/html/layout-xhtml1.html.erb +0 -20
  93. data/templates/ncx/epubv2.ncx.erb +0 -11
  94. data/templates/opf/epubv2.opf.erb +0 -21
  95. data/templates/opf/epubv3.opf.erb +0 -18
  96. data/templates/xml/container.xml.erb +0 -6
  97. data/test/assets/test.xml.erb +0 -3
  98. data/test/sample-book/src/config-epub2.yml +0 -186
  99. data/test/test_configure.rb +0 -50
  100. data/test/test_htmltoc.rb +0 -32
  101. data/test/test_template.rb +0 -26
@@ -205,7 +205,7 @@
205
205
 
206
206
  \end{tabular}\par}%
207
207
  \vfill
208
- {\large 2011-01-01 版\hspace{2zw} 発行\par}%
208
+ {\large 2011-01-01 version\hspace{2zw} 発行\par}%
209
209
  \vskip4zw\mbox{}
210
210
  \end{center}%
211
211
  \end{titlepage}
@@ -67,7 +67,6 @@ rights: (C) 2011 Masayoshi Takahashi
67
67
  # coverage: 内容の範囲や領域
68
68
 
69
69
  # htmlext: HTMLファイルの拡張子(省略した場合はhtml)
70
- htmlext: xhtml
71
70
  # CSSファイル(配列で複数指定可、yamlファイルおよびRe:VIEWファイルを置いたディレクトリにあること)
72
71
  stylesheet: ["style.css"]
73
72
 
data/test/test.re CHANGED
@@ -1,7 +1,7 @@
1
1
  = 見出し
2
2
  以下を実行
3
3
  //emlist{
4
- ./bin/review-compile --hdnumberingmode test.re --target=html
4
+ ./bin/review-compile --inencoding=UTF-8 --outencoding=UTF-8 --hdnumberingmode test.re --target=html
5
5
  }
6
6
  == 節1
7
7
 
data/test/test_book.rb CHANGED
@@ -158,14 +158,14 @@ class BookTest < Test::Unit::TestCase
158
158
  def test_setParameter
159
159
  book = Book::Base.new(File.dirname(__FILE__))
160
160
  book.param = :test
161
- assert_equal :test, book.param # old way
161
+ assert_equal :test, book.param # old way
162
162
  assert_equal :test, book.config # new way
163
163
  end
164
164
 
165
165
  def test_setConfig
166
166
  book = Book::Base.new(File.dirname(__FILE__))
167
167
  book.config = :test
168
- assert_equal :test, book.param # old way
168
+ assert_equal :test, book.param # old way
169
169
  assert_equal :test, book.config # new way
170
170
  end
171
171
 
@@ -391,7 +391,7 @@ EOC
391
391
  end
392
392
 
393
393
  mktmpbookdir 'catalog.yml' => "APPENDIX:\n - p01.re",
394
- 'p01.re' => '= appendix' do |dir, book, files|
394
+ 'p01.re' => '= appendix' do |dir, book, files|
395
395
  assert_equal 'appendix', book.appendix.chapters.first.title
396
396
  assert_equal 1, book.appendix.chapters.first.number
397
397
  end
@@ -399,7 +399,7 @@ EOC
399
399
 
400
400
  def test_postscripts
401
401
  mktmpbookdir 'catalog.yml' => "POSTDEF:\n - b01.re",
402
- 'b01.re' => '= back' do |dir, book, files|
402
+ 'b01.re' => '= back' do |dir, book, files|
403
403
  assert_kind_of Book::Part, book.postscripts
404
404
  assert_equal 1, book.postscripts.chapters.size
405
405
  assert_equal 'back', book.postscripts.chapters.first.title
@@ -3,6 +3,21 @@ require 'book_test_helper'
3
3
  class ChapterTest < Test::Unit::TestCase
4
4
  include BookTestHelper
5
5
 
6
+ def setup
7
+
8
+ if "".respond_to?(:encode)
9
+ @utf8_str = "あいうえお"
10
+ @eucjp_str = "あいうえお".encode("EUC-JP")
11
+ @sjis_str = "あいうえお".encode("Shift_JIS")
12
+ @jis_str = "あいうえお".encode("ISO-2022-JP")
13
+ else
14
+ @utf8_str = "\xe3\x81\x82\xe3\x81\x84\xe3\x81\x86\xe3\x81\x88\xe3\x81\x8a" # "あいうえお"
15
+ @eucjp_str = "\xa4\xa2\xa4\xa4\xa4\xa6\xa4\xa8\xa4\xaa"
16
+ @sjis_str = "\x82\xa0\x82\xa2\x82\xa4\x82\xa6\x82\xa8"
17
+ @jis_str = "\x1b\x24\x42\x24\x22\x24\x24\x24\x26\x24\x28\x24\x2a\x1b\x28\x42"
18
+ end
19
+ end
20
+
6
21
  def test_initialize
7
22
  ch = Book::Chapter.new(:book, :number, :name, '/foo/bar', :io)
8
23
  assert_equal :book, ch.book
@@ -67,6 +82,60 @@ class ChapterTest < Test::Unit::TestCase
67
82
  io = StringIO.new("=1\n=2\n")
68
83
  ch = Book::Chapter.new(book, nil, nil, nil, io)
69
84
  assert_equal '1', ch.title
85
+
86
+
87
+ [
88
+ ['EUC', @eucjp_str],
89
+ ['SJIS', @sjis_str],
90
+ # ['JIS', @jis_str],
91
+ ['XYZ', @eucjp_str],
92
+ ].each do |enc, instr|
93
+ io = StringIO.new("= #{instr}\n")
94
+ ch = Book::Chapter.new(book, nil, nil, nil, io)
95
+ book.config['inencoding'] = enc
96
+ assert_equal @utf8_str, ch.title
97
+ assert_equal @utf8_str, ch.instance_eval { @title }
98
+ end
99
+ end
100
+
101
+ def test_content
102
+ [
103
+ ['EUC', @eucjp_str],
104
+ ['SJIS', @sjis_str],
105
+ ['JIS', @jis_str],
106
+ ['XYZ', @eucjp_str],
107
+ ].each do |enc, instr|
108
+ tf = Tempfile.new('chapter_test')
109
+ book = Book::Base.new(nil)
110
+ begin
111
+ tf.print instr
112
+ tf.close
113
+
114
+ ch = Book::Chapter.new(book, nil, nil, tf.path)
115
+ book.config['inencoding'] = enc
116
+ assert_equal @utf8_str, ch.content
117
+ assert_equal @utf8_str, ch.instance_eval { @content }
118
+ ensure
119
+ tf.close(true)
120
+ end
121
+
122
+ tf1 = Tempfile.new('chapter_test1')
123
+ tf2 = Tempfile.new('chapter_test2')
124
+ begin
125
+ tf1.puts instr
126
+ tf1.puts instr
127
+ tf1.close
128
+ tf2.puts instr
129
+ tf1.close
130
+
131
+ ch = Book::Chapter.new(book, nil, nil, tf1.path, tf2)
132
+ book.config['inencoding'] = enc
133
+ assert_equal "#{@utf8_str}\n#{@utf8_str}\n", ch.content # XXX: OK?
134
+ ensure
135
+ tf1.close(true)
136
+ tf2.close(true)
137
+ end
138
+ end
70
139
  end
71
140
 
72
141
  def test_lines
@@ -207,6 +276,7 @@ E
207
276
 
208
277
  def test_column_index
209
278
  book = Book::Base.new(nil)
279
+ book.config["inencoding"] = "utf-8"
210
280
  do_test_index(<<E, Book::ColumnIndex, :column_index, :column, :propagate => false)
211
281
  = dummy1
212
282
  ===[column]{abc} aaaa
@@ -33,7 +33,7 @@ class PartTest < Test::Unit::TestCase
33
33
  assert_equal 0, part.volume.lines
34
34
 
35
35
  chs = []
36
- tfs = [] ## prevent from removing Tempfile
36
+ tfs = [] ## prevent from removing Tempfile
37
37
  Tempfile.open('part_test') do |o|
38
38
  o.print "12345"
39
39
  chs << Book::Chapter.new(book, nil, nil, o.path)
data/test/test_builder.rb CHANGED
@@ -44,16 +44,6 @@ class BuidlerTest < Test::Unit::TestCase
44
44
  assert_equal '', b.result
45
45
  end
46
46
 
47
- def test_print_and_puts
48
- b = Builder.new
49
- assert_raises(NoMethodError) do # XXX: OK?
50
- b.print ""
51
- end
52
- assert_raises(NoMethodError) do # XXX: OK?
53
- b.puts ""
54
- end
55
- end
56
-
57
47
  def test_not_implemented_methods
58
48
  ex = NoMethodError # XXX: OK?
59
49
  [
@@ -70,24 +60,12 @@ class BuidlerTest < Test::Unit::TestCase
70
60
  end
71
61
  end
72
62
 
73
- def test_compile_inline
74
- text = "abc"
75
- assert_equal [:text, text], @b.compile_inline(text)
76
- end
77
-
78
- def test_inline_ruby
79
- def @b.compile_ruby(base,ruby)
80
- [base,ruby]
81
- end
82
- str = @b.inline_ruby("foo,bar")
83
- assert_equal str, ["foo","bar"]
84
- str = @b.inline_ruby("foo\\,\\,,\\,bar,buz")
85
- assert_equal str, ["foo,,",",bar,buz"]
86
- end
87
-
88
- def test_compile_inline_backslash
89
- text = "abc\\d\\#a"
90
- assert_equal [:text, text], @b.compile_inline(text)
63
+ def test_convert_outencoding
64
+ book = ReVIEW::Book::Base.new(nil)
65
+ book.config = {'outencoding' => "EUC"}
66
+ b = Builder.new
67
+ ret = b.convert_outencoding("a", book.config["outencoding"])
68
+ assert_equal "a", ret
91
69
  end
92
70
 
93
71
  class XBuilder < Builder
@@ -4,43 +4,88 @@ require 'test_helper'
4
4
  require 'review/compiler'
5
5
  require 'review/book'
6
6
  require 'review/latexbuilder'
7
+ require 'review/htmlbuilder'
7
8
 
8
9
  class CompilerTest < Test::Unit::TestCase
9
10
  include ReVIEW
10
11
 
11
12
  def setup
12
- @builder = LATEXBuilder.new()
13
- @c = Compiler.new(@builder)
13
+ @builder = HTMLBuilder.new()
14
+ @param = {
15
+ "secnolevel" => 2, # for IDGXMLBuilder, HTMLBuilder
16
+ "inencoding" => "UTF-8",
17
+ "outencoding" => "UTF-8",
18
+ "subdirmode" => nil,
19
+ "stylesheet" => nil, # for HTMLBuilder
20
+ }
21
+ ReVIEW.book.param = @param
22
+ @compiler = ReVIEW::Compiler.new(@builder)
23
+ @chapter = Book::Chapter.new(Book::Base.new(nil), 1, '-', nil, StringIO.new)
24
+ location = Location.new(nil, nil)
25
+ @builder.bind(@compiler, @chapter, location)
26
+
27
+ def @compiler.compile_command(name, args, lines, node)
28
+ args
29
+ end
30
+
14
31
  end
15
32
 
16
33
  def test_parse_args
17
- args = @c.__send__(:parse_args, "[foo][bar]")
18
- assert_equal ["foo","bar"], args
34
+ args = compile_blockelem("//dummy[foo][bar]\n", false)
35
+ assert_equal ["foo","bar"], args.parse_args(:doc,:doc)
19
36
  end
20
37
 
21
38
  def test_parse_args_with_brace1
22
- args = @c.__send__(:parse_args, "[fo[\\][\\]o][bar]")
23
- assert_equal ["fo[][]o","bar"], args
39
+ args = compile_blockelem("//dummy[fo[\\][\\]o][bar]", false)
40
+ assert_equal ["fo[][]o","bar"], args.parse_args(:doc, :doc)
24
41
  end
25
42
 
26
43
  def test_parse_args_with_brace2
27
- args = @c.__send__(:parse_args, "[f\\]o\\]o][bar]")
28
- assert_equal ["f]o]o","bar"], args
44
+ args = compile_blockelem("//dummy[f\\]o\\]o][bar]", false)
45
+ assert_equal ["f]o]o","bar"], args.parse_args(:doc, :doc)
29
46
  end
30
47
 
31
48
  def test_parse_args_with_backslash
32
- args = @c.__send__(:parse_args, "[foo][bar\\buz]")
33
- assert_equal ["foo","bar\\buz"], args
49
+ args = compile_blockelem("//dummy[foo][bar\\buz]", false)
50
+ assert_equal ["foo","bar\\buz"], args.parse_args(:doc, :doc)
34
51
  end
35
52
 
36
53
  def test_parse_args_with_backslash2
37
- args = @c.__send__(:parse_args, "[foo][bar\\#\\[\\!]")
38
- assert_equal ["foo","bar\\#\\[\\!"], args
54
+ args = compile_blockelem("//dummy[foo][bar\\#\\[\\!]", false)
55
+ assert_equal ["foo","bar\\#\\[\\!"], args.parse_args(:doc, :doc)
39
56
  end
40
57
 
41
58
  def test_parse_args_with_backslash3
42
- args = @c.__send__(:parse_args, "[foo][bar\\\\buz]")
43
- assert_equal ["foo","bar\\buz"], args
59
+ args = compile_blockelem("//dummy[foo][bar\\\\buz]", false)
60
+ assert_equal ["foo","bar\\buz"], args.parse_args(:doc, :doc)
61
+ end
62
+
63
+ def test_compile_inline
64
+ def @compiler.inline_ruby(*args)
65
+ return args
66
+ end
67
+ args = compile_inline("@<ruby>{abc}",false)
68
+ assert_equal "abc", args.content[0].content.to_doc
69
+ end
70
+
71
+ def test_inline_ruby
72
+ # def @compiler.inline_ruby(*args)
73
+ # return args
74
+ # end
75
+ args = compile_inline("@<ruby>{foo,bar}",false)
76
+ assert_equal "foo", args.content[0].content[0].to_doc
77
+ assert_equal "bar", args.content[0].content[1].to_doc
78
+ args = compile_inline("@<ruby>{foo\\,\\,,\\,bar\\,buz}", false)
79
+ assert_equal "foo,,", args.content[0].content[0].to_doc
80
+ assert_equal ",bar,buz", args.content[0].content[1].to_doc
81
+ end
82
+
83
+ def test_compile_inline_backslash
84
+ def @compiler.inline_dummy(*args)
85
+ return args
86
+ end
87
+ args = compile_inline("@<dummy>{abc\\d\\#a}", false)
88
+ assert_equal "abc\\d\\#a", args.content[0].content.to_doc
44
89
  end
45
90
  end
46
91
 
data/test/test_helper.rb CHANGED
@@ -1,6 +1,53 @@
1
1
  $LOAD_PATH.unshift(File.dirname(__FILE__) + '/../lib/')
2
2
  require 'test/unit'
3
3
 
4
+ def compile_document(str, force_to_s=true)
5
+ @compiler.setup_parser(str)
6
+ @compiler.parse("Document")
7
+ if force_to_s
8
+ @compiler.result.to_doc
9
+ else
10
+ @compiler.result
11
+ end
12
+ end
13
+
14
+ def compile_block(str, force_to_s=true)
15
+ @compiler.setup_parser(str)
16
+ @compiler.parse("Document")
17
+ if force_to_s
18
+ @compiler.result.to_doc
19
+ else
20
+ @compiler.result
21
+ end
22
+ end
23
+
24
+ def compile_inline(str, force_to_s=true)
25
+ @compiler.setup_parser(str)
26
+ @compiler.parse("Paragraph")
27
+ if force_to_s
28
+ ## @compiler.result.map(&:to_doc).join
29
+ @compiler.result.to_doc
30
+ else
31
+ @compiler.result
32
+ end
33
+ end
34
+
35
+ def compile_blockelem(str, force_to_s=true)
36
+ @compiler.setup_parser(str)
37
+ @compiler.parse("BlockElement")
38
+ if force_to_s
39
+ @compiler.result.to_doc
40
+ else
41
+ @compiler.result
42
+ end
43
+ end
44
+
45
+ def compile_headline(str)
46
+ @compiler.setup_parser(str)
47
+ @compiler.parse("Headline")
48
+ @compiler.result.to_doc
49
+ end
50
+
4
51
  def touch_file(path)
5
52
  File.open(path, "w").close
6
53
  path
@@ -16,10 +63,6 @@ def prepare_samplebook(srcdir)
16
63
  YAML.load(File.open(srcdir + "/config.yml"))
17
64
  end
18
65
 
19
- def compile_inline(text)
20
- @builder.compile_inline(text)
21
- end
22
-
23
66
  def compile_block(text)
24
67
  method_name = "compile_block_#{@builder.target_name}"
25
68
  if !self.respond_to?(method_name, true)
@@ -14,9 +14,10 @@ class HTMLBuidlerTest < Test::Unit::TestCase
14
14
  @builder = HTMLBuilder.new()
15
15
  @config = ReVIEW::Configure.values
16
16
  @config.merge!({
17
- "secnolevel" => 2, # for IDGXMLBuilder, HTMLBuilder
18
- "stylesheet" => nil, # for HTMLBuilder
19
- "htmlext" => "html",
17
+ "secnolevel" => 2, # for IDGXMLBuilder, HTMLBuilder
18
+ "inencoding" => "UTF-8",
19
+ "outencoding" => "UTF-8",
20
+ "stylesheet" => nil, # for HTMLBuilder
20
21
  })
21
22
  @book = Book::Base.new(".")
22
23
  @book.config = @config
@@ -58,7 +59,7 @@ class HTMLBuidlerTest < Test::Unit::TestCase
58
59
  end
59
60
  end
60
61
  actual = compile_block("=={test} this is test.\n")
61
- assert_equal %Q|\n<h2 id="test"><a id="h1-1"></a><span class="secno">1.1 </span>this is test.</h2>\n|, actual
62
+ assert_equal %Q|<h2 id="test"><a id="h1-1"></a><span class="secno">1.1 </span>this is test.</h2>\n|, actual
62
63
  end
63
64
 
64
65
  def test_headline_level1_postdef_roman
@@ -80,7 +81,7 @@ class HTMLBuidlerTest < Test::Unit::TestCase
80
81
  end
81
82
  end
82
83
  actual = compile_block("=={test} this is test.\n")
83
- assert_equal %Q|\n<h2 id="test"><a id="hI-1"></a><span class="secno">I.1 </span>this is test.</h2>\n|, actual
84
+ assert_equal %Q|<h2 id="test"><a id="hI-1"></a><span class="secno">I.1 </span>this is test.</h2>\n|, actual
84
85
  end
85
86
 
86
87
  def test_headline_level1_postdef_alpha
@@ -102,7 +103,7 @@ class HTMLBuidlerTest < Test::Unit::TestCase
102
103
  end
103
104
  end
104
105
  actual = compile_block("=={test} this is test.\n")
105
- assert_equal %Q|\n<h2 id="test"><a id="hA-1"></a><span class="secno">A.1 </span>this is test.</h2>\n|, actual
106
+ assert_equal %Q|<h2 id="test"><a id="hA-1"></a><span class="secno">A.1 </span>this is test.</h2>\n|, actual
106
107
  end
107
108
 
108
109
  def test_headline_level1_without_secno
@@ -123,18 +124,18 @@ class HTMLBuidlerTest < Test::Unit::TestCase
123
124
 
124
125
  def test_headline_level2
125
126
  actual = compile_block("=={test} this is test.\n")
126
- assert_equal %Q|\n<h2 id="test"><a id="h1-1"></a><span class="secno">1.1 </span>this is test.</h2>\n|, actual
127
+ assert_equal %Q|<h2 id="test"><a id="h1-1"></a><span class="secno">1.1 </span>this is test.</h2>\n|, actual
127
128
  end
128
129
 
129
130
  def test_headline_level3
130
131
  actual = compile_block("==={test} this is test.\n")
131
- assert_equal %Q|\n<h3 id="test"><a id="h1-0-1"></a>this is test.</h3>\n|, actual
132
+ assert_equal %Q|<h3 id="test"><a id="h1-0-1"></a>this is test.</h3>\n|, actual
132
133
  end
133
134
 
134
135
  def test_headline_level3_with_secno
135
136
  @book.config["secnolevel"] = 3
136
137
  actual = compile_block("==={test} this is test.\n")
137
- assert_equal %Q|\n<h3 id="test"><a id="h1-0-1"></a><span class="secno">1.0.1 </span>this is test.</h3>\n|, actual
138
+ assert_equal %Q|<h3 id="test"><a id="h1-0-1"></a><span class="secno">1.0.1 </span>this is test.</h3>\n|, actual
138
139
  end
139
140
 
140
141
  def test_label
@@ -319,7 +320,7 @@ class HTMLBuidlerTest < Test::Unit::TestCase
319
320
 
320
321
  def test_quote
321
322
  actual = compile_block("//quote{\nfoo\nbar\n\nbuz\n//}\n")
322
- assert_equal %Q|<blockquote><p>foobar</p>\n<p>buz</p></blockquote>\n|, actual
323
+ assert_equal %Q|<blockquote><p>foobar</p>\n<p>buz</p>\n</blockquote>\n|, actual
323
324
  end
324
325
 
325
326
  def test_memo
@@ -479,7 +480,7 @@ class HTMLBuidlerTest < Test::Unit::TestCase
479
480
  @book.config["pygments"] = true
480
481
  actual = compile_block("//list[samplelist][this is @<b>{test}<&>_]{\ntest1\ntest1.5\n\ntest@<i>{2}\n//}\n")
481
482
 
482
- 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&lt;i&gt;2&lt;/i&gt;\n</pre>\n</div>\n|, actual
483
+ 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&lt;i&gt;2&lt;/i&gt;</pre>\n</div>\n|, actual
483
484
  end
484
485
 
485
486
  def test_list_pygments_lang
@@ -499,7 +500,7 @@ class HTMLBuidlerTest < Test::Unit::TestCase
499
500
  %Q|<pre class=\"list\"><span style=\"color: #008000; font-weight: bold\">def</span> <span style=\"color: #0000FF\">foo</span>(a1, a2<span style=\"color: #666666\">=</span><span style=\"color: #19177C\">:test</span>)\n| +
500
501
  %Q| (<span style=\"color: #666666\">1.</span>.<span style=\"color: #666666\">3</span>)<span style=\"color: #666666\">.</span>times{<span style=\"color: #666666\">\|</span>i<span style=\"color: #666666\">\|</span> a<span style=\"color: #666666\">.</span>include?(<span style=\"color: #19177C\">:foo</span>)}\n| +
501
502
  %Q| <span style=\"color: #008000; font-weight: bold\">return</span> <span style=\"color: #008000\">true</span>\n| +
502
- %Q|<span style=\"color: #008000; font-weight: bold\">end</span>\n| +
503
+ %Q|<span style=\"color: #008000; font-weight: bold\">end</span>| +
503
504
  %Q|</pre>\n| +
504
505
  %Q|</div>\n|, actual
505
506
  end
@@ -517,36 +518,7 @@ class HTMLBuidlerTest < Test::Unit::TestCase
517
518
  @book.config["pygments"] = true
518
519
  actual = compile_block("//list[samplelist][this is @<b>{test}<&>_][]{\ndef foo(a1, a2=:test)\n (1..3).times{|i| a.include?(:foo)}\n return true\nend\n\n//}\n")
519
520
 
520
- assert_equal "<div class=\"caption-code\">\n<p class=\"caption\">リスト1.1: this is <b>test</b>&lt;&amp;&gt;_</p>\n<pre class=\"list\">def foo(a1, a2=:test)\n (1..3).times{|i| a.include?(:foo)}\n return true\nend\n</pre>\n</div>\n", actual
521
- end
522
-
523
- def test_listnum
524
- def @chapter.list(id)
525
- Book::ListIndex::Item.new("samplelist",1)
526
- end
527
-
528
- @book.config["highlight"] = false
529
- actual = compile_block(<<-EOS)
530
- //listnum[samplelist][this is @<b>{test}<&>_][ruby]{
531
- def foo(a1, a2=:test)
532
- (1..3).times{|i| a.include?(:foo)}
533
- return true
534
- end
535
- //}
536
- EOS
537
-
538
- expected =<<-EOS
539
- <div class="code">
540
- <p class="caption">リスト1.1: this is <b>test</b>&lt;&amp;&gt;_</p>
541
- <pre class="list"> 1: def foo(a1, a2=:test)
542
- 2: (1..3).times{|i| a.include?(:foo)}
543
- 3: return true
544
- 4: end
545
- </pre>
546
- </div>
547
- EOS
548
-
549
- assert_equal expected, actual
521
+ assert_equal "<div class=\"caption-code\">\n<p class=\"caption\">リスト1.1: this is <b>test</b>&lt;&amp;&gt;_</p>\n<pre class=\"list\">def foo(a1, a2=:test)\n (1..3).times{|i| a.include?(:foo)}\n return true\nend</pre>\n</div>\n", actual
550
522
  end
551
523
 
552
524
  def test_listnum_pygments_lang
@@ -562,7 +534,7 @@ EOS
562
534
  @book.config["pygments"] = true
563
535
  actual = compile_block("//listnum[samplelist][this is @<b>{test}<&>_][ruby]{\ndef foo(a1, a2=:test)\n (1..3).times{|i| a.include?(:foo)}\n return true\nend\n\n//}\n")
564
536
 
565
- assert_equal "<div class=\"code\">\n<p class=\"caption\">リスト1.1: this is <b>test</b>&lt;&amp;&gt;_</p>\n<div class=\"highlight\" style=\"background: #f8f8f8\"><pre style=\"line-height: 125%\"><span style=\"background-color: #f0f0f0; padding: 0 5px 0 5px\">1</span> <span style=\"color: #008000; font-weight: bold\">def</span> <span style=\"color: #0000FF\">foo</span>(a1, a2<span style=\"color: #666666\">=</span><span style=\"color: #19177C\">:test</span>)\n<span style=\"background-color: #f0f0f0; padding: 0 5px 0 5px\">2</span> (<span style=\"color: #666666\">1.</span>.<span style=\"color: #666666\">3</span>)<span style=\"color: #666666\">.</span>times{<span style=\"color: #666666\">|</span>i<span style=\"color: #666666\">|</span> a<span style=\"color: #666666\">.</span>include?(<span style=\"color: #19177C\">:foo</span>)}\n<span style=\"background-color: #f0f0f0; padding: 0 5px 0 5px\">3</span> <span style=\"color: #008000; font-weight: bold\">return</span> <span style=\"color: #008000\">true</span>\n<span style=\"background-color: #f0f0f0; padding: 0 5px 0 5px\">4</span> <span style=\"color: #008000; font-weight: bold\">end</span>\n</pre></div>\n</div>\n", actual
537
+ assert_equal "<div class=\"code\">\n<p class=\"caption\">リスト1.1: this is <b>test</b>&lt;&amp;&gt;_</p>\n<div class=\"highlight\" style=\"background: #f8f8f8\"><pre style=\"line-height: 125%\"><span style=\"background-color: #f0f0f0; padding: 0 5px 0 5px\">1</span> <span style=\"color: #008000; font-weight: bold\">def</span> <span style=\"color: #0000FF\">foo</span>(a1, a2<span style=\"color: #666666\">=</span><span style=\"color: #19177C\">:test</span>)\n<span style=\"background-color: #f0f0f0; padding: 0 5px 0 5px\">2</span> (<span style=\"color: #666666\">1.</span>.<span style=\"color: #666666\">3</span>)<span style=\"color: #666666\">.</span>times{<span style=\"color: #666666\">|</span>i<span style=\"color: #666666\">|</span> a<span style=\"color: #666666\">.</span>include?(<span style=\"color: #19177C\">:foo</span>)}\n<span style=\"background-color: #f0f0f0; padding: 0 5px 0 5px\">3</span> <span style=\"color: #008000; font-weight: bold\">return</span> <span style=\"color: #008000\">true</span>\n<span style=\"background-color: #f0f0f0; padding: 0 5px 0 5px\">4</span> <span style=\"color: #008000; font-weight: bold\">end</span>\n</pre></div></div>", actual
566
538
  end
567
539
 
568
540
  def test_listnum_pygments_lang_without_lang
@@ -580,7 +552,7 @@ EOS
580
552
  @book.config["highlight"]["lang"] = "ruby"
581
553
  actual = compile_block("//listnum[samplelist][this is @<b>{test}<&>_]{\ndef foo(a1, a2=:test)\n (1..3).times{|i| a.include?(:foo)}\n return true\nend\n\n//}\n")
582
554
 
583
- assert_equal "<div class=\"code\">\n<p class=\"caption\">リスト1.1: this is <b>test</b>&lt;&amp;&gt;_</p>\n<div class=\"highlight\" style=\"background: #f8f8f8\"><pre style=\"line-height: 125%\"><span style=\"background-color: #f0f0f0; padding: 0 5px 0 5px\">1</span> <span style=\"color: #008000; font-weight: bold\">def</span> <span style=\"color: #0000FF\">foo</span>(a1, a2<span style=\"color: #666666\">=</span><span style=\"color: #19177C\">:test</span>)\n<span style=\"background-color: #f0f0f0; padding: 0 5px 0 5px\">2</span> (<span style=\"color: #666666\">1.</span>.<span style=\"color: #666666\">3</span>)<span style=\"color: #666666\">.</span>times{<span style=\"color: #666666\">|</span>i<span style=\"color: #666666\">|</span> a<span style=\"color: #666666\">.</span>include?(<span style=\"color: #19177C\">:foo</span>)}\n<span style=\"background-color: #f0f0f0; padding: 0 5px 0 5px\">3</span> <span style=\"color: #008000; font-weight: bold\">return</span> <span style=\"color: #008000\">true</span>\n<span style=\"background-color: #f0f0f0; padding: 0 5px 0 5px\">4</span> <span style=\"color: #008000; font-weight: bold\">end</span>\n</pre></div>\n</div>\n", actual
555
+ assert_equal "<div class=\"code\">\n<p class=\"caption\">リスト1.1: this is <b>test</b>&lt;&amp;&gt;_</p>\n<div class=\"highlight\" style=\"background: #f8f8f8\"><pre style=\"line-height: 125%\"><span style=\"background-color: #f0f0f0; padding: 0 5px 0 5px\">1</span> <span style=\"color: #008000; font-weight: bold\">def</span> <span style=\"color: #0000FF\">foo</span>(a1, a2<span style=\"color: #666666\">=</span><span style=\"color: #19177C\">:test</span>)\n<span style=\"background-color: #f0f0f0; padding: 0 5px 0 5px\">2</span> (<span style=\"color: #666666\">1.</span>.<span style=\"color: #666666\">3</span>)<span style=\"color: #666666\">.</span>times{<span style=\"color: #666666\">|</span>i<span style=\"color: #666666\">|</span> a<span style=\"color: #666666\">.</span>include?(<span style=\"color: #19177C\">:foo</span>)}\n<span style=\"background-color: #f0f0f0; padding: 0 5px 0 5px\">3</span> <span style=\"color: #008000; font-weight: bold\">return</span> <span style=\"color: #008000\">true</span>\n<span style=\"background-color: #f0f0f0; padding: 0 5px 0 5px\">4</span> <span style=\"color: #008000; font-weight: bold\">end</span>\n</pre></div></div>", actual
584
556
  end
585
557
 
586
558
 
@@ -598,7 +570,7 @@ EOS
598
570
  end
599
571
  @book.config["pygments"] = true
600
572
  actual = compile_block("//emlist[][sql]{\nSELECT COUNT(*) FROM tests WHERE tests.no > 10 AND test.name LIKE 'ABC%'\n//}\n")
601
- assert_equal "<div class=\"emlist-code\">\n<pre class=\"emlist\"><span style=\"color: #008000; font-weight: bold\">SELECT</span> <span style=\"color: #008000; font-weight: bold\">COUNT</span>(<span style=\"color: #666666\">*</span>) <span style=\"color: #008000; font-weight: bold\">FROM</span> tests <span style=\"color: #008000; font-weight: bold\">WHERE</span> tests.<span style=\"color: #008000; font-weight: bold\">no</span> <span style=\"color: #666666\">&gt;</span> <span style=\"color: #666666\">10</span> <span style=\"color: #008000; font-weight: bold\">AND</span> test.name <span style=\"color: #008000; font-weight: bold\">LIKE</span> <span style=\"color: #BA2121\">&#39;ABC%&#39;</span>\n</pre>\n</div>\n", actual
573
+ assert_equal "<div class=\"emlist-code\">\n<pre class=\"emlist\"><span style=\"color: #008000; font-weight: bold\">SELECT</span> <span style=\"color: #008000; font-weight: bold\">COUNT</span>(<span style=\"color: #666666\">*</span>) <span style=\"color: #008000; font-weight: bold\">FROM</span> tests <span style=\"color: #008000; font-weight: bold\">WHERE</span> tests.<span style=\"color: #008000; font-weight: bold\">no</span> <span style=\"color: #666666\">&gt;</span> <span style=\"color: #666666\">10</span> <span style=\"color: #008000; font-weight: bold\">AND</span> test.name <span style=\"color: #008000; font-weight: bold\">LIKE</span> <span style=\"color: #BA2121\">&#39;ABC%&#39;</span></pre>\n</div>\n", actual
602
574
  end
603
575
 
604
576
  def test_emlist_caption
@@ -611,19 +583,6 @@ EOS
611
583
  assert_equal %Q|<div class="emlist-code">\n<pre class="emlist"> lineA\n lineB\n lineC\n</pre>\n</div>\n|, actual
612
584
  end
613
585
 
614
- def test_emlistnum
615
- @book.config["highlight"] = false
616
- actual = compile_block("//emlistnum{\nlineA\nlineB\n//}\n")
617
- expected =<<-EOS
618
- <div class="emlistnum-code">
619
- <pre class="emlist"> 1: lineA
620
- 2: lineB
621
- </pre>
622
- </div>
623
- EOS
624
- assert_equal expected, actual
625
- end
626
-
627
586
  def test_emlist_with_4tab
628
587
  @config["tabwidth"] = 4
629
588
  actual = compile_block("//emlist{\n\tlineA\n\t\tlineB\n\tlineC\n//}\n")
@@ -643,7 +602,7 @@ EOS
643
602
  end
644
603
  @book.config["pygments"] = true
645
604
  actual = compile_block("//cmd{\nlineA\nlineB\n//}\n")
646
- assert_equal "<div class=\"cmd-code\">\n<pre class=\"cmd\"><span style=\"color: #888888\">lineA</span>\n<span style=\"color: #888888\">lineB</span>\n</pre>\n</div>\n", actual
605
+ assert_equal "<div class=\"cmd-code\">\n<pre class=\"cmd\"><span style=\"color: #888888\">lineA</span>\n<span style=\"color: #888888\">lineB</span></pre>\n</div>\n", actual
647
606
  end
648
607
 
649
608
  def test_cmd_caption
@@ -667,22 +626,13 @@ EOS
667
626
  assert_equal %Q|<a href="bib.html#bib-id_sample_3Dbib">[1]</a>|, compile_inline("@<bib>{sample=bib}")
668
627
  end
669
628
 
670
- def test_bib_htmlext
671
- def @chapter.bibpaper(id)
672
- Book::BibpaperIndex::Item.new("samplebib",1,"sample bib")
673
- end
674
-
675
- @config["htmlext"] = "xhtml"
676
- assert_equal %Q|<a href="bib.xhtml#bib-samplebib">[1]</a>|, compile_inline("@<bib>{samplebib}")
677
- end
678
-
679
629
  def test_bibpaper
680
630
  def @chapter.bibpaper(id)
681
631
  Book::BibpaperIndex::Item.new("samplebib",1,"sample bib")
682
632
  end
683
633
 
684
634
  actual = compile_block("//bibpaper[samplebib][sample bib @<b>{bold}]{\na\nb\n//}\n")
685
- assert_equal %Q|<div class=\"bibpaper\">\n<a id=\"bib-samplebib\">[1]</a> sample bib <b>bold</b>\n<p>ab</p></div>\n|, actual
635
+ assert_equal %Q|<div class=\"bibpaper\">\n<a id=\"bib-samplebib\">[1]</a> sample bib <b>bold</b>\n<p>ab</p>\n</div>\n|, actual
686
636
  end
687
637
 
688
638
  def test_bibpaper_normalized
@@ -691,7 +641,7 @@ EOS
691
641
  end
692
642
 
693
643
  actual = compile_block("//bibpaper[sample=bib][sample bib @<b>{bold}]{\na\nb\n//}\n")
694
- assert_equal %Q|<div class=\"bibpaper\">\n<a id=\"bib-id_sample_3Dbib\">[1]</a> sample bib <b>bold</b>\n<p>ab</p></div>\n|, actual
644
+ assert_equal %Q|<div class=\"bibpaper\">\n<a id=\"bib-id_sample_3Dbib\">[1]</a> sample bib <b>bold</b>\n<p>ab</p>\n</div>\n|, actual
695
645
  end
696
646
 
697
647
  def test_bibpaper_with_anchor
@@ -700,7 +650,7 @@ EOS
700
650
  end
701
651
 
702
652
  actual = compile_block("//bibpaper[samplebib][sample bib @<href>{http://example.jp}]{\na\nb\n//}\n")
703
- 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|, actual
653
+ 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>\n</div>\n|, actual
704
654
  end
705
655
 
706
656
  def column_helper(review)
@@ -748,7 +698,6 @@ EOS
748
698
  <h3><a id="column-1"></a>test</h3>
749
699
  <p>inside column</p>
750
700
  </div>
751
-
752
701
  <h3><a id="h1-0-1"></a>next level</h3>
753
702
  EOS
754
703
 
@@ -784,7 +733,6 @@ EOS
784
733
  <h3 id="foo"><a id="column-1"></a>test</h3>
785
734
  <p>inside column</p>
786
735
  </div>
787
-
788
736
  <h3><a id="h1-0-1"></a>next level</h3>
789
737
  <p>this is コラム「test」.</p>
790
738
  EOS
@@ -941,6 +889,70 @@ EOS
941
889
  assert_equal expected, actual
942
890
  end
943
891
 
892
+ def test_ul_in_note
893
+ src =<<-EOS
894
+ //note{
895
+
896
+ aaaa
897
+ bbb
898
+
899
+ * A
900
+ * B
901
+ //}
902
+ EOS
903
+
904
+ expected =<<-EOS
905
+ <div class=\"note\">
906
+ <p>aaaabbb</p>
907
+ <ul>
908
+ <li>A</li>
909
+ <li>B</li>
910
+ </ul>
911
+ </div>
912
+ EOS
913
+ actual = compile_block(src)
914
+ assert_equal expected, actual
915
+ end
916
+
917
+ def test_ul_in_note_and_emlist
918
+ src =<<-EOS
919
+ //note{
920
+
921
+ aaaa
922
+ bbb
923
+
924
+ //emlist{
925
+ abc
926
+ ddd
927
+ * A
928
+ * B
929
+ //}
930
+
931
+ * A
932
+ * B
933
+ //}
934
+ EOS
935
+
936
+ expected =<<-EOS
937
+ <div class=\"note\">
938
+ <p>aaaabbb</p>
939
+ <div class="emlist-code">
940
+ <pre class="emlist">abc
941
+ ddd
942
+ * A
943
+ * B
944
+ </pre>
945
+ </div>
946
+ <ul>
947
+ <li>A</li>
948
+ <li>B</li>
949
+ </ul>
950
+ </div>
951
+ EOS
952
+ actual = compile_block(src)
953
+ assert_equal expected, actual
954
+ end
955
+
944
956
  def test_ol
945
957
  src =<<-EOS
946
958
  3. AAA
@@ -1030,4 +1042,23 @@ EOS
1030
1042
  EOS
1031
1043
  assert_equal expected, actual
1032
1044
  end
1045
+
1046
+
1047
+ ## inline nesting tests
1048
+ def test_href_nest
1049
+ actual = compile_inline("@<href>{http://github.com,@<b>{G}itHub}")
1050
+ assert_equal %Q|<a href="http://github.com" class="link"><b>G</b>itHub</a>|, actual
1051
+ end
1052
+
1053
+ def test_inline_tti_nest
1054
+ actual = compile_inline("test @<tt>{aa@<i>{inline test}bb} test2")
1055
+ assert_equal %Q|test <tt>aa<i>inline test</i>bb</tt> test2|, actual
1056
+ end
1057
+
1058
+ def test_inline_ttib_nest
1059
+ actual = compile_inline("test @<tt>{aa@<i>{inline @<b>{te}st}bb} test2")
1060
+ assert_equal %Q|test <tt>aa<i>inline <b>te</b>st</i>bb</tt> test2|, actual
1061
+ end
1062
+
1063
+
1033
1064
  end