review-peg 0.1.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.
- checksums.yaml +7 -0
- data/.gitignore +36 -0
- data/.rubocop.yml +47 -0
- data/.rubocop_todo.yml +605 -0
- data/.travis.yml +18 -0
- data/COPYING +515 -0
- data/ChangeLog +2449 -0
- data/Dockerfile +22 -0
- data/Gemfile +6 -0
- data/README.rdoc +81 -0
- data/Rakefile +51 -0
- data/bin/review-catalog-converter-peg +129 -0
- data/bin/review-check-peg +169 -0
- data/bin/review-checkdep-peg +63 -0
- data/bin/review-compile-peg +202 -0
- data/bin/review-epubmaker-legacy-peg +1024 -0
- data/bin/review-epubmaker-peg +44 -0
- data/bin/review-index-peg +110 -0
- data/bin/review-init-peg +151 -0
- data/bin/review-pdfmaker-peg +18 -0
- data/bin/review-preproc-peg +131 -0
- data/bin/review-validate-peg +51 -0
- data/bin/review-vol-peg +100 -0
- data/debian/README.Debian +12 -0
- data/debian/README.source +5 -0
- data/debian/changelog +5 -0
- data/debian/compat +1 -0
- data/debian/control +22 -0
- data/debian/copyright +62 -0
- data/debian/docs +6 -0
- data/debian/manpage.1.ex +59 -0
- data/debian/patches/path.diff +91 -0
- data/debian/patches/series +1 -0
- data/debian/review.install +13 -0
- data/debian/review.links +4 -0
- data/debian/rules +13 -0
- data/debian/source/format +1 -0
- data/doc/NEWS.ja.md +350 -0
- data/doc/NEWS.md +354 -0
- data/doc/catalog.ja.md +53 -0
- data/doc/catalog.md +52 -0
- data/doc/format.ja.md +734 -0
- data/doc/format.md +746 -0
- data/doc/format_idg.ja.md +203 -0
- data/doc/quickstart.ja.md +222 -0
- data/doc/quickstart.md +252 -0
- data/doc/ruby-uuid/README +11 -0
- data/doc/ruby-uuid/README.ja +34 -0
- data/doc/sample.css +108 -0
- data/doc/sample.yml +238 -0
- data/lib/epubmaker.rb +24 -0
- data/lib/epubmaker/content.rb +93 -0
- data/lib/epubmaker/epubcommon.rb +424 -0
- data/lib/epubmaker/epubv2.rb +139 -0
- data/lib/epubmaker/epubv3.rb +222 -0
- data/lib/epubmaker/producer.rb +330 -0
- data/lib/lineinput.rb +107 -0
- data/lib/review.rb +3 -0
- data/lib/review/book.rb +43 -0
- data/lib/review/book/base.rb +401 -0
- data/lib/review/book/chapter.rb +100 -0
- data/lib/review/book/compilable.rb +184 -0
- data/lib/review/book/image_finder.rb +71 -0
- data/lib/review/book/index.rb +413 -0
- data/lib/review/book/page_metric.rb +47 -0
- data/lib/review/book/part.rb +54 -0
- data/lib/review/book/volume.rb +67 -0
- data/lib/review/builder.rb +452 -0
- data/lib/review/catalog.rb +52 -0
- data/lib/review/compiler.rb +5183 -0
- data/lib/review/compiler/literals_1_9.kpeg +22 -0
- data/lib/review/compiler/literals_1_9.rb +435 -0
- data/lib/review/configure.rb +64 -0
- data/lib/review/epubbuilder.rb +18 -0
- data/lib/review/epubmaker.rb +480 -0
- data/lib/review/ewbbuilder.rb +381 -0
- data/lib/review/exception.rb +21 -0
- data/lib/review/extentions.rb +4 -0
- data/lib/review/extentions/array.rb +25 -0
- data/lib/review/extentions/object.rb +9 -0
- data/lib/review/extentions/string.rb +33 -0
- data/lib/review/htmlbuilder.rb +1166 -0
- data/lib/review/htmllayout.rb +41 -0
- data/lib/review/htmltoc.rb +45 -0
- data/lib/review/htmlutils.rb +90 -0
- data/lib/review/i18n.rb +96 -0
- data/lib/review/i18n.yml +169 -0
- data/lib/review/idgxmlbuilder.rb +1233 -0
- data/lib/review/inaobuilder.rb +357 -0
- data/lib/review/latexbuilder.rb +941 -0
- data/lib/review/latexindex.rb +35 -0
- data/lib/review/latexutils.rb +95 -0
- data/lib/review/layout.tex.erb +340 -0
- data/lib/review/lineinput.rb +17 -0
- data/lib/review/location.rb +24 -0
- data/lib/review/makerhelper.rb +67 -0
- data/lib/review/markdownbuilder.rb +339 -0
- data/lib/review/node.rb +288 -0
- data/lib/review/pdfmaker.rb +332 -0
- data/lib/review/preprocessor.rb +530 -0
- data/lib/review/review.kpeg +745 -0
- data/lib/review/sec_counter.rb +69 -0
- data/lib/review/template.rb +21 -0
- data/lib/review/textbuilder.rb +17 -0
- data/lib/review/textutils.rb +16 -0
- data/lib/review/tocparser.rb +348 -0
- data/lib/review/tocprinter.rb +205 -0
- data/lib/review/topbuilder.rb +796 -0
- data/lib/review/unfold.rb +138 -0
- data/lib/review/version.rb +3 -0
- data/lib/uuid.rb +312 -0
- data/review.gemspec +32 -0
- data/templates/html/layout-html5.html.erb +17 -0
- data/templates/html/layout-xhtml1.html.erb +20 -0
- data/templates/ncx/epubv2.ncx.erb +11 -0
- data/templates/opf/epubv2.opf.erb +21 -0
- data/templates/opf/epubv3.opf.erb +18 -0
- data/templates/xml/container.xml.erb +6 -0
- data/test/CHAPS +2 -0
- data/test/assets/test.xml.erb +3 -0
- data/test/assets/test_template.tex +255 -0
- data/test/assets/test_template_backmatter.tex +32 -0
- data/test/bib.re +13 -0
- data/test/book_test_helper.rb +35 -0
- data/test/sample-book/README.md +7 -0
- data/test/sample-book/src/Rakefile +58 -0
- data/test/sample-book/src/_cover.html +3 -0
- data/test/sample-book/src/catalog.yml +10 -0
- data/test/sample-book/src/ch01.re +71 -0
- data/test/sample-book/src/ch02.re +3 -0
- data/test/sample-book/src/config.yml +186 -0
- data/test/sample-book/src/images/ch01-imgsample.jpg +0 -0
- data/test/sample-book/src/images/cover.jpg +0 -0
- data/test/sample-book/src/preface.re +15 -0
- data/test/sample-book/src/sty/jumoline.sty +310 -0
- data/test/sample-book/src/sty/reviewmacro.sty +39 -0
- data/test/sample-book/src/style.css +251 -0
- data/test/sample-book/src/vendor/jumoline/README +29 -0
- data/test/sample-book/src/vendor/jumoline/jumoline.dtx +2988 -0
- data/test/sample-book/src/vendor/jumoline/jumoline.ins +6 -0
- data/test/test.re +43 -0
- data/test/test_book.rb +556 -0
- data/test/test_book_chapter.rb +280 -0
- data/test/test_book_part.rb +54 -0
- data/test/test_builder.rb +80 -0
- data/test/test_catalog.rb +119 -0
- data/test/test_catalog_converter_cmd.rb +73 -0
- data/test/test_compiler.rb +92 -0
- data/test/test_configure.rb +50 -0
- data/test/test_epub3maker.rb +529 -0
- data/test/test_epubmaker.rb +569 -0
- data/test/test_epubmaker_cmd.rb +40 -0
- data/test/test_helper.rb +92 -0
- data/test/test_htmlbuilder.rb +1114 -0
- data/test/test_htmltoc.rb +32 -0
- data/test/test_htmlutils.rb +50 -0
- data/test/test_i18n.rb +180 -0
- data/test/test_idgxmlbuilder.rb +608 -0
- data/test/test_image_finder.rb +82 -0
- data/test/test_inaobuilder.rb +245 -0
- data/test/test_index.rb +174 -0
- data/test/test_latexbuilder.rb +732 -0
- data/test/test_lineinput.rb +182 -0
- data/test/test_makerhelper.rb +66 -0
- data/test/test_markdownbuilder.rb +125 -0
- data/test/test_pdfmaker.rb +171 -0
- data/test/test_pdfmaker_cmd.rb +40 -0
- data/test/test_preprocessor.rb +23 -0
- data/test/test_review_ext.rb +31 -0
- data/test/test_template.rb +26 -0
- data/test/test_textutils.rb +32 -0
- data/test/test_topbuilder.rb +291 -0
- data/test/test_uuid.rb +157 -0
- metadata +357 -0
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
require 'test_helper'
|
|
4
|
+
require 'tmpdir'
|
|
5
|
+
require 'fileutils'
|
|
6
|
+
require 'yaml'
|
|
7
|
+
require 'rbconfig'
|
|
8
|
+
|
|
9
|
+
REVIEW_EPUBMAKER = File.expand_path('../bin/review-epubmaker-peg', File.dirname(__FILE__))
|
|
10
|
+
|
|
11
|
+
class EPUBMakerCmdTest < Test::Unit::TestCase
|
|
12
|
+
def setup
|
|
13
|
+
@tmpdir1 = Dir.mktmpdir
|
|
14
|
+
@tmpdir2 = Dir.mktmpdir
|
|
15
|
+
|
|
16
|
+
@old_rubylib = ENV['RUBYLIB']
|
|
17
|
+
ENV['RUBYLIB'] = File.expand_path('../lib', File.dirname(__FILE__))
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def teardown
|
|
21
|
+
FileUtils.rm_rf @tmpdir1
|
|
22
|
+
FileUtils.rm_rf @tmpdir2
|
|
23
|
+
ENV['RUBYLIB'] = @old_rubylib
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def test_epubmaker_cmd
|
|
27
|
+
if RUBY_VERSION !~ /^1.8/
|
|
28
|
+
config = prepare_samplebook(@tmpdir1)
|
|
29
|
+
builddir = @tmpdir1 + "/" + config['bookname'] + '-epub'
|
|
30
|
+
assert ! File.exist?(builddir)
|
|
31
|
+
|
|
32
|
+
ruby_cmd = File.join(RbConfig::CONFIG['bindir'], RbConfig::CONFIG['ruby_install_name'])
|
|
33
|
+
Dir.chdir(@tmpdir1) do
|
|
34
|
+
system("#{ruby_cmd} -S #{REVIEW_EPUBMAKER} config.yml 1>/dev/null 2>/dev/null")
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
assert File.exist?(builddir)
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
data/test/test_helper.rb
ADDED
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
$LOAD_PATH.unshift(File.dirname(__FILE__) + '/../lib/')
|
|
2
|
+
require 'test/unit'
|
|
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
|
+
|
|
51
|
+
def touch_file(path)
|
|
52
|
+
File.open(path, "w").close
|
|
53
|
+
path
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
def assets_dir
|
|
57
|
+
File.join(File.dirname(__FILE__), "assets")
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
def prepare_samplebook(srcdir)
|
|
61
|
+
samplebook_dir = File.expand_path("sample-book/src/", File.dirname(__FILE__))
|
|
62
|
+
FileUtils.cp_r(Dir.glob(samplebook_dir + "/*"), srcdir)
|
|
63
|
+
YAML.load(File.open(srcdir + "/config.yml"))
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
def compile_block(text)
|
|
67
|
+
method_name = "compile_block_#{@builder.target_name}"
|
|
68
|
+
if !self.respond_to?(method_name, true)
|
|
69
|
+
method_name = "compile_block_default"
|
|
70
|
+
end
|
|
71
|
+
self.__send__(method_name, text)
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
def compile_block_default(text)
|
|
75
|
+
@chapter.content = text
|
|
76
|
+
@compiler.compile(@chapter)
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
def compile_block_html(text)
|
|
80
|
+
@chapter.content = text
|
|
81
|
+
matched = @compiler.compile(@chapter).match(/<body>\n(.+)<\/body>/m)
|
|
82
|
+
if matched && matched.size > 1
|
|
83
|
+
matched[1]
|
|
84
|
+
else
|
|
85
|
+
""
|
|
86
|
+
end
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
def compile_block_idgxml(text)
|
|
90
|
+
@chapter.content = text
|
|
91
|
+
@compiler.compile(@chapter).gsub(/.*<doc xmlns:aid="http:\/\/ns.adobe.com\/AdobeInDesign\/4.0\/">/m,"").gsub(/<\/doc>\n/, "")
|
|
92
|
+
end
|
|
@@ -0,0 +1,1114 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
require 'test_helper'
|
|
4
|
+
require 'review/compiler'
|
|
5
|
+
require 'review/book'
|
|
6
|
+
require 'review/htmlbuilder'
|
|
7
|
+
require 'review/i18n'
|
|
8
|
+
|
|
9
|
+
class HTMLBuidlerTest < Test::Unit::TestCase
|
|
10
|
+
include ReVIEW
|
|
11
|
+
|
|
12
|
+
def setup
|
|
13
|
+
ReVIEW::I18n.setup
|
|
14
|
+
@builder = HTMLBuilder.new()
|
|
15
|
+
@config = ReVIEW::Configure.values
|
|
16
|
+
@config.merge!({
|
|
17
|
+
"secnolevel" => 2, # for IDGXMLBuilder, HTMLBuilder
|
|
18
|
+
"stylesheet" => nil, # for HTMLBuilder
|
|
19
|
+
"htmlext" => "html",
|
|
20
|
+
})
|
|
21
|
+
@book = Book::Base.new(".")
|
|
22
|
+
@book.config = @config
|
|
23
|
+
@compiler = ReVIEW::Compiler.new(@builder)
|
|
24
|
+
@chapter = Book::Chapter.new(@book, 1, '-', nil, StringIO.new)
|
|
25
|
+
location = Location.new(nil, nil)
|
|
26
|
+
@builder.bind(@compiler, @chapter, location)
|
|
27
|
+
I18n.setup("ja")
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def test_xmlns_ops_prefix_epub3
|
|
31
|
+
@book.config["epubversion"] = 3
|
|
32
|
+
assert_equal "epub", @builder.xmlns_ops_prefix
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def test_xmlns_ops_prefix_epub2
|
|
36
|
+
assert_equal "ops", @builder.xmlns_ops_prefix
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def test_headline_level1
|
|
40
|
+
actual = compile_block("={test} this is test.\n")
|
|
41
|
+
assert_equal %Q|<h1 id="test"><a id="h1"></a><span class="secno">第1章 </span>this is test.</h1>\n|, actual
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def test_headline_level1_postdef
|
|
45
|
+
@chapter.instance_eval do
|
|
46
|
+
def on_APPENDIX?
|
|
47
|
+
true
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
actual = compile_block("={test} this is test.\n")
|
|
51
|
+
assert_equal %Q|<h1 id="test"><a id="h1"></a><span class="secno">付録1 </span>this is test.</h1>\n|, actual
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
def test_headline_level2_postdef
|
|
55
|
+
@chapter.instance_eval do
|
|
56
|
+
def on_APPENDIX?
|
|
57
|
+
true
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
actual = compile_block("=={test} this is test.\n")
|
|
61
|
+
assert_equal %Q|<h2 id="test"><a id="h1-1"></a><span class="secno">1.1 </span>this is test.</h2>\n|, actual
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
def test_headline_level1_postdef_roman
|
|
65
|
+
@chapter.book.config["appendix_format"] = "roman"
|
|
66
|
+
@chapter.instance_eval do
|
|
67
|
+
def on_APPENDIX?
|
|
68
|
+
true
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
actual = compile_block("={test} this is test.\n")
|
|
72
|
+
assert_equal %Q|<h1 id="test"><a id="hI"></a><span class="secno">付録I </span>this is test.</h1>\n|, actual
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
def test_headline_level2_postdef_roman
|
|
76
|
+
@chapter.book.config["appendix_format"] = "roman"
|
|
77
|
+
@chapter.instance_eval do
|
|
78
|
+
def on_APPENDIX?
|
|
79
|
+
true
|
|
80
|
+
end
|
|
81
|
+
end
|
|
82
|
+
actual = compile_block("=={test} this is test.\n")
|
|
83
|
+
assert_equal %Q|<h2 id="test"><a id="hI-1"></a><span class="secno">I.1 </span>this is test.</h2>\n|, actual
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
def test_headline_level1_postdef_alpha
|
|
87
|
+
@chapter.book.config["appendix_format"] = "alpha"
|
|
88
|
+
@chapter.instance_eval do
|
|
89
|
+
def on_APPENDIX?
|
|
90
|
+
true
|
|
91
|
+
end
|
|
92
|
+
end
|
|
93
|
+
actual = compile_block("={test} this is test.\n")
|
|
94
|
+
assert_equal %Q|<h1 id="test"><a id="hA"></a><span class="secno">付録A </span>this is test.</h1>\n|, actual
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
def test_headline_level2_postdef_alpha
|
|
98
|
+
@chapter.book.config["appendix_format"] = "alpha"
|
|
99
|
+
@chapter.instance_eval do
|
|
100
|
+
def on_APPENDIX?
|
|
101
|
+
true
|
|
102
|
+
end
|
|
103
|
+
end
|
|
104
|
+
actual = compile_block("=={test} this is test.\n")
|
|
105
|
+
assert_equal %Q|<h2 id="test"><a id="hA-1"></a><span class="secno">A.1 </span>this is test.</h2>\n|, actual
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
def test_headline_level1_without_secno
|
|
109
|
+
@book.config["secnolevel"] = 0
|
|
110
|
+
actual = compile_block("={test} this is test.\n")
|
|
111
|
+
assert_equal %Q|<h1 id="test"><a id="h1"></a>this is test.</h1>\n|, actual
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
def test_headline_level1_with_tricky_id
|
|
115
|
+
actual = compile_block("={123 あ_;} this is test.\n")
|
|
116
|
+
assert_equal %Q|<h1 id="id_123-_E3_81_82___3B"><a id="h1"></a><span class="secno">第1章 </span>this is test.</h1>\n|, actual
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
def test_headline_level1_with_inlinetag
|
|
120
|
+
actual = compile_block("={test} this @<b>{is} test.<&\">\n")
|
|
121
|
+
assert_equal %Q|<h1 id="test"><a id="h1"></a><span class="secno">第1章 </span>this <b>is</b> test.<&"></h1>\n|, actual
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
def test_headline_level2
|
|
125
|
+
actual = compile_block("=={test} this is test.\n")
|
|
126
|
+
assert_equal %Q|<h2 id="test"><a id="h1-1"></a><span class="secno">1.1 </span>this is test.</h2>\n|, actual
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
def test_headline_level3
|
|
130
|
+
actual = compile_block("==={test} this is test.\n")
|
|
131
|
+
assert_equal %Q|<h3 id="test"><a id="h1-0-1"></a>this is test.</h3>\n|, actual
|
|
132
|
+
end
|
|
133
|
+
|
|
134
|
+
def test_headline_level3_with_secno
|
|
135
|
+
@book.config["secnolevel"] = 3
|
|
136
|
+
actual = compile_block("==={test} this is test.\n")
|
|
137
|
+
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
|
+
end
|
|
139
|
+
|
|
140
|
+
def test_label
|
|
141
|
+
actual = compile_block("//label[label_test]\n")
|
|
142
|
+
assert_equal %Q|<a id="label_test"></a>\n|, actual
|
|
143
|
+
end
|
|
144
|
+
|
|
145
|
+
def test_label_with_tricky_id
|
|
146
|
+
actual = compile_block("//label[123 あ_;]\n")
|
|
147
|
+
assert_equal %Q|<a id="id_123-_E3_81_82___3B"></a>\n|, actual
|
|
148
|
+
end
|
|
149
|
+
|
|
150
|
+
def test_href
|
|
151
|
+
actual = compile_inline("@<href>{http://github.com,GitHub}")
|
|
152
|
+
assert_equal %Q|<a href="http://github.com" class="link">GitHub</a>|, actual
|
|
153
|
+
end
|
|
154
|
+
|
|
155
|
+
def test_href_without_label
|
|
156
|
+
actual = compile_inline("@<href>{http://github.com}")
|
|
157
|
+
assert_equal %Q|<a href="http://github.com" class="link">http://github.com</a>|, actual
|
|
158
|
+
end
|
|
159
|
+
|
|
160
|
+
def test_inline_href
|
|
161
|
+
actual = compile_inline("@<href>{http://github.com,Git\\,Hub}")
|
|
162
|
+
assert_equal %Q|<a href="http://github.com" class="link">Git,Hub</a>|, actual
|
|
163
|
+
end
|
|
164
|
+
|
|
165
|
+
def test_inline_raw
|
|
166
|
+
actual = compile_inline("@<raw>{@<tt>{inline\\}}")
|
|
167
|
+
assert_equal %Q|@<tt>{inline}|, actual
|
|
168
|
+
end
|
|
169
|
+
|
|
170
|
+
def test_inline_in_table
|
|
171
|
+
actual = compile_block("//table{\n@<b>{1}\t@<i>{2}\n------------\n@<b>{3}\t@<i>{4}<>&\n//}\n")
|
|
172
|
+
assert_equal %Q|<div class="table">\n<table>\n<tr><th><b>1</b></th><th><i>2</i></th></tr>\n<tr><td><b>3</b></td><td><i>4</i><>&</td></tr>\n</table>\n</div>\n|, actual
|
|
173
|
+
end
|
|
174
|
+
|
|
175
|
+
def test_inline_br
|
|
176
|
+
actual = compile_inline("@<br>{}")
|
|
177
|
+
assert_equal %Q|<br />|, actual
|
|
178
|
+
end
|
|
179
|
+
|
|
180
|
+
def test_inline_i
|
|
181
|
+
actual = compile_inline("test @<i>{inline test} test2")
|
|
182
|
+
assert_equal %Q|test <i>inline test</i> test2|, actual
|
|
183
|
+
end
|
|
184
|
+
|
|
185
|
+
def test_inline_i_and_escape
|
|
186
|
+
actual = compile_inline("test @<i>{inline<&;\\ test} test2")
|
|
187
|
+
assert_equal %Q|test <i>inline<&;\\ test</i> test2|, actual
|
|
188
|
+
end
|
|
189
|
+
|
|
190
|
+
def test_inline_b
|
|
191
|
+
actual = compile_inline("test @<b>{inline test} test2")
|
|
192
|
+
assert_equal %Q|test <b>inline test</b> test2|, actual
|
|
193
|
+
end
|
|
194
|
+
|
|
195
|
+
def test_inline_b_and_escape
|
|
196
|
+
actual = compile_inline("test @<b>{inline<&;\\ test} test2")
|
|
197
|
+
assert_equal %Q|test <b>inline<&;\\ test</b> test2|, actual
|
|
198
|
+
end
|
|
199
|
+
|
|
200
|
+
def test_inline_tt
|
|
201
|
+
actual = compile_inline("test @<tt>{inline test} test2")
|
|
202
|
+
assert_equal %Q|test <tt>inline test</tt> test2|, actual
|
|
203
|
+
end
|
|
204
|
+
|
|
205
|
+
def test_inline_tti
|
|
206
|
+
actual = compile_inline("test @<tti>{inline test} test2")
|
|
207
|
+
assert_equal %Q|test <tt><i>inline test</i></tt> test2|, actual
|
|
208
|
+
end
|
|
209
|
+
|
|
210
|
+
def test_inline_ttb
|
|
211
|
+
actual = compile_inline("test @<ttb>{inline test} test2")
|
|
212
|
+
assert_equal %Q|test <tt><b>inline test</b></tt> test2|, actual
|
|
213
|
+
end
|
|
214
|
+
|
|
215
|
+
def test_inline_hd_chap
|
|
216
|
+
def @chapter.headline_index
|
|
217
|
+
items = [Book::HeadlineIndex::Item.new("chap1|test", [1, 1], "te_st")]
|
|
218
|
+
Book::HeadlineIndex.new(items, self)
|
|
219
|
+
end
|
|
220
|
+
|
|
221
|
+
@config["secnolevel"] = 2
|
|
222
|
+
actual = compile_inline("test @<hd>{chap1|test} test2")
|
|
223
|
+
assert_equal %Q|test 「te_st」 test2|, actual
|
|
224
|
+
|
|
225
|
+
@config["secnolevel"] = 3
|
|
226
|
+
actual = compile_inline("test @<hd>{chap1|test} test2")
|
|
227
|
+
assert_equal %Q|test 「1.1.1 te_st」 test2|, actual
|
|
228
|
+
end
|
|
229
|
+
|
|
230
|
+
def test_inline_hd_chap_postdef_roman
|
|
231
|
+
@chapter.book.config["appendix_format"] = "roman"
|
|
232
|
+
@chapter.instance_eval do
|
|
233
|
+
def on_APPENDIX?
|
|
234
|
+
true
|
|
235
|
+
end
|
|
236
|
+
end
|
|
237
|
+
def @chapter.headline_index
|
|
238
|
+
items = [Book::HeadlineIndex::Item.new("test", [1], "te_st")]
|
|
239
|
+
Book::HeadlineIndex.new(items, self)
|
|
240
|
+
end
|
|
241
|
+
|
|
242
|
+
actual = compile_inline("test @<hd>{test} test2")
|
|
243
|
+
assert_equal %Q|test 「I.1 te_st」 test2|, actual
|
|
244
|
+
end
|
|
245
|
+
|
|
246
|
+
def test_inline_hd_chap_postdef_alpha
|
|
247
|
+
@chapter.book.config["appendix_format"] = "alpha"
|
|
248
|
+
@chapter.instance_eval do
|
|
249
|
+
def on_APPENDIX?
|
|
250
|
+
true
|
|
251
|
+
end
|
|
252
|
+
end
|
|
253
|
+
def @chapter.headline_index
|
|
254
|
+
items = [Book::HeadlineIndex::Item.new("test", [1], "te_st")]
|
|
255
|
+
Book::HeadlineIndex.new(items, self)
|
|
256
|
+
end
|
|
257
|
+
|
|
258
|
+
actual = compile_inline("test @<hd>{test} test2")
|
|
259
|
+
assert_equal %Q|test 「A.1 te_st」 test2|, actual
|
|
260
|
+
end
|
|
261
|
+
|
|
262
|
+
def test_inline_uchar
|
|
263
|
+
actual = compile_inline("test @<uchar>{2460} test2")
|
|
264
|
+
assert_equal %Q|test ① test2|, actual
|
|
265
|
+
end
|
|
266
|
+
|
|
267
|
+
def test_inline_ruby
|
|
268
|
+
actual = compile_inline("@<ruby>{粗雑,クルード}と思われているなら@<ruby>{繊細,テクニカル}にやり、繊細と思われているなら粗雑にやる。")
|
|
269
|
+
assert_equal "<ruby><rb>粗雑</rb><rp>(</rp><rt>クルード</rt><rp>)</rp></ruby>と思われているなら<ruby><rb>繊細</rb><rp>(</rp><rt>テクニカル</rt><rp>)</rp></ruby>にやり、繊細と思われているなら粗雑にやる。", actual
|
|
270
|
+
end
|
|
271
|
+
|
|
272
|
+
def test_inline_ruby_comma
|
|
273
|
+
actual = compile_inline("@<ruby>{foo\\, bar\\, buz,フー・バー・バズ}")
|
|
274
|
+
assert_equal "<ruby><rb>foo, bar, buz</rb><rp>(</rp><rt>フー・バー・バズ</rt><rp>)</rp></ruby>", actual
|
|
275
|
+
end
|
|
276
|
+
|
|
277
|
+
def test_inline_ref
|
|
278
|
+
actual = compile_inline("@<ref>{外部参照<>&}")
|
|
279
|
+
assert_equal %Q|<a target='外部参照<>&'>「●● 外部参照<>&」</a>|, actual
|
|
280
|
+
end
|
|
281
|
+
|
|
282
|
+
def test_inline_mathml
|
|
283
|
+
begin
|
|
284
|
+
require 'math_ml'
|
|
285
|
+
require "math_ml/symbol/character_reference"
|
|
286
|
+
rescue LoadError
|
|
287
|
+
return true
|
|
288
|
+
end
|
|
289
|
+
@config["mathml"] = true
|
|
290
|
+
actual = compile_inline("@<m>{\\frac{-b \\pm \\sqrt{b^2 - 4ac\\}\\}{2a\\}}")
|
|
291
|
+
@config["mathml"] = nil
|
|
292
|
+
assert_equal "<span class=\"equation\"><math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><mfrac><mrow><mo stretchy='false'>-</mo><mi>b</mi><mo stretchy='false'>±</mo><msqrt><mrow><msup><mi>b</mi><mn>2</mn></msup><mo stretchy='false'>-</mo><mn>4</mn><mi>a</mi><mi>c</mi></mrow></msqrt></mrow><mrow><mn>2</mn><mi>a</mi></mrow></mfrac></math></span>", actual
|
|
293
|
+
end
|
|
294
|
+
|
|
295
|
+
def test_inline_imgref
|
|
296
|
+
def @chapter.image(id)
|
|
297
|
+
item = Book::ImageIndex::Item.new("sampleimg", 1, 'sample photo')
|
|
298
|
+
item.instance_eval{@path="./images/chap1-sampleimg.png"}
|
|
299
|
+
item
|
|
300
|
+
end
|
|
301
|
+
|
|
302
|
+
actual = compile_block "@<imgref>{sampleimg}\n"
|
|
303
|
+
expected = "<p>図1.1「sample photo」</p>\n"
|
|
304
|
+
assert_equal expected, actual
|
|
305
|
+
end
|
|
306
|
+
|
|
307
|
+
def test_inline_imgref2
|
|
308
|
+
def @chapter.image(id)
|
|
309
|
+
item = Book::NumberlessImageIndex::Item.new("sampleimg", 1)
|
|
310
|
+
item.instance_eval{@path="./images/chap1-sampleimg.png"}
|
|
311
|
+
item
|
|
312
|
+
end
|
|
313
|
+
|
|
314
|
+
actual = compile_block "@<imgref>{sampleimg}\n"
|
|
315
|
+
expected = "<p>図1.1</p>\n"
|
|
316
|
+
assert_equal expected, actual
|
|
317
|
+
end
|
|
318
|
+
|
|
319
|
+
|
|
320
|
+
def test_quote
|
|
321
|
+
actual = compile_block("//quote{\nfoo\nbar\n\nbuz\n//}\n")
|
|
322
|
+
assert_equal %Q|<blockquote><p>foobar</p>\n<p>buz</p>\n</blockquote>\n|, actual
|
|
323
|
+
end
|
|
324
|
+
|
|
325
|
+
def test_memo
|
|
326
|
+
actual = compile_block("//memo[this is @<b>{test}<&>_]{\ntest1\n\ntest@<i>{2}\n//}\n")
|
|
327
|
+
assert_equal %Q|<div class="memo">\n<p class="caption">this is <b>test</b><&>_</p>\n<p>test1</p>\n<p>test<i>2</i></p>\n</div>\n|, actual
|
|
328
|
+
end
|
|
329
|
+
|
|
330
|
+
def test_noindent
|
|
331
|
+
@builder.noindent
|
|
332
|
+
actual = compile_block("foo\nbar\n\nfoo2\nbar2\n")
|
|
333
|
+
assert_equal %Q|<p class="noindent">foobar</p>\n<p>foo2bar2</p>\n|, actual
|
|
334
|
+
end
|
|
335
|
+
|
|
336
|
+
def test_flushright
|
|
337
|
+
actual = compile_block("//flushright{\nfoo\nbar\n\nbuz\n//}\n")
|
|
338
|
+
assert_equal %Q|<p class="flushright">foobar</p>\n<p class="flushright">buz</p>\n|, actual
|
|
339
|
+
end
|
|
340
|
+
|
|
341
|
+
def test_centering
|
|
342
|
+
actual = compile_block("//centering{\nfoo\nbar\n\nbuz\n//}\n")
|
|
343
|
+
assert_equal %Q|<p class="center">foobar</p>\n<p class="center">buz</p>\n|, actual
|
|
344
|
+
end
|
|
345
|
+
|
|
346
|
+
def test_image
|
|
347
|
+
def @chapter.image(id)
|
|
348
|
+
item = Book::ImageIndex::Item.new("sampleimg",1)
|
|
349
|
+
item.instance_eval{@path="./images/chap1-sampleimg.png"}
|
|
350
|
+
item
|
|
351
|
+
end
|
|
352
|
+
|
|
353
|
+
actual = compile_block("//image[sampleimg][sample photo]{\n//}\n")
|
|
354
|
+
assert_equal %Q|<div id="sampleimg" 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|, actual
|
|
355
|
+
end
|
|
356
|
+
|
|
357
|
+
def test_image_with_metric
|
|
358
|
+
def @chapter.image(id)
|
|
359
|
+
item = Book::ImageIndex::Item.new("sampleimg",1)
|
|
360
|
+
item.instance_eval{@path="./images/chap1-sampleimg.png"}
|
|
361
|
+
item
|
|
362
|
+
end
|
|
363
|
+
|
|
364
|
+
actual = compile_block("//image[sampleimg][sample photo][scale=1.2]{\n//}\n")
|
|
365
|
+
assert_equal %Q|<div id="sampleimg" 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|, actual
|
|
366
|
+
end
|
|
367
|
+
|
|
368
|
+
def test_image_with_metric2
|
|
369
|
+
def @chapter.image(id)
|
|
370
|
+
item = Book::ImageIndex::Item.new("sampleimg",1)
|
|
371
|
+
item.instance_eval{@path="./images/chap1-sampleimg.png"}
|
|
372
|
+
item
|
|
373
|
+
end
|
|
374
|
+
|
|
375
|
+
actual = compile_block("//image[sampleimg][sample photo][scale=1.2,html::class=sample,latex::ignore=params]{\n//}\n")
|
|
376
|
+
assert_equal %Q|<div id="sampleimg" 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|, actual
|
|
377
|
+
end
|
|
378
|
+
|
|
379
|
+
def test_image_with_tricky_id
|
|
380
|
+
def @chapter.image(id)
|
|
381
|
+
item = Book::ImageIndex::Item.new("123 あ_;",1)
|
|
382
|
+
item.instance_eval{@path="./images/chap1-123 あ_;.png"}
|
|
383
|
+
item
|
|
384
|
+
end
|
|
385
|
+
|
|
386
|
+
actual = compile_block("//image[123 あ_;][sample photo]{\n//}\n")
|
|
387
|
+
assert_equal %Q|<div id="id_123-_E3_81_82___3B" class="image">\n<img src="images/chap1-123 あ_;.png" alt="sample photo" />\n<p class="caption">\n図1.1: sample photo\n</p>\n</div>\n|, actual
|
|
388
|
+
end
|
|
389
|
+
|
|
390
|
+
def test_indepimage
|
|
391
|
+
def @chapter.image(id)
|
|
392
|
+
item = Book::ImageIndex::Item.new("sampleimg",1)
|
|
393
|
+
item.instance_eval{@path="./images/chap1-sampleimg.png"}
|
|
394
|
+
item
|
|
395
|
+
end
|
|
396
|
+
|
|
397
|
+
actual = compile_block("//indepimage[sampleimg][sample photo]\n")
|
|
398
|
+
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|, actual
|
|
399
|
+
end
|
|
400
|
+
|
|
401
|
+
def test_indepimage_without_caption
|
|
402
|
+
def @chapter.image(id)
|
|
403
|
+
item = Book::ImageIndex::Item.new("sampleimg",1)
|
|
404
|
+
item.instance_eval{@path="./images/chap1-sampleimg.png"}
|
|
405
|
+
item
|
|
406
|
+
end
|
|
407
|
+
|
|
408
|
+
actual = compile_block("//indepimage[sampleimg]\n")
|
|
409
|
+
assert_equal %Q|<div class="image">\n<img src="images/chap1-sampleimg.png" alt="" />\n</div>\n|, actual
|
|
410
|
+
end
|
|
411
|
+
|
|
412
|
+
def test_indepimage_with_metric
|
|
413
|
+
def @chapter.image(id)
|
|
414
|
+
item = Book::ImageIndex::Item.new("sampleimg",1)
|
|
415
|
+
item.instance_eval{@path="./images/chap1-sampleimg.png"}
|
|
416
|
+
item
|
|
417
|
+
end
|
|
418
|
+
|
|
419
|
+
actual = compile_block("//indepimage[sampleimg][sample photo][scale=1.2]\n")
|
|
420
|
+
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|, actual
|
|
421
|
+
end
|
|
422
|
+
|
|
423
|
+
def test_indepimage_with_metric2
|
|
424
|
+
def @chapter.image(id)
|
|
425
|
+
item = Book::ImageIndex::Item.new("sampleimg",1)
|
|
426
|
+
item.instance_eval{@path="./images/chap1-sampleimg.png"}
|
|
427
|
+
item
|
|
428
|
+
end
|
|
429
|
+
|
|
430
|
+
actual = compile_block("//indepimage[sampleimg][sample photo][scale=1.2, html::class=\"sample\",latex::ignore=params]\n")
|
|
431
|
+
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|, actual
|
|
432
|
+
end
|
|
433
|
+
|
|
434
|
+
def test_indepimage_without_caption_but_with_metric
|
|
435
|
+
def @chapter.image(id)
|
|
436
|
+
item = Book::ImageIndex::Item.new("sampleimg",1)
|
|
437
|
+
item.instance_eval{@path="./images/chap1-sampleimg.png"}
|
|
438
|
+
item
|
|
439
|
+
end
|
|
440
|
+
|
|
441
|
+
actual = compile_block("//indepimage[sampleimg][][scale=1.2]\n")
|
|
442
|
+
assert_equal %Q|<div class="image">\n<img src="images/chap1-sampleimg.png" alt="" width="120%" />\n</div>\n|, actual
|
|
443
|
+
end
|
|
444
|
+
|
|
445
|
+
def test_dlist
|
|
446
|
+
actual = compile_block(": foo\n foo.\n bar.\n")
|
|
447
|
+
assert_equal %Q|<dl>\n<dt>foo</dt>\n<dd>foo.bar.</dd>\n</dl>\n|, actual
|
|
448
|
+
end
|
|
449
|
+
|
|
450
|
+
def test_dlist_with_bracket
|
|
451
|
+
actual = compile_block(": foo[bar]\n foo.\n bar.\n")
|
|
452
|
+
assert_equal %Q|<dl>\n<dt>foo[bar]</dt>\n<dd>foo.bar.</dd>\n</dl>\n|, actual
|
|
453
|
+
end
|
|
454
|
+
|
|
455
|
+
def test_dlist_with_comment
|
|
456
|
+
source = ": title\n body\n\#@ comment\n\#@ comment\n: title2\n body2\n"
|
|
457
|
+
actual = compile_block(source)
|
|
458
|
+
assert_equal %Q|<dl>\n<dt>title</dt>\n<dd>body</dd>\n<dt>title2</dt>\n<dd>body2</dd>\n</dl>\n|, actual
|
|
459
|
+
end
|
|
460
|
+
|
|
461
|
+
def test_list
|
|
462
|
+
def @chapter.list(id)
|
|
463
|
+
Book::ListIndex::Item.new("samplelist",1)
|
|
464
|
+
end
|
|
465
|
+
actual = compile_block("//list[samplelist][this is @<b>{test}<&>_]{\ntest1\ntest1.5\n\ntest@<i>{2}\n//}\n")
|
|
466
|
+
assert_equal %Q|<div class="caption-code">\n<p class="caption">リスト1.1: this is <b>test</b><&>_</p>\n<pre class="list">test1\ntest1.5\n\ntest<i>2</i>\n</pre>\n</div>\n|, actual
|
|
467
|
+
end
|
|
468
|
+
|
|
469
|
+
def test_list_pygments
|
|
470
|
+
def @chapter.list(id)
|
|
471
|
+
Book::ListIndex::Item.new("samplelist",1)
|
|
472
|
+
end
|
|
473
|
+
begin
|
|
474
|
+
require 'pygments'
|
|
475
|
+
rescue LoadError
|
|
476
|
+
$stderr.puts "skip test_list_pygments_lang (cannot find pygments.rb)"
|
|
477
|
+
return true
|
|
478
|
+
end
|
|
479
|
+
@book.config["pygments"] = true
|
|
480
|
+
actual = compile_block("//list[samplelist][this is @<b>{test}<&>_]{\ntest1\ntest1.5\n\ntest@<i>{2}\n//}\n")
|
|
481
|
+
|
|
482
|
+
assert_equal %Q|<div class="caption-code">\n<p class="caption">リスト1.1: this is <b>test</b><&>_</p>\n<pre class="list">test1\ntest1.5\n\ntest<i>2</i></pre>\n</div>\n|, actual
|
|
483
|
+
end
|
|
484
|
+
|
|
485
|
+
def test_list_pygments_lang
|
|
486
|
+
def @chapter.list(id)
|
|
487
|
+
Book::ListIndex::Item.new("samplelist",1)
|
|
488
|
+
end
|
|
489
|
+
begin
|
|
490
|
+
require 'pygments'
|
|
491
|
+
rescue LoadError
|
|
492
|
+
$stderr.puts "skip test_list_pygments_lang (cannot find pygments.rb)"
|
|
493
|
+
return true
|
|
494
|
+
end
|
|
495
|
+
@book.config["pygments"] = true
|
|
496
|
+
actual = compile_block("//list[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")
|
|
497
|
+
|
|
498
|
+
assert_equal %Q|<div class=\"caption-code\">\n<p class=\"caption\">リスト1.1: this is <b>test</b><&>_</p>\n| +
|
|
499
|
+
%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
|
+
%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
|
+
%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>| +
|
|
503
|
+
%Q|</pre>\n| +
|
|
504
|
+
%Q|</div>\n|, actual
|
|
505
|
+
end
|
|
506
|
+
|
|
507
|
+
def test_list_pygments_nulllang
|
|
508
|
+
def @chapter.list(id)
|
|
509
|
+
Book::ListIndex::Item.new("samplelist",1)
|
|
510
|
+
end
|
|
511
|
+
begin
|
|
512
|
+
require 'pygments'
|
|
513
|
+
rescue LoadError
|
|
514
|
+
$stderr.puts "skip test_list_pygments_nulllang (cannot find pygments.rb)"
|
|
515
|
+
return true
|
|
516
|
+
end
|
|
517
|
+
@book.config["pygments"] = true
|
|
518
|
+
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
|
+
assert_equal "<div class=\"caption-code\">\n<p class=\"caption\">リスト1.1: this is <b>test</b><&>_</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
|
|
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><&>_</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.chomp, actual
|
|
550
|
+
end
|
|
551
|
+
|
|
552
|
+
def test_listnum_pygments_lang
|
|
553
|
+
def @chapter.list(id)
|
|
554
|
+
Book::ListIndex::Item.new("samplelist",1)
|
|
555
|
+
end
|
|
556
|
+
begin
|
|
557
|
+
require 'pygments'
|
|
558
|
+
rescue LoadError
|
|
559
|
+
$stderr.puts "skip test_listnum_pygments_lang (cannot find pygments.rb)"
|
|
560
|
+
return true
|
|
561
|
+
end
|
|
562
|
+
@book.config["pygments"] = true
|
|
563
|
+
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
|
+
|
|
565
|
+
assert_equal "<div class=\"code\">\n<p class=\"caption\">リスト1.1: this is <b>test</b><&>_</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
|
+
end
|
|
567
|
+
|
|
568
|
+
def test_listnum_pygments_lang_without_lang
|
|
569
|
+
def @chapter.list(id)
|
|
570
|
+
Book::ListIndex::Item.new("samplelist",1)
|
|
571
|
+
end
|
|
572
|
+
begin
|
|
573
|
+
require 'pygments'
|
|
574
|
+
rescue LoadError
|
|
575
|
+
$stderr.puts "skip test_listnum_pygments_lang (cannot find pygments.rb)"
|
|
576
|
+
return true
|
|
577
|
+
end
|
|
578
|
+
@book.config["highlight"] = {}
|
|
579
|
+
@book.config["highlight"]["html"] = "pygments"
|
|
580
|
+
@book.config["highlight"]["lang"] = "ruby"
|
|
581
|
+
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
|
+
|
|
583
|
+
assert_equal "<div class=\"code\">\n<p class=\"caption\">リスト1.1: this is <b>test</b><&>_</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
|
+
end
|
|
585
|
+
|
|
586
|
+
|
|
587
|
+
def test_emlist
|
|
588
|
+
actual = compile_block("//emlist{\nlineA\nlineB\n//}\n")
|
|
589
|
+
assert_equal %Q|<div class="emlist-code">\n<pre class="emlist">lineA\nlineB\n</pre>\n</div>\n|, actual
|
|
590
|
+
end
|
|
591
|
+
|
|
592
|
+
def test_emlist_pygments_lang
|
|
593
|
+
begin
|
|
594
|
+
require 'pygments'
|
|
595
|
+
rescue LoadError
|
|
596
|
+
$stderr.puts "skip test_emlist_pygments_lang (cannot find pygments.rb)"
|
|
597
|
+
return true
|
|
598
|
+
end
|
|
599
|
+
@book.config["pygments"] = true
|
|
600
|
+
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\">></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\">'ABC%'</span></pre>\n</div>\n", actual
|
|
602
|
+
end
|
|
603
|
+
|
|
604
|
+
def test_emlist_caption
|
|
605
|
+
actual = compile_block("//emlist[cap1]{\nlineA\nlineB\n//}\n")
|
|
606
|
+
assert_equal %Q|<div class="emlist-code">\n<p class="caption">cap1</p>\n<pre class="emlist">lineA\nlineB\n</pre>\n</div>\n|, actual
|
|
607
|
+
end
|
|
608
|
+
|
|
609
|
+
def test_emlist_with_tab
|
|
610
|
+
actual = compile_block("//emlist{\n\tlineA\n\t\tlineB\n\tlineC\n//}\n")
|
|
611
|
+
assert_equal %Q|<div class="emlist-code">\n<pre class="emlist"> lineA\n lineB\n lineC\n</pre>\n</div>\n|, actual
|
|
612
|
+
end
|
|
613
|
+
|
|
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
|
+
def test_emlist_with_4tab
|
|
628
|
+
@config["tabwidth"] = 4
|
|
629
|
+
actual = compile_block("//emlist{\n\tlineA\n\t\tlineB\n\tlineC\n//}\n")
|
|
630
|
+
assert_equal %Q|<div class="emlist-code">\n<pre class="emlist"> lineA\n lineB\n lineC\n</pre>\n</div>\n|, actual
|
|
631
|
+
end
|
|
632
|
+
|
|
633
|
+
def test_cmd
|
|
634
|
+
actual = compile_block("//cmd{\nlineA\nlineB\n//}\n")
|
|
635
|
+
assert_equal %Q|<div class="cmd-code">\n<pre class="cmd">lineA\nlineB\n</pre>\n</div>\n|, actual
|
|
636
|
+
end
|
|
637
|
+
|
|
638
|
+
def test_cmd_pygments
|
|
639
|
+
begin
|
|
640
|
+
require 'pygments'
|
|
641
|
+
rescue LoadError
|
|
642
|
+
return true
|
|
643
|
+
end
|
|
644
|
+
@book.config["pygments"] = true
|
|
645
|
+
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></pre>\n</div>\n", actual
|
|
647
|
+
end
|
|
648
|
+
|
|
649
|
+
def test_cmd_caption
|
|
650
|
+
actual = compile_block("//cmd[cap1]{\nlineA\nlineB\n//}\n")
|
|
651
|
+
assert_equal %Q|<div class="cmd-code">\n<p class="caption">cap1</p>\n<pre class="cmd">lineA\nlineB\n</pre>\n</div>\n|, actual
|
|
652
|
+
end
|
|
653
|
+
|
|
654
|
+
def test_bib
|
|
655
|
+
def @chapter.bibpaper(id)
|
|
656
|
+
Book::BibpaperIndex::Item.new("samplebib",1,"sample bib")
|
|
657
|
+
end
|
|
658
|
+
|
|
659
|
+
assert_equal %Q|<a href="bib.html#bib-samplebib">[1]</a>|, compile_inline("@<bib>{samplebib}")
|
|
660
|
+
end
|
|
661
|
+
|
|
662
|
+
def test_bib_noramlized
|
|
663
|
+
def @chapter.bibpaper(id)
|
|
664
|
+
Book::BibpaperIndex::Item.new("sampleb=ib",1,"sample bib")
|
|
665
|
+
end
|
|
666
|
+
|
|
667
|
+
assert_equal %Q|<a href="bib.html#bib-id_sample_3Dbib">[1]</a>|, compile_inline("@<bib>{sample=bib}")
|
|
668
|
+
end
|
|
669
|
+
|
|
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
|
+
def test_bibpaper
|
|
680
|
+
def @chapter.bibpaper(id)
|
|
681
|
+
Book::BibpaperIndex::Item.new("samplebib",1,"sample bib")
|
|
682
|
+
end
|
|
683
|
+
|
|
684
|
+
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>\n</div>\n|, actual
|
|
686
|
+
end
|
|
687
|
+
|
|
688
|
+
def test_bibpaper_normalized
|
|
689
|
+
def @chapter.bibpaper(id)
|
|
690
|
+
Book::BibpaperIndex::Item.new("sample=bib",1,"sample bib")
|
|
691
|
+
end
|
|
692
|
+
|
|
693
|
+
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>\n</div>\n|, actual
|
|
695
|
+
end
|
|
696
|
+
|
|
697
|
+
def test_bibpaper_with_anchor
|
|
698
|
+
def @chapter.bibpaper(id)
|
|
699
|
+
Book::BibpaperIndex::Item.new("samplebib",1,"sample bib")
|
|
700
|
+
end
|
|
701
|
+
|
|
702
|
+
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>\n</div>\n|, actual
|
|
704
|
+
end
|
|
705
|
+
|
|
706
|
+
def column_helper(review)
|
|
707
|
+
compile_block(review)
|
|
708
|
+
end
|
|
709
|
+
|
|
710
|
+
def test_column_1
|
|
711
|
+
review =<<-EOS
|
|
712
|
+
===[column] prev column
|
|
713
|
+
|
|
714
|
+
inside prev column
|
|
715
|
+
|
|
716
|
+
===[column] test
|
|
717
|
+
|
|
718
|
+
inside column
|
|
719
|
+
|
|
720
|
+
===[/column]
|
|
721
|
+
EOS
|
|
722
|
+
expected =<<-EOS
|
|
723
|
+
<div class="column">
|
|
724
|
+
|
|
725
|
+
<h3><a id="column-1"></a>prev column</h3>
|
|
726
|
+
<p>inside prev column</p>
|
|
727
|
+
</div>
|
|
728
|
+
<div class="column">
|
|
729
|
+
|
|
730
|
+
<h3><a id="column-2"></a>test</h3>
|
|
731
|
+
<p>inside column</p>
|
|
732
|
+
</div>
|
|
733
|
+
EOS
|
|
734
|
+
assert_equal expected, column_helper(review)
|
|
735
|
+
end
|
|
736
|
+
|
|
737
|
+
def test_column_2
|
|
738
|
+
review =<<-EOS
|
|
739
|
+
===[column] test
|
|
740
|
+
|
|
741
|
+
inside column
|
|
742
|
+
|
|
743
|
+
=== next level
|
|
744
|
+
EOS
|
|
745
|
+
expected =<<-EOS
|
|
746
|
+
<div class="column">
|
|
747
|
+
|
|
748
|
+
<h3><a id="column-1"></a>test</h3>
|
|
749
|
+
<p>inside column</p>
|
|
750
|
+
</div>
|
|
751
|
+
<h3><a id="h1-0-1"></a>next level</h3>
|
|
752
|
+
EOS
|
|
753
|
+
|
|
754
|
+
assert_equal expected, column_helper(review)
|
|
755
|
+
end
|
|
756
|
+
|
|
757
|
+
def test_column_3
|
|
758
|
+
review =<<-EOS
|
|
759
|
+
===[column] test
|
|
760
|
+
|
|
761
|
+
inside column
|
|
762
|
+
|
|
763
|
+
===[/column_dummy]
|
|
764
|
+
EOS
|
|
765
|
+
assert_raise(ReVIEW::CompileError) do
|
|
766
|
+
column_helper(review)
|
|
767
|
+
end
|
|
768
|
+
end
|
|
769
|
+
|
|
770
|
+
def test_column_ref
|
|
771
|
+
review =<<-EOS
|
|
772
|
+
===[column]{foo} test
|
|
773
|
+
|
|
774
|
+
inside column
|
|
775
|
+
|
|
776
|
+
=== next level
|
|
777
|
+
|
|
778
|
+
this is @<column>{foo}.
|
|
779
|
+
EOS
|
|
780
|
+
expected =<<-EOS
|
|
781
|
+
<div class="column">
|
|
782
|
+
|
|
783
|
+
<h3 id="foo"><a id="column-1"></a>test</h3>
|
|
784
|
+
<p>inside column</p>
|
|
785
|
+
</div>
|
|
786
|
+
<h3><a id="h1-0-1"></a>next level</h3>
|
|
787
|
+
<p>this is コラム「test」.</p>
|
|
788
|
+
EOS
|
|
789
|
+
|
|
790
|
+
assert_equal expected, column_helper(review)
|
|
791
|
+
end
|
|
792
|
+
|
|
793
|
+
|
|
794
|
+
def test_ul
|
|
795
|
+
src =<<-EOS
|
|
796
|
+
* AAA
|
|
797
|
+
* BBB
|
|
798
|
+
EOS
|
|
799
|
+
expected = "<ul>\n<li>AAA</li>\n<li>BBB</li>\n</ul>\n"
|
|
800
|
+
actual = compile_block(src)
|
|
801
|
+
assert_equal expected, actual
|
|
802
|
+
end
|
|
803
|
+
|
|
804
|
+
def test_ul_cont
|
|
805
|
+
src =<<-EOS
|
|
806
|
+
* AAA
|
|
807
|
+
-AA
|
|
808
|
+
* BBB
|
|
809
|
+
-BB
|
|
810
|
+
EOS
|
|
811
|
+
expected = "<ul>\n<li>AAA-AA</li>\n<li>BBB-BB</li>\n</ul>\n"
|
|
812
|
+
actual = compile_block(src)
|
|
813
|
+
assert_equal expected, actual
|
|
814
|
+
end
|
|
815
|
+
|
|
816
|
+
def test_ul_nest1
|
|
817
|
+
src =<<-EOS
|
|
818
|
+
* AAA
|
|
819
|
+
** AA
|
|
820
|
+
EOS
|
|
821
|
+
|
|
822
|
+
expected =<<-EOS
|
|
823
|
+
<ul>
|
|
824
|
+
<li>AAA<ul>
|
|
825
|
+
<li>AA</li>
|
|
826
|
+
</ul>
|
|
827
|
+
</li>
|
|
828
|
+
</ul>
|
|
829
|
+
EOS
|
|
830
|
+
actual = compile_block(src)
|
|
831
|
+
assert_equal expected, actual
|
|
832
|
+
end
|
|
833
|
+
|
|
834
|
+
def test_ul_nest2
|
|
835
|
+
src =<<-EOS
|
|
836
|
+
* AAA
|
|
837
|
+
** AA
|
|
838
|
+
* BBB
|
|
839
|
+
** BB
|
|
840
|
+
EOS
|
|
841
|
+
|
|
842
|
+
expected =<<-EOS
|
|
843
|
+
<ul>
|
|
844
|
+
<li>AAA<ul>
|
|
845
|
+
<li>AA</li>
|
|
846
|
+
</ul>
|
|
847
|
+
</li>
|
|
848
|
+
<li>BBB<ul>
|
|
849
|
+
<li>BB</li>
|
|
850
|
+
</ul>
|
|
851
|
+
</li>
|
|
852
|
+
</ul>
|
|
853
|
+
EOS
|
|
854
|
+
actual = compile_block(src)
|
|
855
|
+
assert_equal expected, actual
|
|
856
|
+
end
|
|
857
|
+
|
|
858
|
+
def test_ul_nest3
|
|
859
|
+
src =<<-EOS
|
|
860
|
+
** AAA
|
|
861
|
+
* AA
|
|
862
|
+
* BBB
|
|
863
|
+
** BB
|
|
864
|
+
EOS
|
|
865
|
+
|
|
866
|
+
expected =<<-EOS
|
|
867
|
+
<ul>
|
|
868
|
+
<li><ul>
|
|
869
|
+
<li>AAA</li>
|
|
870
|
+
</ul>
|
|
871
|
+
</li>
|
|
872
|
+
<li>AA</li>
|
|
873
|
+
<li>BBB<ul>
|
|
874
|
+
<li>BB</li>
|
|
875
|
+
</ul>
|
|
876
|
+
</li>
|
|
877
|
+
</ul>
|
|
878
|
+
EOS
|
|
879
|
+
actual = compile_block(src)
|
|
880
|
+
assert_equal expected, actual
|
|
881
|
+
end
|
|
882
|
+
|
|
883
|
+
def test_ul_nest4
|
|
884
|
+
src =<<-EOS
|
|
885
|
+
* A
|
|
886
|
+
** AA
|
|
887
|
+
*** AAA
|
|
888
|
+
* B
|
|
889
|
+
** BB
|
|
890
|
+
EOS
|
|
891
|
+
|
|
892
|
+
expected =<<-EOS
|
|
893
|
+
<ul>
|
|
894
|
+
<li>A<ul>
|
|
895
|
+
<li>AA<ul>
|
|
896
|
+
<li>AAA</li>
|
|
897
|
+
</ul>
|
|
898
|
+
</li>
|
|
899
|
+
</ul>
|
|
900
|
+
</li>
|
|
901
|
+
<li>B<ul>
|
|
902
|
+
<li>BB</li>
|
|
903
|
+
</ul>
|
|
904
|
+
</li>
|
|
905
|
+
</ul>
|
|
906
|
+
EOS
|
|
907
|
+
actual = compile_block(src)
|
|
908
|
+
assert_equal expected, actual
|
|
909
|
+
end
|
|
910
|
+
|
|
911
|
+
def test_ul_nest5
|
|
912
|
+
src =<<-EOS
|
|
913
|
+
* A
|
|
914
|
+
** AA
|
|
915
|
+
**** AAAA
|
|
916
|
+
* B
|
|
917
|
+
** BB
|
|
918
|
+
EOS
|
|
919
|
+
|
|
920
|
+
expected =<<-EOS
|
|
921
|
+
<ul>
|
|
922
|
+
<li>A<ul>
|
|
923
|
+
<li>AA<ul>
|
|
924
|
+
<li><ul>
|
|
925
|
+
<li>AAAA</li>
|
|
926
|
+
</ul>
|
|
927
|
+
</li>
|
|
928
|
+
</ul>
|
|
929
|
+
</li>
|
|
930
|
+
</ul>
|
|
931
|
+
</li>
|
|
932
|
+
<li>B<ul>
|
|
933
|
+
<li>BB</li>
|
|
934
|
+
</ul>
|
|
935
|
+
</li>
|
|
936
|
+
</ul>
|
|
937
|
+
EOS
|
|
938
|
+
actual = compile_block(src)
|
|
939
|
+
assert_equal expected, actual
|
|
940
|
+
end
|
|
941
|
+
|
|
942
|
+
def test_ul_in_note
|
|
943
|
+
src =<<-EOS
|
|
944
|
+
//note{
|
|
945
|
+
|
|
946
|
+
aaaa
|
|
947
|
+
bbb
|
|
948
|
+
|
|
949
|
+
* A
|
|
950
|
+
* B
|
|
951
|
+
//}
|
|
952
|
+
EOS
|
|
953
|
+
|
|
954
|
+
expected =<<-EOS
|
|
955
|
+
<div class=\"note\">
|
|
956
|
+
<p>aaaabbb</p>
|
|
957
|
+
<ul>
|
|
958
|
+
<li>A</li>
|
|
959
|
+
<li>B</li>
|
|
960
|
+
</ul>
|
|
961
|
+
</div>
|
|
962
|
+
EOS
|
|
963
|
+
actual = compile_block(src)
|
|
964
|
+
assert_equal expected, actual
|
|
965
|
+
end
|
|
966
|
+
|
|
967
|
+
def test_ul_in_note_and_emlist
|
|
968
|
+
src =<<-EOS
|
|
969
|
+
//note{
|
|
970
|
+
|
|
971
|
+
aaaa
|
|
972
|
+
bbb
|
|
973
|
+
|
|
974
|
+
//emlist{
|
|
975
|
+
abc
|
|
976
|
+
ddd
|
|
977
|
+
* A
|
|
978
|
+
* B
|
|
979
|
+
//}
|
|
980
|
+
|
|
981
|
+
* A
|
|
982
|
+
* B
|
|
983
|
+
//}
|
|
984
|
+
EOS
|
|
985
|
+
|
|
986
|
+
expected =<<-EOS
|
|
987
|
+
<div class=\"note\">
|
|
988
|
+
<p>aaaabbb</p>
|
|
989
|
+
<div class="emlist-code">
|
|
990
|
+
<pre class="emlist">abc
|
|
991
|
+
ddd
|
|
992
|
+
* A
|
|
993
|
+
* B
|
|
994
|
+
</pre>
|
|
995
|
+
</div>
|
|
996
|
+
<ul>
|
|
997
|
+
<li>A</li>
|
|
998
|
+
<li>B</li>
|
|
999
|
+
</ul>
|
|
1000
|
+
</div>
|
|
1001
|
+
EOS
|
|
1002
|
+
actual = compile_block(src)
|
|
1003
|
+
assert_equal expected, actual
|
|
1004
|
+
end
|
|
1005
|
+
|
|
1006
|
+
def test_ol
|
|
1007
|
+
src =<<-EOS
|
|
1008
|
+
3. AAA
|
|
1009
|
+
3. BBB
|
|
1010
|
+
EOS
|
|
1011
|
+
|
|
1012
|
+
expected =<<-EOS
|
|
1013
|
+
<ol>
|
|
1014
|
+
<li>AAA</li>
|
|
1015
|
+
<li>BBB</li>
|
|
1016
|
+
</ol>
|
|
1017
|
+
EOS
|
|
1018
|
+
actual = compile_block(src)
|
|
1019
|
+
assert_equal expected, actual
|
|
1020
|
+
end
|
|
1021
|
+
|
|
1022
|
+
def test_inline_raw0
|
|
1023
|
+
assert_equal "normal", compile_inline("@<raw>{normal}")
|
|
1024
|
+
end
|
|
1025
|
+
|
|
1026
|
+
def test_inline_raw1
|
|
1027
|
+
assert_equal "body", compile_inline("@<raw>{|html|body}")
|
|
1028
|
+
end
|
|
1029
|
+
|
|
1030
|
+
def test_inline_raw2
|
|
1031
|
+
assert_equal "body", compile_inline("@<raw>{|html, latex|body}")
|
|
1032
|
+
end
|
|
1033
|
+
|
|
1034
|
+
def test_inline_raw3
|
|
1035
|
+
assert_equal "", compile_inline("@<raw>{|idgxml, latex|body}")
|
|
1036
|
+
end
|
|
1037
|
+
|
|
1038
|
+
def test_inline_raw4
|
|
1039
|
+
assert_equal "|html body", compile_inline("@<raw>{|html body}")
|
|
1040
|
+
end
|
|
1041
|
+
|
|
1042
|
+
def test_inline_raw5
|
|
1043
|
+
assert_equal "nor\nmal", compile_inline("@<raw>{|html|nor\\nmal}")
|
|
1044
|
+
end
|
|
1045
|
+
|
|
1046
|
+
def test_block_raw0
|
|
1047
|
+
actual = compile_block("//raw[<>!\"\\n& ]\n")
|
|
1048
|
+
expected = %Q(<>!\"\n& )
|
|
1049
|
+
assert_equal expected, actual
|
|
1050
|
+
end
|
|
1051
|
+
|
|
1052
|
+
def test_block_raw1
|
|
1053
|
+
actual = compile_block("//raw[|html|<>!\"\\n& ]\n")
|
|
1054
|
+
expected = %Q(<>!\"\n& )
|
|
1055
|
+
assert_equal expected, actual
|
|
1056
|
+
end
|
|
1057
|
+
|
|
1058
|
+
def test_block_raw2
|
|
1059
|
+
actual = compile_block("//raw[|html, latex|<>!\"\\n& ]\n")
|
|
1060
|
+
expected = %Q(<>!\"\n& )
|
|
1061
|
+
assert_equal expected, actual
|
|
1062
|
+
end
|
|
1063
|
+
|
|
1064
|
+
def test_block_raw3
|
|
1065
|
+
actual = compile_block("//raw[|latex, idgxml|<>!\"\\n& ]\n")
|
|
1066
|
+
expected = ''
|
|
1067
|
+
assert_equal expected, actual
|
|
1068
|
+
end
|
|
1069
|
+
|
|
1070
|
+
def test_block_raw4
|
|
1071
|
+
actual = compile_block("//raw[|html <>!\"\\n& ]\n")
|
|
1072
|
+
expected = %Q(|html <>!\"\n& )
|
|
1073
|
+
assert_equal expected, actual
|
|
1074
|
+
end
|
|
1075
|
+
|
|
1076
|
+
def test_inline_fn
|
|
1077
|
+
fn = Book::FootnoteIndex.parse(['//footnote[foo][bar\\a\\$buz]'])
|
|
1078
|
+
@chapter.instance_eval{@footnote_index=fn}
|
|
1079
|
+
actual = compile_block("//footnote[foo][bar\\a\\$buz]\n")
|
|
1080
|
+
expected =<<-'EOS'
|
|
1081
|
+
<div class="footnote" id="fn-foo"><p class="footnote">[<a href="#fnb-foo">*1</a>] bar\a\$buz</p></div>
|
|
1082
|
+
EOS
|
|
1083
|
+
assert_equal expected, actual
|
|
1084
|
+
end
|
|
1085
|
+
|
|
1086
|
+
def test_inline_fn_with_tricky_id
|
|
1087
|
+
fn = Book::FootnoteIndex.parse(['//footnote[123 あ_;][bar\\a\\$buz]'])
|
|
1088
|
+
@chapter.instance_eval{@footnote_index=fn}
|
|
1089
|
+
actual = compile_block("//footnote[123 あ_;][bar\\a\\$buz]\n")
|
|
1090
|
+
expected =<<-'EOS'
|
|
1091
|
+
<div class="footnote" id="fn-id_123-_E3_81_82___3B"><p class="footnote">[<a href="#fnb-id_123-_E3_81_82___3B">*1</a>] bar\a\$buz</p></div>
|
|
1092
|
+
EOS
|
|
1093
|
+
assert_equal expected, actual
|
|
1094
|
+
end
|
|
1095
|
+
|
|
1096
|
+
|
|
1097
|
+
## inline nesting tests
|
|
1098
|
+
def test_href_nest
|
|
1099
|
+
actual = compile_inline("@<href>{http://github.com,@<b>{G}itHub}")
|
|
1100
|
+
assert_equal %Q|<a href="http://github.com" class="link"><b>G</b>itHub</a>|, actual
|
|
1101
|
+
end
|
|
1102
|
+
|
|
1103
|
+
def test_inline_tti_nest
|
|
1104
|
+
actual = compile_inline("test @<tt>{aa@<i>{inline test}bb} test2")
|
|
1105
|
+
assert_equal %Q|test <tt>aa<i>inline test</i>bb</tt> test2|, actual
|
|
1106
|
+
end
|
|
1107
|
+
|
|
1108
|
+
def test_inline_ttib_nest
|
|
1109
|
+
actual = compile_inline("test @<tt>{aa@<i>{inline @<b>{te}st}bb} test2")
|
|
1110
|
+
assert_equal %Q|test <tt>aa<i>inline <b>te</b>st</i>bb</tt> test2|, actual
|
|
1111
|
+
end
|
|
1112
|
+
|
|
1113
|
+
|
|
1114
|
+
end
|