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,73 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
require 'tmpdir'
|
|
3
|
+
require 'fileutils'
|
|
4
|
+
require 'yaml'
|
|
5
|
+
require 'rbconfig'
|
|
6
|
+
|
|
7
|
+
load File.expand_path('../bin/review-catalog-converter-peg', File.dirname(__FILE__))
|
|
8
|
+
|
|
9
|
+
class CatalogConverterCmdTest < Test::Unit::TestCase
|
|
10
|
+
def test_parse_chaps
|
|
11
|
+
input = <<-EOS
|
|
12
|
+
ch01.re
|
|
13
|
+
ch02.re
|
|
14
|
+
ch03.re
|
|
15
|
+
EOS
|
|
16
|
+
|
|
17
|
+
expected = <<-EOS
|
|
18
|
+
CHAPS:
|
|
19
|
+
- ch01.re
|
|
20
|
+
- ch02.re
|
|
21
|
+
- ch03.re
|
|
22
|
+
|
|
23
|
+
EOS
|
|
24
|
+
assert_equal expected, parse_chaps(input)
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def test_parse_chaps_empty
|
|
28
|
+
assert_equal "CHAPS:\n\n", parse_chaps("")
|
|
29
|
+
assert_equal "CHAPS:\n\n", parse_chaps(nil)
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def test_parse_parts
|
|
33
|
+
parts = <<-EOS
|
|
34
|
+
pt01
|
|
35
|
+
pt02
|
|
36
|
+
pt03
|
|
37
|
+
EOS
|
|
38
|
+
|
|
39
|
+
chaps = <<-EOS
|
|
40
|
+
ch01.re
|
|
41
|
+
|
|
42
|
+
ch02.re
|
|
43
|
+
ch03.re
|
|
44
|
+
|
|
45
|
+
ch04.re
|
|
46
|
+
EOS
|
|
47
|
+
|
|
48
|
+
expected = <<-EOS
|
|
49
|
+
CHAPS:
|
|
50
|
+
- pt01:
|
|
51
|
+
- ch01.re
|
|
52
|
+
- pt02:
|
|
53
|
+
- ch02.re
|
|
54
|
+
- ch03.re
|
|
55
|
+
- pt03:
|
|
56
|
+
- ch04.re
|
|
57
|
+
|
|
58
|
+
EOS
|
|
59
|
+
|
|
60
|
+
assert_equal expected, parse_parts(parts, chaps)
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
def test_parse_parts_chaps_empty
|
|
64
|
+
assert_equal "CHAPS:\n\n", parse_parts("", "")
|
|
65
|
+
assert_equal "CHAPS:\n\n", parse_parts(nil, nil)
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
def test_parse_postdef
|
|
69
|
+
assert_equal "APPENDIX:\n\n", parse_postdef("", true)
|
|
70
|
+
assert_equal "POSTDEF:\n\n", parse_postdef("")
|
|
71
|
+
assert_equal "POSTDEF:\n\n", parse_postdef("", false)
|
|
72
|
+
end
|
|
73
|
+
end
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
require 'test_helper'
|
|
4
|
+
require 'review/compiler'
|
|
5
|
+
require 'review/book'
|
|
6
|
+
require 'review/latexbuilder'
|
|
7
|
+
require 'review/htmlbuilder'
|
|
8
|
+
|
|
9
|
+
class CompilerTest < Test::Unit::TestCase
|
|
10
|
+
include ReVIEW
|
|
11
|
+
|
|
12
|
+
def setup
|
|
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
|
+
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def test_parse_args
|
|
34
|
+
args = compile_blockelem("//dummy[foo][bar]\n", false)
|
|
35
|
+
assert_equal ["foo","bar"], args.parse_args(:doc,:doc)
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def test_parse_args_with_brace1
|
|
39
|
+
args = compile_blockelem("//dummy[fo[\\][\\]o][bar]", false)
|
|
40
|
+
assert_equal ["fo[][]o","bar"], args.parse_args(:doc, :doc)
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def test_parse_args_with_brace2
|
|
44
|
+
args = compile_blockelem("//dummy[f\\]o\\]o][bar]", false)
|
|
45
|
+
assert_equal ["f]o]o","bar"], args.parse_args(:doc, :doc)
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def test_parse_args_with_backslash
|
|
49
|
+
args = compile_blockelem("//dummy[foo][bar\\buz]", false)
|
|
50
|
+
assert_equal ["foo","bar\\buz"], args.parse_args(:doc, :doc)
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def test_parse_args_with_backslash2
|
|
54
|
+
args = compile_blockelem("//dummy[foo][bar\\#\\[\\!]", false)
|
|
55
|
+
assert_equal ["foo","bar\\#\\[\\!"], args.parse_args(:doc, :doc)
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
def test_parse_args_with_backslash3
|
|
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
|
+
Compiler.definline :dummy
|
|
88
|
+
args = compile_inline("@<dummy>{abc\\d\\#a}", false)
|
|
89
|
+
assert_equal "abc\\d\\#a", args.content[0].content.to_doc
|
|
90
|
+
end
|
|
91
|
+
end
|
|
92
|
+
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
require 'test_helper'
|
|
4
|
+
require 'review/epubmaker'
|
|
5
|
+
|
|
6
|
+
class ConfigureTest < Test::Unit::TestCase
|
|
7
|
+
include ReVIEW
|
|
8
|
+
|
|
9
|
+
def setup
|
|
10
|
+
@maker = ReVIEW::EPUBMaker.new
|
|
11
|
+
@config = ReVIEW::Configure.values
|
|
12
|
+
@config.merge!({
|
|
13
|
+
"bookname" => "sample",
|
|
14
|
+
"title" => "Sample Book",
|
|
15
|
+
"version" => 2,
|
|
16
|
+
"urnid" => "http://example.jp/",
|
|
17
|
+
"date" => "2011-01-01",
|
|
18
|
+
"language" => "ja",
|
|
19
|
+
"epubmaker" => {"flattocindent" => true},
|
|
20
|
+
})
|
|
21
|
+
@output = StringIO.new
|
|
22
|
+
I18n.setup(@config["language"])
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def test_configure_class
|
|
26
|
+
assert_equal ReVIEW::Configure, @config.class
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def test_configure_get
|
|
30
|
+
bookname = @config["bookname"]
|
|
31
|
+
assert_equal "sample", bookname
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def test_configure_get2
|
|
35
|
+
assert_equal true, @config["epubmaker"]["flattocindent"]
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def test_configure_with_maker
|
|
39
|
+
@config.maker = "epubmaker"
|
|
40
|
+
assert_equal true, @config["flattocindent"]
|
|
41
|
+
assert_equal true, @config["epubmaker"]["flattocindent"]
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def test_configure_with_invalidmaker
|
|
45
|
+
@config.maker = "pdfmaker"
|
|
46
|
+
assert_equal nil, @config["flattocindent"]
|
|
47
|
+
assert_equal true, @config["epubmaker"]["flattocindent"]
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
end
|
|
@@ -0,0 +1,529 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
require 'test_helper'
|
|
4
|
+
require 'epubmaker'
|
|
5
|
+
require 'review/epubmaker'
|
|
6
|
+
|
|
7
|
+
class EPUB3MakerTest < Test::Unit::TestCase
|
|
8
|
+
include EPUBMaker
|
|
9
|
+
|
|
10
|
+
def setup
|
|
11
|
+
@producer = Producer.new
|
|
12
|
+
@producer.merge_params({
|
|
13
|
+
"bookname" => "sample",
|
|
14
|
+
"title" => "Sample Book",
|
|
15
|
+
"epubversion" => 3,
|
|
16
|
+
"urnid" => "http://example.jp/",
|
|
17
|
+
"date" => "2011-01-01",
|
|
18
|
+
"language" => "en",
|
|
19
|
+
"modified" => "2014-12-13T14:15:16Z"
|
|
20
|
+
})
|
|
21
|
+
@output = StringIO.new
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def test_initialize
|
|
25
|
+
assert Producer.new
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def test_resource_en
|
|
29
|
+
@producer.merge_params({"language" => "en"})
|
|
30
|
+
assert_equal "Table of Contents", @producer.res.v("toctitle")
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def test_resource_ja
|
|
34
|
+
@producer.merge_params({"language" => "ja"})
|
|
35
|
+
assert_equal "目次", @producer.res.v("toctitle")
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def test_mimetype
|
|
39
|
+
@producer.mimetype(@output)
|
|
40
|
+
assert_equal %Q[application/epub+zip], @output.string
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def test_container
|
|
44
|
+
@producer.container(@output)
|
|
45
|
+
expect = <<EOT
|
|
46
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
47
|
+
<container xmlns="urn:oasis:names:tc:opendocument:xmlns:container" version="1.0">
|
|
48
|
+
<rootfiles>
|
|
49
|
+
<rootfile full-path="OEBPS/sample.opf" media-type="application/oebps-package+xml" />
|
|
50
|
+
</rootfiles>
|
|
51
|
+
</container>
|
|
52
|
+
EOT
|
|
53
|
+
assert_equal expect, @output.string
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
def test_stage1_opf
|
|
57
|
+
@producer.opf(@output)
|
|
58
|
+
expect = <<EOT
|
|
59
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
60
|
+
<package version="3.0" xmlns="http://www.idpf.org/2007/opf" unique-identifier="BookId" xml:lang="en">
|
|
61
|
+
<metadata xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:opf="http://www.idpf.org/2007/opf">
|
|
62
|
+
<dc:title id="title">Sample Book</dc:title>
|
|
63
|
+
<dc:language id="language">en</dc:language>
|
|
64
|
+
<dc:date id="date">2011-01-01</dc:date>
|
|
65
|
+
<meta property="dcterms:modified">2014-12-13T14:15:16Z</meta>
|
|
66
|
+
<dc:identifier id="BookId">http://example.jp/</dc:identifier>
|
|
67
|
+
</metadata>
|
|
68
|
+
<manifest>
|
|
69
|
+
<item properties="nav" id="sample-toc.html" href="sample-toc.html" media-type="application/xhtml+xml"/>
|
|
70
|
+
<item id="sample" href="sample.html" media-type="application/xhtml+xml"/>
|
|
71
|
+
</manifest>
|
|
72
|
+
<spine>
|
|
73
|
+
<itemref idref="sample" linear="no"/>
|
|
74
|
+
</spine>
|
|
75
|
+
<guide>
|
|
76
|
+
<reference type="cover" title="Cover" href="sample.html"/>
|
|
77
|
+
<reference type="toc" title="Table of Contents" href="sample-toc.html"/>
|
|
78
|
+
</guide>
|
|
79
|
+
</package>
|
|
80
|
+
EOT
|
|
81
|
+
assert_equal expect, @output.string
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
def test_stage1_ncx
|
|
85
|
+
@producer.ncx(@output)
|
|
86
|
+
expect = <<EOT
|
|
87
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
88
|
+
<!DOCTYPE html>
|
|
89
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:epub="http://www.idpf.org/2007/ops" xmlns:ops="http://www.idpf.org/2007/ops" xml:lang="en">
|
|
90
|
+
<head>
|
|
91
|
+
<meta charset="UTF-8" />
|
|
92
|
+
<meta name="generator" content="Re:VIEW" />
|
|
93
|
+
<title>Table of Contents</title>
|
|
94
|
+
</head>
|
|
95
|
+
<body>
|
|
96
|
+
<nav xmlns:epub="http://www.idpf.org/2007/ops" epub:type="toc" id="toc">
|
|
97
|
+
<h1 class="toc-title">Table of Contents</h1>
|
|
98
|
+
|
|
99
|
+
<ol class="toc-h1"></ol> </nav>
|
|
100
|
+
</body>
|
|
101
|
+
</html>
|
|
102
|
+
EOT
|
|
103
|
+
assert_equal expect, @output.string
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
def stage2
|
|
107
|
+
# add one item
|
|
108
|
+
@producer.contents << Content.new({"file" => "ch01.html", "title" => "CH01", "level" => 1})
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
def test_stage2_add_l1item
|
|
112
|
+
stage2
|
|
113
|
+
expect = EPUBMaker::Content.new("ch01.html",
|
|
114
|
+
"ch01-html",
|
|
115
|
+
"application/xhtml+xml",
|
|
116
|
+
"CH01",
|
|
117
|
+
1)
|
|
118
|
+
assert_equal expect, @producer.contents[0]
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
def test_stage2_opf
|
|
122
|
+
stage2
|
|
123
|
+
@producer.opf(@output)
|
|
124
|
+
expect = <<EOT
|
|
125
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
126
|
+
<package version="3.0" xmlns="http://www.idpf.org/2007/opf" unique-identifier="BookId" xml:lang="en">
|
|
127
|
+
<metadata xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:opf="http://www.idpf.org/2007/opf">
|
|
128
|
+
<dc:title id="title">Sample Book</dc:title>
|
|
129
|
+
<dc:language id="language">en</dc:language>
|
|
130
|
+
<dc:date id="date">2011-01-01</dc:date>
|
|
131
|
+
<meta property="dcterms:modified">2014-12-13T14:15:16Z</meta>
|
|
132
|
+
<dc:identifier id="BookId">http://example.jp/</dc:identifier>
|
|
133
|
+
</metadata>
|
|
134
|
+
<manifest>
|
|
135
|
+
<item properties="nav" id="sample-toc.html" href="sample-toc.html" media-type="application/xhtml+xml"/>
|
|
136
|
+
<item id="sample" href="sample.html" media-type="application/xhtml+xml"/>
|
|
137
|
+
<item id="ch01-html" href="ch01.html" media-type="application/xhtml+xml"/>
|
|
138
|
+
</manifest>
|
|
139
|
+
<spine>
|
|
140
|
+
<itemref idref="sample" linear="no"/>
|
|
141
|
+
<itemref idref="ch01-html"/>
|
|
142
|
+
</spine>
|
|
143
|
+
<guide>
|
|
144
|
+
<reference type="cover" title="Cover" href="sample.html"/>
|
|
145
|
+
<reference type="toc" title="Table of Contents" href="sample-toc.html"/>
|
|
146
|
+
</guide>
|
|
147
|
+
</package>
|
|
148
|
+
EOT
|
|
149
|
+
assert_equal expect, @output.string
|
|
150
|
+
end
|
|
151
|
+
|
|
152
|
+
def test_stage2_ncx
|
|
153
|
+
stage2
|
|
154
|
+
@producer.ncx(@output)
|
|
155
|
+
expect = <<EOT
|
|
156
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
157
|
+
<!DOCTYPE html>
|
|
158
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:epub="http://www.idpf.org/2007/ops" xmlns:ops="http://www.idpf.org/2007/ops" xml:lang="en">
|
|
159
|
+
<head>
|
|
160
|
+
<meta charset="UTF-8" />
|
|
161
|
+
<meta name="generator" content="Re:VIEW" />
|
|
162
|
+
<title>Table of Contents</title>
|
|
163
|
+
</head>
|
|
164
|
+
<body>
|
|
165
|
+
<nav xmlns:epub="http://www.idpf.org/2007/ops" epub:type="toc" id="toc">
|
|
166
|
+
<h1 class="toc-title">Table of Contents</h1>
|
|
167
|
+
|
|
168
|
+
<ol class="toc-h1"><li><a href="ch01.html">CH01</a></li>
|
|
169
|
+
</ol> </nav>
|
|
170
|
+
</body>
|
|
171
|
+
</html>
|
|
172
|
+
EOT
|
|
173
|
+
assert_equal expect, @output.string
|
|
174
|
+
end
|
|
175
|
+
|
|
176
|
+
def stage3
|
|
177
|
+
# add more items
|
|
178
|
+
@producer.contents << Content.new({"file" => "ch01.html", "title" => "CH01<>&\"", "level" => 1})
|
|
179
|
+
@producer.contents << Content.new({"file" => "ch02.html", "title" => "CH02", "level" => 1})
|
|
180
|
+
@producer.contents << Content.new({"file" => "ch02.html#S1", "title" => "CH02.1", "level" => 2})
|
|
181
|
+
@producer.contents << Content.new({"file" => "ch02.html#S1.1", "title" => "CH02.1.1", "level" => 3})
|
|
182
|
+
@producer.contents << Content.new({"file" => "ch02.html#S1.1.1", "title" => "CH02.1.1.1", "level" => 4})
|
|
183
|
+
@producer.contents << Content.new({"file" => "ch02.html#S1.1.1.1", "title" => "CH02.1.1.1.1", "level" => 5})
|
|
184
|
+
@producer.contents << Content.new({"file" => "ch02.html#S1.1.2", "title" => "CH02.1.1.2", "level" => 4})
|
|
185
|
+
@producer.contents << Content.new({"file" => "ch02.html#S2", "title" => "CH02.2", "level" => 2})
|
|
186
|
+
@producer.contents << Content.new({"file" => "ch02.html#S2.1", "title" => "CH02.2.1", "level" => 3})
|
|
187
|
+
@producer.contents << Content.new({"file" => "ch03.html", "title" => "CH03", "level" => 1, "properties" => ["mathml"]})
|
|
188
|
+
@producer.contents << Content.new({"file" => "ch03.html#S1", "title" => "CH03.1", "level" => 2})
|
|
189
|
+
@producer.contents << Content.new({"file" => "ch03.html#S1.1", "title" => "CH03.1.1", "level" => 3})
|
|
190
|
+
@producer.contents << Content.new({"file" => "ch04.html", "title" => "CH04", "level" => 1})
|
|
191
|
+
@producer.contents << Content.new({"file" => "sample.png"})
|
|
192
|
+
@producer.contents << Content.new({"file" => "sample.jpg"})
|
|
193
|
+
@producer.contents << Content.new({"file" => "sample.JPEG"})
|
|
194
|
+
@producer.contents << Content.new({"file" => "sample.SvG"})
|
|
195
|
+
@producer.contents << Content.new({"file" => "sample.GIF"})
|
|
196
|
+
@producer.contents << Content.new({"file" => "sample.css"})
|
|
197
|
+
end
|
|
198
|
+
|
|
199
|
+
def test_stage3_add_various_items
|
|
200
|
+
stage3
|
|
201
|
+
expect = [
|
|
202
|
+
Content.new("ch01.html", "ch01-html", "application/xhtml+xml", "CH01<>&\"", 1),
|
|
203
|
+
Content.new("ch02.html", "ch02-html", "application/xhtml+xml", "CH02", 1),
|
|
204
|
+
Content.new("ch02.html#S1", "ch02-html#S1","html#s1","CH02.1", 2),
|
|
205
|
+
Content.new("ch02.html#S1.1", "ch02-html#S1-1", "1", "CH02.1.1", 3),
|
|
206
|
+
Content.new("ch02.html#S1.1.1", "ch02-html#S1-1-1","1", "CH02.1.1.1", 4),
|
|
207
|
+
Content.new("ch02.html#S1.1.1.1", "ch02-html#S1-1-1-1", "1","CH02.1.1.1.1", 5),
|
|
208
|
+
Content.new("ch02.html#S1.1.2", "ch02-html#S1-1-2", "2", "CH02.1.1.2", 4),
|
|
209
|
+
Content.new("ch02.html#S2", "ch02-html#S2", "html#s2", "CH02.2", 2),
|
|
210
|
+
Content.new("ch02.html#S2.1", "ch02-html#S2-1", "1", "CH02.2.1", 3),
|
|
211
|
+
Content.new("ch03.html", "ch03-html", "application/xhtml+xml", "CH03", 1, nil, ["mathml"]),
|
|
212
|
+
Content.new("ch03.html#S1", "ch03-html#S1", "html#s1", "CH03.1", 2),
|
|
213
|
+
Content.new("ch03.html#S1.1", "ch03-html#S1-1", "1", "CH03.1.1", 3),
|
|
214
|
+
Content.new("ch04.html", "ch04-html", "application/xhtml+xml", "CH04", 1),
|
|
215
|
+
Content.new("sample.png", "sample-png", "image/png"),
|
|
216
|
+
Content.new("sample.jpg", "sample-jpg", "image/jpeg"),
|
|
217
|
+
Content.new("sample.JPEG", "sample-JPEG", "image/jpeg"),
|
|
218
|
+
Content.new("sample.SvG", "sample-SvG", "image/svg+xml"),
|
|
219
|
+
Content.new("sample.GIF", "sample-GIF", "image/gif"),
|
|
220
|
+
Content.new("sample.css", "sample-css", "text/css")
|
|
221
|
+
]
|
|
222
|
+
|
|
223
|
+
assert_equal expect, @producer.contents
|
|
224
|
+
end
|
|
225
|
+
|
|
226
|
+
def test_stage3_opf
|
|
227
|
+
stage3
|
|
228
|
+
@producer.opf(@output)
|
|
229
|
+
expect = <<EOT
|
|
230
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
231
|
+
<package version="3.0" xmlns="http://www.idpf.org/2007/opf" unique-identifier="BookId" xml:lang="en">
|
|
232
|
+
<metadata xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:opf="http://www.idpf.org/2007/opf">
|
|
233
|
+
<dc:title id="title">Sample Book</dc:title>
|
|
234
|
+
<dc:language id="language">en</dc:language>
|
|
235
|
+
<dc:date id="date">2011-01-01</dc:date>
|
|
236
|
+
<meta property="dcterms:modified">2014-12-13T14:15:16Z</meta>
|
|
237
|
+
<dc:identifier id="BookId">http://example.jp/</dc:identifier>
|
|
238
|
+
</metadata>
|
|
239
|
+
<manifest>
|
|
240
|
+
<item properties="nav" id="sample-toc.html" href="sample-toc.html" media-type="application/xhtml+xml"/>
|
|
241
|
+
<item id="sample" href="sample.html" media-type="application/xhtml+xml"/>
|
|
242
|
+
<item id="ch01-html" href="ch01.html" media-type="application/xhtml+xml"/>
|
|
243
|
+
<item id="ch02-html" href="ch02.html" media-type="application/xhtml+xml"/>
|
|
244
|
+
<item id="ch03-html" href="ch03.html" media-type="application/xhtml+xml" properties="mathml"/>
|
|
245
|
+
<item id="ch04-html" href="ch04.html" media-type="application/xhtml+xml"/>
|
|
246
|
+
<item id="sample-png" href="sample.png" media-type="image/png"/>
|
|
247
|
+
<item id="sample-jpg" href="sample.jpg" media-type="image/jpeg"/>
|
|
248
|
+
<item id="sample-JPEG" href="sample.JPEG" media-type="image/jpeg"/>
|
|
249
|
+
<item id="sample-SvG" href="sample.SvG" media-type="image/svg+xml"/>
|
|
250
|
+
<item id="sample-GIF" href="sample.GIF" media-type="image/gif"/>
|
|
251
|
+
<item id="sample-css" href="sample.css" media-type="text/css"/>
|
|
252
|
+
</manifest>
|
|
253
|
+
<spine>
|
|
254
|
+
<itemref idref="sample" linear="no"/>
|
|
255
|
+
<itemref idref="ch01-html"/>
|
|
256
|
+
<itemref idref="ch02-html"/>
|
|
257
|
+
<itemref idref="ch03-html"/>
|
|
258
|
+
<itemref idref="ch04-html"/>
|
|
259
|
+
</spine>
|
|
260
|
+
<guide>
|
|
261
|
+
<reference type="cover" title="Cover" href="sample.html"/>
|
|
262
|
+
<reference type="toc" title="Table of Contents" href="sample-toc.html"/>
|
|
263
|
+
</guide>
|
|
264
|
+
</package>
|
|
265
|
+
EOT
|
|
266
|
+
assert_equal expect, @output.string
|
|
267
|
+
end
|
|
268
|
+
|
|
269
|
+
def test_stage3_ncx
|
|
270
|
+
stage3
|
|
271
|
+
@producer.ncx(@output)
|
|
272
|
+
expect = <<EOT
|
|
273
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
274
|
+
<!DOCTYPE html>
|
|
275
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:epub="http://www.idpf.org/2007/ops" xmlns:ops="http://www.idpf.org/2007/ops" xml:lang="en">
|
|
276
|
+
<head>
|
|
277
|
+
<meta charset="UTF-8" />
|
|
278
|
+
<meta name="generator" content="Re:VIEW" />
|
|
279
|
+
<title>Table of Contents</title>
|
|
280
|
+
</head>
|
|
281
|
+
<body>
|
|
282
|
+
<nav xmlns:epub="http://www.idpf.org/2007/ops" epub:type="toc" id="toc">
|
|
283
|
+
<h1 class="toc-title">Table of Contents</h1>
|
|
284
|
+
|
|
285
|
+
<ol class="toc-h1"><li><a href="ch01.html">CH01<>&"</a></li>
|
|
286
|
+
<li><a href="ch02.html">CH02</a>
|
|
287
|
+
<ol class="toc-h2"><li><a href="ch02.html#S1">CH02.1</a></li>
|
|
288
|
+
<li><a href="ch02.html#S2">CH02.2</a></li>
|
|
289
|
+
</ol></li>
|
|
290
|
+
<li><a href="ch03.html">CH03</a>
|
|
291
|
+
<ol class="toc-h2"><li><a href="ch03.html#S1">CH03.1</a></li>
|
|
292
|
+
</ol></li>
|
|
293
|
+
<li><a href="ch04.html">CH04</a></li>
|
|
294
|
+
</ol> </nav>
|
|
295
|
+
</body>
|
|
296
|
+
</html>
|
|
297
|
+
EOT
|
|
298
|
+
assert_equal expect, @output.string
|
|
299
|
+
end
|
|
300
|
+
|
|
301
|
+
def test_stage3_mytoc
|
|
302
|
+
stage3
|
|
303
|
+
@producer.mytoc(@output)
|
|
304
|
+
expect = <<EOT
|
|
305
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
306
|
+
<!DOCTYPE html>
|
|
307
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:epub="http://www.idpf.org/2007/ops" xmlns:ops="http://www.idpf.org/2007/ops" xml:lang="en">
|
|
308
|
+
<head>
|
|
309
|
+
<meta charset="UTF-8" />
|
|
310
|
+
<meta name="generator" content="Re:VIEW" />
|
|
311
|
+
<title>Table of Contents</title>
|
|
312
|
+
</head>
|
|
313
|
+
<body>
|
|
314
|
+
<h1 class="toc-title">Table of Contents</h1>
|
|
315
|
+
|
|
316
|
+
<ul class="toc-h1"><li><a href="ch01.html">CH01<>&"</a></li>
|
|
317
|
+
<li><a href="ch02.html">CH02</a>
|
|
318
|
+
<ul class="toc-h2"><li><a href="ch02.html#S1">CH02.1</a></li>
|
|
319
|
+
<li><a href="ch02.html#S2">CH02.2</a></li>
|
|
320
|
+
</ul></li>
|
|
321
|
+
<li><a href="ch03.html">CH03</a>
|
|
322
|
+
<ul class="toc-h2"><li><a href="ch03.html#S1">CH03.1</a></li>
|
|
323
|
+
</ul></li>
|
|
324
|
+
<li><a href="ch04.html">CH04</a></li>
|
|
325
|
+
</ul></body>
|
|
326
|
+
</html>
|
|
327
|
+
EOT
|
|
328
|
+
assert_equal expect, @output.string
|
|
329
|
+
end
|
|
330
|
+
|
|
331
|
+
def test_stage3_flat
|
|
332
|
+
@producer.merge_params({"epubmaker" =>
|
|
333
|
+
{"flattoc" => true, "flattocindent" => false}
|
|
334
|
+
})
|
|
335
|
+
stage3
|
|
336
|
+
@producer.mytoc(@output)
|
|
337
|
+
expect = <<EOT
|
|
338
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
339
|
+
<!DOCTYPE html>
|
|
340
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:epub="http://www.idpf.org/2007/ops" xmlns:ops="http://www.idpf.org/2007/ops" xml:lang="en">
|
|
341
|
+
<head>
|
|
342
|
+
<meta charset="UTF-8" />
|
|
343
|
+
<meta name="generator" content="Re:VIEW" />
|
|
344
|
+
<title>Table of Contents</title>
|
|
345
|
+
</head>
|
|
346
|
+
<body>
|
|
347
|
+
<h1 class="toc-title">Table of Contents</h1>
|
|
348
|
+
<ul class="toc-h1">
|
|
349
|
+
<li><a href="ch01.html">CH01<>&"</a></li>
|
|
350
|
+
<li><a href="ch02.html">CH02</a></li>
|
|
351
|
+
<li><a href="ch02.html#S1">CH02.1</a></li>
|
|
352
|
+
<li><a href="ch02.html#S2">CH02.2</a></li>
|
|
353
|
+
<li><a href="ch03.html">CH03</a></li>
|
|
354
|
+
<li><a href="ch03.html#S1">CH03.1</a></li>
|
|
355
|
+
<li><a href="ch04.html">CH04</a></li>
|
|
356
|
+
</ul>
|
|
357
|
+
</body>
|
|
358
|
+
</html>
|
|
359
|
+
EOT
|
|
360
|
+
assert_equal expect, @output.string
|
|
361
|
+
end
|
|
362
|
+
|
|
363
|
+
def test_stage3_cover
|
|
364
|
+
stage3
|
|
365
|
+
@producer.cover(@output)
|
|
366
|
+
expect = <<EOT
|
|
367
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
368
|
+
<!DOCTYPE html>
|
|
369
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:epub="http://www.idpf.org/2007/ops" xmlns:ops="http://www.idpf.org/2007/ops" xml:lang="en">
|
|
370
|
+
<head>
|
|
371
|
+
<meta charset="UTF-8" />
|
|
372
|
+
<meta name="generator" content="Re:VIEW" />
|
|
373
|
+
<title>Sample Book</title>
|
|
374
|
+
</head>
|
|
375
|
+
<body epub:type="cover">
|
|
376
|
+
<h1 class="cover-title">Sample Book</h1>
|
|
377
|
+
</body>
|
|
378
|
+
</html>
|
|
379
|
+
EOT
|
|
380
|
+
assert_equal expect, @output.string
|
|
381
|
+
end
|
|
382
|
+
|
|
383
|
+
def test_stage3_cover_with_image
|
|
384
|
+
stage3
|
|
385
|
+
@producer.params["coverimage"] = "sample.png"
|
|
386
|
+
@producer.cover(@output)
|
|
387
|
+
expect = <<EOT
|
|
388
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
389
|
+
<!DOCTYPE html>
|
|
390
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:epub="http://www.idpf.org/2007/ops" xmlns:ops="http://www.idpf.org/2007/ops" xml:lang="en">
|
|
391
|
+
<head>
|
|
392
|
+
<meta charset="UTF-8" />
|
|
393
|
+
<meta name="generator" content="Re:VIEW" />
|
|
394
|
+
<title>Sample Book</title>
|
|
395
|
+
</head>
|
|
396
|
+
<body epub:type="cover">
|
|
397
|
+
<div id="cover-image" class="cover-image">
|
|
398
|
+
<img src="sample.png" alt="Sample Book" class="max"/>
|
|
399
|
+
</div>
|
|
400
|
+
</body>
|
|
401
|
+
</html>
|
|
402
|
+
EOT
|
|
403
|
+
assert_equal expect, @output.string
|
|
404
|
+
end
|
|
405
|
+
|
|
406
|
+
def test_colophon_default
|
|
407
|
+
@producer.params["aut"] = ["Mr.Smith"]
|
|
408
|
+
@producer.params["pbl"] = ["BLUEPRINT"]
|
|
409
|
+
@producer.colophon(@output)
|
|
410
|
+
expect = <<EOT
|
|
411
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
412
|
+
<!DOCTYPE html>
|
|
413
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:epub="http://www.idpf.org/2007/ops" xmlns:ops="http://www.idpf.org/2007/ops" xml:lang="en">
|
|
414
|
+
<head>
|
|
415
|
+
<meta charset="UTF-8" />
|
|
416
|
+
<meta name="generator" content="Re:VIEW" />
|
|
417
|
+
<title>Colophon</title>
|
|
418
|
+
</head>
|
|
419
|
+
<body>
|
|
420
|
+
<div class="colophon">
|
|
421
|
+
<p class="title">Sample Book</p>
|
|
422
|
+
<div class="pubhistory">
|
|
423
|
+
<p>published by Jan. 1, 2011</p>
|
|
424
|
+
</div>
|
|
425
|
+
<table class="colophon">
|
|
426
|
+
<tr><th>Author</th><td>Mr.Smith</td></tr>
|
|
427
|
+
<tr><th>Publisher</th><td>BLUEPRINT</td></tr>
|
|
428
|
+
</table>
|
|
429
|
+
</div>
|
|
430
|
+
</body>
|
|
431
|
+
</html>
|
|
432
|
+
EOT
|
|
433
|
+
assert_equal expect, @output.string
|
|
434
|
+
end
|
|
435
|
+
|
|
436
|
+
def test_colophon_pht
|
|
437
|
+
@producer.params["aut"] = ["Mr.Smith"]
|
|
438
|
+
@producer.params["pbl"] = ["BLUEPRINT"]
|
|
439
|
+
@producer.params["pht"] = ["Mrs.Smith"]
|
|
440
|
+
@producer.colophon(@output)
|
|
441
|
+
expect = <<EOT
|
|
442
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
443
|
+
<!DOCTYPE html>
|
|
444
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:epub="http://www.idpf.org/2007/ops" xmlns:ops="http://www.idpf.org/2007/ops" xml:lang="en">
|
|
445
|
+
<head>
|
|
446
|
+
<meta charset="UTF-8" />
|
|
447
|
+
<meta name="generator" content="Re:VIEW" />
|
|
448
|
+
<title>Colophon</title>
|
|
449
|
+
</head>
|
|
450
|
+
<body>
|
|
451
|
+
<div class="colophon">
|
|
452
|
+
<p class="title">Sample Book</p>
|
|
453
|
+
<div class="pubhistory">
|
|
454
|
+
<p>published by Jan. 1, 2011</p>
|
|
455
|
+
</div>
|
|
456
|
+
<table class="colophon">
|
|
457
|
+
<tr><th>Author</th><td>Mr.Smith</td></tr>
|
|
458
|
+
<tr><th>Publisher</th><td>BLUEPRINT</td></tr>
|
|
459
|
+
<tr><th>Director of Photography</th><td>Mrs.Smith</td></tr>
|
|
460
|
+
</table>
|
|
461
|
+
</div>
|
|
462
|
+
</body>
|
|
463
|
+
</html>
|
|
464
|
+
EOT
|
|
465
|
+
assert_equal expect, @output.string
|
|
466
|
+
end
|
|
467
|
+
|
|
468
|
+
# def test_duplicate_id
|
|
469
|
+
# stage3
|
|
470
|
+
# assert_raise(Error) do
|
|
471
|
+
# @producer.contents << Content.new({"file" => "ch02.html#S1", "title" => "CH02.1", "level" => 2})
|
|
472
|
+
# end
|
|
473
|
+
# end
|
|
474
|
+
|
|
475
|
+
def test_detect_mathml
|
|
476
|
+
Dir.mktmpdir do |dir|
|
|
477
|
+
epubmaker = ReVIEW::EPUBMaker.new
|
|
478
|
+
path = File.join(dir,"test.html")
|
|
479
|
+
html = <<EOT
|
|
480
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
481
|
+
<!DOCTYPE html>
|
|
482
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:epub="http://www.idpf.org/2007/ops" xmlns:ops="http://www.idpf.org/2007/ops" xml:lang="en">
|
|
483
|
+
<head>
|
|
484
|
+
<meta charset="UTF-8" />
|
|
485
|
+
<meta name="generator" content="Re:VIEW" />
|
|
486
|
+
<title>Colophon</title>
|
|
487
|
+
</head>
|
|
488
|
+
<body>
|
|
489
|
+
<div>
|
|
490
|
+
<p><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></p>
|
|
491
|
+
</div>
|
|
492
|
+
</body>
|
|
493
|
+
</html>
|
|
494
|
+
EOT
|
|
495
|
+
File.open(path, "w") do |f|
|
|
496
|
+
f.write(html)
|
|
497
|
+
end
|
|
498
|
+
assert_equal ["mathml"], epubmaker.detect_properties(path)
|
|
499
|
+
end
|
|
500
|
+
end
|
|
501
|
+
|
|
502
|
+
|
|
503
|
+
def test_detect_mathml_ns
|
|
504
|
+
Dir.mktmpdir do |dir|
|
|
505
|
+
epubmaker = ReVIEW::EPUBMaker.new
|
|
506
|
+
path = File.join(dir,"test.html")
|
|
507
|
+
html = <<EOT
|
|
508
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
509
|
+
<!DOCTYPE html>
|
|
510
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:epub="http://www.idpf.org/2007/ops" xmlns:ops="http://www.idpf.org/2007/ops" xml:lang="en">
|
|
511
|
+
<head>
|
|
512
|
+
<meta charset="UTF-8" />
|
|
513
|
+
<meta name="generator" content="Re:VIEW" />
|
|
514
|
+
<title>Colophon</title>
|
|
515
|
+
</head>
|
|
516
|
+
<body>
|
|
517
|
+
<div>
|
|
518
|
+
<p><span class=\"equation\"><m:math xmlns:m='http://www.w3.org/1998/Math/MathML' display='inline'><m:mfrac><m:mrow><m:mo stretchy='false'>-</m:mo><m:mi>b</m:mi><m:mo stretchy='false'>±</m:mo><m:msqrt><m:mrow><m:msup><m:mi>b</m:mi><m:mn>2</m:mn></m:msup><m:mo stretchy='false'>-</m:mo><m:mn>4</m:mn><m:mi>a</m:mi><m:mi>c</m:mi></m:mrow></m:msqrt></m:mrow><m:mrow><m:mn>2</m:mn><m:mi>a</m:mi></m:mrow></m:mfrac></m:math></span></p>
|
|
519
|
+
</div>
|
|
520
|
+
</body>
|
|
521
|
+
</html>
|
|
522
|
+
EOT
|
|
523
|
+
File.open(path, "w") do |f|
|
|
524
|
+
f.write(html)
|
|
525
|
+
end
|
|
526
|
+
assert_equal ["mathml"], epubmaker.detect_properties(path)
|
|
527
|
+
end
|
|
528
|
+
end
|
|
529
|
+
end
|