review 2.0.0.beta1 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +66 -1
- data/.rubocop_todo.yml +617 -0
- data/.travis.yml +16 -1
- data/ChangeLog +48 -0
- data/Dockerfile +22 -0
- data/Gemfile +0 -1
- data/README.md +97 -0
- data/Rakefile +10 -11
- data/appveyor.yml +9 -0
- data/bin/review +46 -0
- data/bin/review-check +8 -21
- data/bin/review-compile +26 -43
- data/bin/review-index +9 -22
- data/bin/review-init +21 -25
- data/bin/review-preproc +9 -13
- data/bin/review-validate +1 -1
- data/bin/review-vol +3 -17
- data/bin/review-webmaker +15 -0
- data/doc/NEWS.ja.md +534 -0
- data/doc/NEWS.md +538 -0
- data/doc/catalog.ja.md +10 -18
- data/doc/catalog.md +5 -9
- data/doc/config.yml.sample +319 -0
- data/doc/customize_epub.ja.md +42 -0
- data/doc/format.ja.md +320 -288
- data/doc/format.md +277 -170
- data/doc/format_idg.ja.md +82 -175
- data/doc/pdfmaker.ja.md +61 -0
- data/doc/pdfmaker.md +65 -0
- data/doc/quickstart.ja.md +88 -98
- data/doc/quickstart.md +72 -110
- data/doc/sample.css +41 -0
- data/doc/writing_vertical.ja.md +55 -0
- data/doc/writing_vertical.md +5 -0
- data/lib/epubmaker/content.rb +3 -3
- data/lib/epubmaker/epubcommon.rb +173 -145
- data/lib/epubmaker/epubv2.rb +24 -77
- data/lib/epubmaker/epubv3.rb +72 -73
- data/lib/epubmaker/producer.rb +54 -30
- data/lib/lineinput.rb +48 -0
- data/lib/review/book.rb +0 -1
- data/lib/review/book/base.rb +47 -27
- data/lib/review/book/chapter.rb +48 -19
- data/lib/review/book/compilable.rb +10 -14
- data/lib/review/book/index.rb +10 -19
- data/lib/review/book/page_metric.rb +0 -10
- data/lib/review/book/part.rb +17 -3
- data/lib/review/builder.rb +84 -68
- data/lib/review/catalog.rb +5 -1
- data/lib/review/compiler.rb +327 -4657
- data/lib/review/configure.rb +84 -10
- data/lib/review/converter.rb +28 -0
- data/lib/review/epubbuilder.rb +1 -1
- data/lib/review/epubmaker.rb +142 -158
- data/lib/review/ewbbuilder.rb +5 -5
- data/lib/review/exception.rb +1 -1
- data/lib/review/extentions.rb +1 -1
- data/lib/review/extentions/hash.rb +15 -0
- data/lib/review/extentions/string.rb +2 -1
- data/lib/review/htmlbuilder.rb +364 -348
- data/lib/review/htmltoc.rb +44 -0
- data/lib/review/htmlutils.rb +12 -6
- data/lib/review/i18n.rb +78 -6
- data/lib/review/i18n.yml +7 -4
- data/lib/review/idgxmlbuilder.rb +226 -267
- data/lib/review/latexbuilder.rb +281 -274
- data/lib/review/latexutils.rb +56 -49
- data/lib/review/makerhelper.rb +8 -4
- data/lib/review/markdownbuilder.rb +80 -124
- data/lib/review/pdfmaker.rb +197 -138
- data/lib/review/preprocessor.rb +16 -67
- data/lib/review/template.rb +24 -0
- data/lib/review/textbuilder.rb +1 -1
- data/lib/review/textutils.rb +18 -24
- data/lib/review/tocparser.rb +51 -106
- data/lib/review/tocprinter.rb +61 -117
- data/lib/review/topbuilder.rb +119 -126
- data/lib/review/unfold.rb +2 -2
- data/lib/review/version.rb +1 -1
- data/lib/review/webmaker.rb +302 -0
- data/lib/review/webtocprinter.rb +48 -0
- data/lib/review/yamlloader.rb +47 -0
- data/review.gemspec +3 -3
- data/templates/html/layout-html5.html.erb +17 -0
- data/templates/html/layout-xhtml1.html.erb +20 -0
- data/{lib/review → templates/latex}/layout.tex.erb +107 -115
- 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/web/html/layout-html5.html.erb +56 -0
- data/templates/web/html/layout-xhtml1.html.erb +20 -0
- data/templates/xml/container.xml.erb +6 -0
- data/test/assets/test.xml.erb +3 -0
- data/test/assets/test_template.tex +28 -71
- data/test/assets/test_template_backmatter.tex +1 -9
- data/test/sample-book/src/Rakefile +12 -3
- data/{doc/sample.yml → test/sample-book/src/config-epub2.yml} +92 -147
- data/test/sample-book/src/config.yml +40 -154
- data/test/sample-book/src/style-web.css +45 -0
- data/test/sample-book/src/style.css +23 -1
- data/test/test.re +1 -1
- data/test/test_book.rb +15 -17
- data/test/test_book_chapter.rb +2 -80
- data/test/test_book_part.rb +1 -1
- data/test/test_builder.rb +28 -6
- data/test/test_catalog.rb +17 -0
- data/test/test_compiler.rb +14 -59
- data/test/test_configure.rb +94 -0
- data/test/test_converter.rb +21 -0
- data/test/test_epub3maker.rb +155 -3
- data/test/test_epubmaker.rb +245 -30
- data/test/test_epubmaker_cmd.rb +2 -2
- data/test/test_extentions_hash.rb +60 -0
- data/test/test_helper.rb +4 -47
- data/test/test_htmlbuilder.rb +282 -175
- data/test/test_htmltoc.rb +33 -0
- data/test/test_i18n.rb +134 -70
- data/test/test_idgxmlbuilder.rb +58 -39
- data/test/test_latexbuilder.rb +132 -14
- data/test/test_lineinput.rb +5 -26
- data/test/test_makerhelper.rb +6 -4
- data/test/test_markdownbuilder.rb +23 -5
- data/test/test_pdfmaker.rb +86 -20
- data/test/test_pdfmaker_cmd.rb +1 -3
- data/test/test_review_ext.rb +1 -1
- data/test/test_template.rb +27 -0
- data/test/test_textutils.rb +36 -0
- data/test/test_tocparser.rb +25 -0
- data/test/test_topbuilder.rb +34 -2
- data/test/test_yamlloader.rb +188 -0
- metadata +71 -29
- data/README.rdoc +0 -81
- data/bin/review-epubmaker-legacy +0 -1024
- data/doc/ruby-uuid/README +0 -11
- data/doc/ruby-uuid/README.ja +0 -34
- data/lib/review/compiler/literals_1_8.kpeg +0 -19
- data/lib/review/compiler/literals_1_8.rb +0 -432
- data/lib/review/compiler/literals_1_9.kpeg +0 -22
- data/lib/review/compiler/literals_1_9.rb +0 -435
- data/lib/review/extentions/array.rb +0 -25
- data/lib/review/htmllayout.rb +0 -41
- data/lib/review/inaobuilder.rb +0 -357
- data/lib/review/location.rb +0 -24
- data/lib/review/node.rb +0 -267
- data/lib/review/review.kpeg +0 -724
- data/lib/uuid.rb +0 -312
- data/rubocop-todo.yml +0 -456
- data/test/test_inaobuilder.rb +0 -247
- data/test/test_uuid.rb +0 -157
data/test/test_book_part.rb
CHANGED
@@ -33,7 +33,7 @@ class PartTest < Test::Unit::TestCase
|
|
33
33
|
assert_equal 0, part.volume.lines
|
34
34
|
|
35
35
|
chs = []
|
36
|
-
tfs = []
|
36
|
+
tfs = [] ## prevent from removing Tempfile
|
37
37
|
Tempfile.open('part_test') do |o|
|
38
38
|
o.print "12345"
|
39
39
|
chs << Book::Chapter.new(book, nil, nil, o.path)
|
data/test/test_builder.rb
CHANGED
@@ -44,6 +44,16 @@ class BuidlerTest < Test::Unit::TestCase
|
|
44
44
|
assert_equal '', b.result
|
45
45
|
end
|
46
46
|
|
47
|
+
def test_print_and_puts
|
48
|
+
b = Builder.new
|
49
|
+
assert_raises(NoMethodError) do # XXX: OK?
|
50
|
+
b.print ""
|
51
|
+
end
|
52
|
+
assert_raises(NoMethodError) do # XXX: OK?
|
53
|
+
b.puts ""
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
47
57
|
def test_not_implemented_methods
|
48
58
|
ex = NoMethodError # XXX: OK?
|
49
59
|
[
|
@@ -60,12 +70,24 @@ class BuidlerTest < Test::Unit::TestCase
|
|
60
70
|
end
|
61
71
|
end
|
62
72
|
|
63
|
-
def
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
73
|
+
def test_compile_inline
|
74
|
+
text = "abc"
|
75
|
+
assert_equal [:text, text], @b.compile_inline(text)
|
76
|
+
end
|
77
|
+
|
78
|
+
def test_inline_ruby
|
79
|
+
def @b.compile_ruby(base,ruby)
|
80
|
+
[base,ruby]
|
81
|
+
end
|
82
|
+
str = @b.inline_ruby("foo,bar")
|
83
|
+
assert_equal str, ["foo","bar"]
|
84
|
+
str = @b.inline_ruby("foo\\,\\,,\\,bar,buz")
|
85
|
+
assert_equal str, ["foo,,",",bar,buz"]
|
86
|
+
end
|
87
|
+
|
88
|
+
def test_compile_inline_backslash
|
89
|
+
text = "abc\\d\\#a"
|
90
|
+
assert_equal [:text, text], @b.compile_inline(text)
|
69
91
|
end
|
70
92
|
|
71
93
|
class XBuilder < Builder
|
data/test/test_catalog.rb
CHANGED
@@ -81,6 +81,16 @@ back02.re
|
|
81
81
|
assert_equal(exp.chomp, sut.postdef)
|
82
82
|
end
|
83
83
|
|
84
|
+
def test_from_object
|
85
|
+
sut = Catalog.new(yaml_hash)
|
86
|
+
exp =<<-EOS
|
87
|
+
ch01.re
|
88
|
+
ch02.re
|
89
|
+
EOS
|
90
|
+
assert_equal(exp.chomp, sut.chaps)
|
91
|
+
end
|
92
|
+
|
93
|
+
|
84
94
|
private
|
85
95
|
def yaml
|
86
96
|
StringIO.new <<-EOS
|
@@ -103,6 +113,13 @@ POSTDEF:
|
|
103
113
|
EOS
|
104
114
|
end
|
105
115
|
|
116
|
+
def yaml_hash
|
117
|
+
{"PREDEF" => %w(pre01.re pre02.re),
|
118
|
+
"CHAPS" => %w(ch01.re ch02.re),
|
119
|
+
"APPENDIX" => %w(post01.re post02.re),
|
120
|
+
"POSTDEF" => %w(back01.re back02.re)}
|
121
|
+
end
|
122
|
+
|
106
123
|
def yaml_with_parts
|
107
124
|
StringIO.new <<-EOS
|
108
125
|
CHAPS:
|
data/test/test_compiler.rb
CHANGED
@@ -4,88 +4,43 @@ require 'test_helper'
|
|
4
4
|
require 'review/compiler'
|
5
5
|
require 'review/book'
|
6
6
|
require 'review/latexbuilder'
|
7
|
-
require 'review/htmlbuilder'
|
8
7
|
|
9
8
|
class CompilerTest < Test::Unit::TestCase
|
10
9
|
include ReVIEW
|
11
10
|
|
12
11
|
def setup
|
13
|
-
@builder =
|
14
|
-
@
|
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
|
-
|
12
|
+
@builder = LATEXBuilder.new()
|
13
|
+
@c = Compiler.new(@builder)
|
31
14
|
end
|
32
15
|
|
33
16
|
def test_parse_args
|
34
|
-
args =
|
35
|
-
assert_equal ["foo","bar"], args
|
17
|
+
args = @c.__send__(:parse_args, "[foo][bar]")
|
18
|
+
assert_equal ["foo","bar"], args
|
36
19
|
end
|
37
20
|
|
38
21
|
def test_parse_args_with_brace1
|
39
|
-
args =
|
40
|
-
assert_equal ["fo[][]o","bar"], args
|
22
|
+
args = @c.__send__(:parse_args, "[fo[\\][\\]o][bar]")
|
23
|
+
assert_equal ["fo[][]o","bar"], args
|
41
24
|
end
|
42
25
|
|
43
26
|
def test_parse_args_with_brace2
|
44
|
-
args =
|
45
|
-
assert_equal ["f]o]o","bar"], args
|
27
|
+
args = @c.__send__(:parse_args, "[f\\]o\\]o][bar]")
|
28
|
+
assert_equal ["f]o]o","bar"], args
|
46
29
|
end
|
47
30
|
|
48
31
|
def test_parse_args_with_backslash
|
49
|
-
args =
|
50
|
-
assert_equal ["foo","bar\\buz"], args
|
32
|
+
args = @c.__send__(:parse_args, "[foo][bar\\buz]")
|
33
|
+
assert_equal ["foo","bar\\buz"], args
|
51
34
|
end
|
52
35
|
|
53
36
|
def test_parse_args_with_backslash2
|
54
|
-
args =
|
55
|
-
assert_equal ["foo","bar\\#\\[\\!"], args
|
37
|
+
args = @c.__send__(:parse_args, "[foo][bar\\#\\[\\!]")
|
38
|
+
assert_equal ["foo","bar\\#\\[\\!"], args
|
56
39
|
end
|
57
40
|
|
58
41
|
def test_parse_args_with_backslash3
|
59
|
-
args =
|
60
|
-
assert_equal ["foo","bar\\buz"], args
|
61
|
-
end
|
62
|
-
|
63
|
-
def test_compile_inline
|
64
|
-
def @compiler.inline_ruby(*args)
|
65
|
-
return args
|
66
|
-
end
|
67
|
-
args = compile_inline("@<ruby>{abc}",false)
|
68
|
-
assert_equal "abc", args.content[0].content.to_doc
|
69
|
-
end
|
70
|
-
|
71
|
-
def test_inline_ruby
|
72
|
-
# def @compiler.inline_ruby(*args)
|
73
|
-
# return args
|
74
|
-
# end
|
75
|
-
args = compile_inline("@<ruby>{foo,bar}",false)
|
76
|
-
assert_equal "foo", args.content[0].content[0].to_doc
|
77
|
-
assert_equal "bar", args.content[0].content[1].to_doc
|
78
|
-
args = compile_inline("@<ruby>{foo\\,\\,,\\,bar\\,buz}", false)
|
79
|
-
assert_equal "foo,,", args.content[0].content[0].to_doc
|
80
|
-
assert_equal ",bar,buz", args.content[0].content[1].to_doc
|
81
|
-
end
|
82
|
-
|
83
|
-
def test_compile_inline_backslash
|
84
|
-
def @compiler.inline_dummy(*args)
|
85
|
-
return args
|
86
|
-
end
|
87
|
-
args = compile_inline("@<dummy>{abc\\d\\#a}", false)
|
88
|
-
assert_equal "abc\\d\\#a", args.content[0].content.to_doc
|
42
|
+
args = @c.__send__(:parse_args, "[foo][bar\\\\buz]")
|
43
|
+
assert_equal ["foo","bar\\buz"], args
|
89
44
|
end
|
90
45
|
end
|
91
46
|
|
@@ -0,0 +1,94 @@
|
|
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
|
+
"title" => "Sample Book(EPUB)"},
|
21
|
+
})
|
22
|
+
@output = StringIO.new
|
23
|
+
I18n.setup(@config["language"])
|
24
|
+
end
|
25
|
+
|
26
|
+
def test_configure_class
|
27
|
+
assert_equal ReVIEW::Configure, @config.class
|
28
|
+
end
|
29
|
+
|
30
|
+
def test_configure_get
|
31
|
+
bookname = @config["bookname"]
|
32
|
+
assert_equal "sample", bookname
|
33
|
+
end
|
34
|
+
|
35
|
+
def test_configure_get2
|
36
|
+
assert_equal true, @config["epubmaker"]["flattocindent"]
|
37
|
+
end
|
38
|
+
|
39
|
+
def test_configure_with_maker
|
40
|
+
@config.maker = "epubmaker"
|
41
|
+
assert_equal true, @config["flattocindent"]
|
42
|
+
assert_equal true, @config["epubmaker"]["flattocindent"]
|
43
|
+
end
|
44
|
+
|
45
|
+
def test_configure_with_maker_override
|
46
|
+
@config.maker = "epubmaker"
|
47
|
+
assert_equal "Sample Book(EPUB)", @config["title"]
|
48
|
+
@config.maker = "pdfmaker"
|
49
|
+
assert_equal "Sample Book", @config["title"]
|
50
|
+
end
|
51
|
+
|
52
|
+
def test_configure_with_invalidmaker
|
53
|
+
@config.maker = "pdfmaker"
|
54
|
+
assert_equal nil, @config["flattocindent"]
|
55
|
+
assert_equal true, @config["epubmaker"]["flattocindent"]
|
56
|
+
end
|
57
|
+
|
58
|
+
def test_check_version_nosetting
|
59
|
+
@config.delete("review_version")
|
60
|
+
assert_raise ReVIEW::ConfigError do
|
61
|
+
@config.check_version("2.0.0")
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
def test_check_version_noversion
|
66
|
+
@config["review_version"] = nil
|
67
|
+
assert_nothing_raised ReVIEW::ConfigError do
|
68
|
+
@config.check_version("2.0.0")
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
def test_check_version
|
73
|
+
@config["review_version"] = "2.1"
|
74
|
+
assert_nothing_raised do
|
75
|
+
@config.check_version("2.1.0")
|
76
|
+
end
|
77
|
+
assert_nothing_raised do
|
78
|
+
@config.check_version("2.2.0")
|
79
|
+
end
|
80
|
+
assert_nothing_raised do
|
81
|
+
@config.check_version("2.2.5")
|
82
|
+
end
|
83
|
+
assert_raise ReVIEW::ConfigError do
|
84
|
+
@config.check_version("2.0.0")
|
85
|
+
end
|
86
|
+
assert_raise ReVIEW::ConfigError do
|
87
|
+
@config.check_version("3.0.0")
|
88
|
+
end
|
89
|
+
assert_raise ReVIEW::ConfigError do
|
90
|
+
@config.check_version("1.8.0")
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
require 'book_test_helper'
|
3
|
+
require 'review/converter'
|
4
|
+
|
5
|
+
class ConverterTest < Test::Unit::TestCase
|
6
|
+
include BookTestHelper
|
7
|
+
|
8
|
+
def setup
|
9
|
+
end
|
10
|
+
|
11
|
+
def test_converter_builder
|
12
|
+
mktmpbookdir('config.yml'=>"bookname: book\n") do |dir, book, files|
|
13
|
+
@book = Book::Base.new(dir)
|
14
|
+
config_file = File.join(dir,"config.yml")
|
15
|
+
@book.load_config(config_file)
|
16
|
+
@converter = ReVIEW::Converter.new(@book, ReVIEW::LATEXBuilder.new)
|
17
|
+
assert_equal "latex", @book.config["builder"]
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
data/test/test_epub3maker.rb
CHANGED
@@ -69,7 +69,81 @@ EOT
|
|
69
69
|
<item properties="nav" id="sample-toc.html" href="sample-toc.html" media-type="application/xhtml+xml"/>
|
70
70
|
<item id="sample" href="sample.html" media-type="application/xhtml+xml"/>
|
71
71
|
</manifest>
|
72
|
-
<spine>
|
72
|
+
<spine page-progression-direction="ltr">
|
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_opf_ebpaj
|
85
|
+
@producer.merge_params({"opf_prefix"=>{"ebpaj"=>"http://www.ebpaj.jp/"},"opf_meta"=>{"ebpaj:guide-version" => "1.1.2"}})
|
86
|
+
@producer.opf(@output)
|
87
|
+
expect = <<EOT
|
88
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
89
|
+
<package version="3.0" xmlns="http://www.idpf.org/2007/opf" unique-identifier="BookId" xml:lang="en" prefix="ebpaj: http://www.ebpaj.jp/">
|
90
|
+
<metadata xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:opf="http://www.idpf.org/2007/opf">
|
91
|
+
<dc:title id="title">Sample Book</dc:title>
|
92
|
+
<dc:language id="language">en</dc:language>
|
93
|
+
<dc:date id="date">2011-01-01</dc:date>
|
94
|
+
<meta property="dcterms:modified">2014-12-13T14:15:16Z</meta>
|
95
|
+
<dc:identifier id="BookId">http://example.jp/</dc:identifier>
|
96
|
+
<meta property="ebpaj:guide-version">1.1.2</meta>
|
97
|
+
</metadata>
|
98
|
+
<manifest>
|
99
|
+
<item properties="nav" id="sample-toc.html" href="sample-toc.html" media-type="application/xhtml+xml"/>
|
100
|
+
<item id="sample" href="sample.html" media-type="application/xhtml+xml"/>
|
101
|
+
</manifest>
|
102
|
+
<spine page-progression-direction="ltr">
|
103
|
+
<itemref idref="sample" linear="no"/>
|
104
|
+
</spine>
|
105
|
+
<guide>
|
106
|
+
<reference type="cover" title="Cover" href="sample.html"/>
|
107
|
+
<reference type="toc" title="Table of Contents" href="sample-toc.html"/>
|
108
|
+
</guide>
|
109
|
+
</package>
|
110
|
+
EOT
|
111
|
+
assert_equal expect, @output.string
|
112
|
+
end
|
113
|
+
|
114
|
+
def test_stage1_opf_fileas
|
115
|
+
@producer.params["title"] = {"name" => "これは書籍です", "file-as" => "コレハショセキデス"}
|
116
|
+
@producer.params["aut"] = [{"name" => "著者A", "file-as" => "チョシャA"}, {"name" => "著者B", "file-as" => "チョシャB"}]
|
117
|
+
@producer.params["pbl"] = [{"name" => "出版社", "file-as" => "シュッパンシャ"}]
|
118
|
+
@producer.opf(@output)
|
119
|
+
expect = <<EOT
|
120
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
121
|
+
<package version="3.0" xmlns="http://www.idpf.org/2007/opf" unique-identifier="BookId" xml:lang="en">
|
122
|
+
<metadata xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:opf="http://www.idpf.org/2007/opf">
|
123
|
+
<dc:title id="title">これは書籍です</dc:title>
|
124
|
+
<meta refines="#title" property="file-as">コレハショセキデス</meta>
|
125
|
+
<dc:language id="language">en</dc:language>
|
126
|
+
<dc:date id="date">2011-01-01</dc:date>
|
127
|
+
<meta property="dcterms:modified">2014-12-13T14:15:16Z</meta>
|
128
|
+
<dc:identifier id="BookId">http://example.jp/</dc:identifier>
|
129
|
+
<dc:creator id="aut-0">著者A</dc:creator>
|
130
|
+
<meta refines="#aut-0" property="role" scheme="marc:relators">aut</meta>
|
131
|
+
<meta refines="#aut-0" property="file-as">チョシャA</meta>
|
132
|
+
<dc:creator id="aut-1">著者B</dc:creator>
|
133
|
+
<meta refines="#aut-1" property="role" scheme="marc:relators">aut</meta>
|
134
|
+
<meta refines="#aut-1" property="file-as">チョシャB</meta>
|
135
|
+
<dc:contributor id="pbl-0">出版社</dc:contributor>
|
136
|
+
<meta refines="#pbl-0" property="role" scheme="marc:relators">pbl</meta>
|
137
|
+
<meta refines="#pbl-0" property="file-as">シュッパンシャ</meta>
|
138
|
+
<dc:publisher id="pub-pbl-0">出版社</dc:publisher>
|
139
|
+
<meta refines="#pub-pbl-0" property="role" scheme="marc:relators">pbl</meta>
|
140
|
+
<meta refines="#pub-pbl-0" property="file-as">シュッパンシャ</meta>
|
141
|
+
</metadata>
|
142
|
+
<manifest>
|
143
|
+
<item properties="nav" id="sample-toc.html" href="sample-toc.html" media-type="application/xhtml+xml"/>
|
144
|
+
<item id="sample" href="sample.html" media-type="application/xhtml+xml"/>
|
145
|
+
</manifest>
|
146
|
+
<spine page-progression-direction="ltr">
|
73
147
|
<itemref idref="sample" linear="no"/>
|
74
148
|
</spine>
|
75
149
|
<guide>
|
@@ -136,7 +210,7 @@ EOT
|
|
136
210
|
<item id="sample" href="sample.html" media-type="application/xhtml+xml"/>
|
137
211
|
<item id="ch01-html" href="ch01.html" media-type="application/xhtml+xml"/>
|
138
212
|
</manifest>
|
139
|
-
<spine>
|
213
|
+
<spine page-progression-direction="ltr">
|
140
214
|
<itemref idref="sample" linear="no"/>
|
141
215
|
<itemref idref="ch01-html"/>
|
142
216
|
</spine>
|
@@ -250,7 +324,7 @@ EOT
|
|
250
324
|
<item id="sample-GIF" href="sample.GIF" media-type="image/gif"/>
|
251
325
|
<item id="sample-css" href="sample.css" media-type="text/css"/>
|
252
326
|
</manifest>
|
253
|
-
<spine>
|
327
|
+
<spine page-progression-direction="ltr">
|
254
328
|
<itemref idref="sample" linear="no"/>
|
255
329
|
<itemref idref="ch01-html"/>
|
256
330
|
<itemref idref="ch02-html"/>
|
@@ -465,6 +539,84 @@ EOT
|
|
465
539
|
assert_equal expect, @output.string
|
466
540
|
end
|
467
541
|
|
542
|
+
def test_colophon_history
|
543
|
+
@producer.params["aut"] = ["Mr.Smith"]
|
544
|
+
@producer.params["pbl"] = ["BLUEPRINT"]
|
545
|
+
@producer.params["pht"] = ["Mrs.Smith"]
|
546
|
+
@producer.merge_params({"language" => "ja"})
|
547
|
+
history = @producer.instance_eval{ @epub.colophon_history }
|
548
|
+
expect = <<EOT
|
549
|
+
<div class="pubhistory">
|
550
|
+
<p>2011年1月1日 発行</p>
|
551
|
+
</div>
|
552
|
+
EOT
|
553
|
+
assert_equal expect, history
|
554
|
+
end
|
555
|
+
|
556
|
+
def test_colophon_history_2
|
557
|
+
@producer.params["aut"] = ["Mr.Smith"]
|
558
|
+
@producer.params["pbl"] = ["BLUEPRINT"]
|
559
|
+
@producer.params["pht"] = ["Mrs.Smith"]
|
560
|
+
@producer.merge_params({"language" => "ja",
|
561
|
+
"history" => [[
|
562
|
+
"2011-08-03 v1.0.0版発行",
|
563
|
+
"2012-02-15 v1.1.0版発行",
|
564
|
+
]] })
|
565
|
+
history = @producer.instance_eval{ @epub.colophon_history }
|
566
|
+
expect = <<EOT
|
567
|
+
<div class="pubhistory">
|
568
|
+
<p>2011年8月3日 v1.0.0版発行</p>
|
569
|
+
<p>2012年2月15日 v1.1.0版発行</p>
|
570
|
+
</div>
|
571
|
+
EOT
|
572
|
+
assert_equal expect, history
|
573
|
+
end
|
574
|
+
|
575
|
+
def test_colophon_history_date
|
576
|
+
@producer.params["aut"] = ["Mr.Smith"]
|
577
|
+
@producer.params["pbl"] = ["BLUEPRINT"]
|
578
|
+
@producer.params["pht"] = ["Mrs.Smith"]
|
579
|
+
@producer.merge_params({"language" => "ja",
|
580
|
+
"history" => [[
|
581
|
+
"2011-08-03",
|
582
|
+
"2012-02-15",
|
583
|
+
]] })
|
584
|
+
history = @producer.instance_eval{ @epub.colophon_history }
|
585
|
+
expect = <<EOT
|
586
|
+
<div class="pubhistory">
|
587
|
+
<p>2011年8月3日 初版第1刷 発行</p>
|
588
|
+
<p>2012年2月15日 初版第2刷 発行</p>
|
589
|
+
</div>
|
590
|
+
EOT
|
591
|
+
assert_equal expect, history
|
592
|
+
end
|
593
|
+
|
594
|
+
def test_colophon_history_date2
|
595
|
+
@producer.params["aut"] = ["Mr.Smith"]
|
596
|
+
@producer.params["pbl"] = ["BLUEPRINT"]
|
597
|
+
@producer.params["pht"] = ["Mrs.Smith"]
|
598
|
+
@producer.merge_params({"language" => "ja",
|
599
|
+
"history" => [[
|
600
|
+
"2011-08-03",
|
601
|
+
"2012-02-15",
|
602
|
+
],[
|
603
|
+
"2012-10-01",
|
604
|
+
],[
|
605
|
+
"2013-03-01",
|
606
|
+
]] })
|
607
|
+
history = @producer.instance_eval{ @epub.colophon_history }
|
608
|
+
expect = <<EOT
|
609
|
+
<div class="pubhistory">
|
610
|
+
<p>2011年8月3日 初版第1刷 発行</p>
|
611
|
+
<p>2012年2月15日 初版第2刷 発行</p>
|
612
|
+
<p>2012年10月1日 第2版第1刷 発行</p>
|
613
|
+
<p>2013年3月1日 第3版第1刷 発行</p>
|
614
|
+
</div>
|
615
|
+
EOT
|
616
|
+
assert_equal expect, history
|
617
|
+
end
|
618
|
+
|
619
|
+
|
468
620
|
# def test_duplicate_id
|
469
621
|
# stage3
|
470
622
|
# assert_raise(Error) do
|