epub-parser 0.3.4 → 0.3.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.markdown +4 -0
- data/README.markdown +4 -0
- data/lib/epub/parser/content_document.rb +7 -3
- data/lib/epub/parser/version.rb +1 -1
- data/test/fixtures/book/META-INF/container.xml +1 -0
- data/test/fixtures/book/OEBPS/2_chapter-1.xhtml +8 -0
- data/test/fixtures/book/OEBPS/content.opf +30 -0
- data/test/fixtures/book/OEBPS/toc.xhtml +20 -0
- data/test/test_content_document.rb +7 -0
- data/test/test_parser_ocf.rb +1 -1
- data/test/test_publication.rb +4 -1
- metadata +4 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ee9d5ae3802a16461fd85224ecf47f4b2eafc6181e0c84761a9108a61b5890f1
|
4
|
+
data.tar.gz: 24d6b8164c849969121e9b4975e366a1683e7367096214d5c78ec6f3676e12f0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 45c6d1b877698ab09620ecd079c805fd873fde3e77210e76a251bf416390fd1d17fcb5ea4246f55d4616640952e7db00dca5f3635f6829d429851c24cf6ecec2
|
7
|
+
data.tar.gz: 97e70f781221ef0036761d84fd1ae718f543588a04ce78b5209e068604c9d2b6c33ce68c57f51499420e65710cf260c86cb8016c5ee8674c21db56c348af8ad6
|
data/CHANGELOG.markdown
CHANGED
data/README.markdown
CHANGED
@@ -159,6 +159,10 @@ If you find other gems, please tell me or request a pull request.
|
|
159
159
|
RECENT CHANGES
|
160
160
|
--------------
|
161
161
|
|
162
|
+
### 0.3.5
|
163
|
+
|
164
|
+
* [BUG FIX]Fix a bug that {EPUB::ContentDocument::Navigation::Item#item} is `nil` when `href` includes double dots(`..`)(Thanks [aelkiss][]!)
|
165
|
+
|
162
166
|
### 0.3.4
|
163
167
|
|
164
168
|
* Add {EPUB::Publication::Package#full_path} and {EPUB::Publication::Package#rootfile}
|
@@ -82,9 +82,13 @@ module EPUB
|
|
82
82
|
item.text = extract_attribute(a_or_span, 'title').to_s if item.text.nil? || item.text.empty?
|
83
83
|
end
|
84
84
|
item.href = extract_attribute(a_or_span, 'href')
|
85
|
-
|
86
|
-
|
87
|
-
|
85
|
+
# TODO: too dirty and with potential performance issue
|
86
|
+
full_path = EPUB::Publication::Package::Manifest::Item::DUMMY_ROOT_IRI + @item.manifest.package.full_path + @item.href + item.href
|
87
|
+
full_path.scheme = nil
|
88
|
+
full_path.host = nil
|
89
|
+
full_path.path = full_path.path[1..-1]
|
90
|
+
full_path.fragment = nil
|
91
|
+
item.item = @item.manifest.items.find {|it| it.full_path == full_path}
|
88
92
|
end
|
89
93
|
item.items = element.xpath('./xhtml:ol[1]/xhtml:li', EPUB::NAMESPACES).map {|li| parse_navigation_item(li)}
|
90
94
|
|
data/lib/epub/parser/version.rb
CHANGED
@@ -3,5 +3,6 @@
|
|
3
3
|
<rootfiles>
|
4
4
|
<rootfile full-path="OPS/ルートファイル.opf" media-type="application/oebps-package+xml" />
|
5
5
|
<rootfile full-path="nested/dir/content.opf" media-type="application/oebps-package+xml" />
|
6
|
+
<rootfile full-path="OEBPS/content.opf" media-type="application/oebps-package+xml" />
|
6
7
|
</rootfiles>
|
7
8
|
</container>
|
@@ -0,0 +1,8 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<!DOCTYPE html>
|
3
|
+
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
|
4
|
+
<head>
|
5
|
+
<meta charset="UTF-8" />
|
6
|
+
<title>Chapter 1</title>
|
7
|
+
</head>
|
8
|
+
<body><div class="chapter-heading"> <h1 class="chapter-number">1</h1> <h1 class="chapter-title">Chapter 1</h1> </div> <div class="chapter-content"><p class="no-indent">This is the first sentence. This is the next sentence. This is all for Chapter 1.</p> <p><br/></p> </div> </body></html>
|
@@ -0,0 +1,30 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<package xmlns="http://www.idpf.org/2007/opf" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:media="http://www.idpf.org/epub/vocab/overlays/#" version="3.0" unique-identifier="BookId" xml:lang="en" prefix="ibooks: http://vocabulary.itunes.apple.com/rdf/ibooks/vocabulary-extensions-1.0/">
|
3
|
+
<metadata xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:opf="http://www.idpf.org/2007/opf">
|
4
|
+
<dc:identifier id="BookId">af6e04ec-ca74-4951-a5cd-f0572885a7f9</dc:identifier>
|
5
|
+
<meta refines="#BookId" property="identifier-type" scheme="onix:codelist5">22</meta>
|
6
|
+
<meta property="dcterms:identifier" id="meta-identifier">BookId</meta>
|
7
|
+
<dc:title>Test</dc:title>
|
8
|
+
<meta property="dcterms:title" id="meta-title">Test</meta>
|
9
|
+
<dc:language>en</dc:language>
|
10
|
+
<meta property="dcterms:language" id="meta-language">en</meta>
|
11
|
+
<meta property="dcterms:modified">2017-12-05T20:55:41Z</meta>
|
12
|
+
<dc:creator id="creator">anonymous</dc:creator>
|
13
|
+
<meta refines="#creator" property="file-as">anonymous</meta>
|
14
|
+
<meta property="dcterms:publisher">anonymous</meta>
|
15
|
+
<dc:publisher>anonymous</dc:publisher>
|
16
|
+
<meta property="dcterms:date">2017-12-5</meta>
|
17
|
+
<dc:date>2017-12-5</dc:date>
|
18
|
+
<meta property="dcterms:rights">see MIT-LICENSE</meta>
|
19
|
+
<dc:rights>see MIT-LICENSE</dc:rights>
|
20
|
+
<meta name="cover" content="image_cover"/>
|
21
|
+
</metadata>
|
22
|
+
<manifest>
|
23
|
+
<item id="toc" href="../OEBPS/toc.xhtml" media-type="application/xhtml+xml" properties="nav"/>
|
24
|
+
<item id="content_2_chapter-1" href="../OEBPS/2_chapter-1.xhtml" media-type="application/xhtml+xml"/>
|
25
|
+
</manifest>
|
26
|
+
<spine toc="ncx">
|
27
|
+
<itemref idref="toc"/>
|
28
|
+
<itemref idref="content_2_chapter-1"/>
|
29
|
+
</spine>
|
30
|
+
</package>
|
@@ -0,0 +1,20 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:epub="http://www.idpf.org/2007/ops" xml:lang="en" lang="en">
|
3
|
+
<head>
|
4
|
+
<title>Test</title>
|
5
|
+
<meta charset="UTF-8"/>
|
6
|
+
</head>
|
7
|
+
<body>
|
8
|
+
<h1 class="chapter-title">Contents</h1>
|
9
|
+
<nav id="toc" epub:type="toc">
|
10
|
+
<ol class="toc">
|
11
|
+
<li class="toc-chapter">
|
12
|
+
<a href="../OEBPS/2_chapter-1.xhtml" epub:type="bodymatter">Chapter 1</a>
|
13
|
+
<ol class="toc">
|
14
|
+
|
15
|
+
</ol>
|
16
|
+
</li>
|
17
|
+
</ol>
|
18
|
+
</nav>
|
19
|
+
</body>
|
20
|
+
</html>
|
@@ -125,5 +125,12 @@ class TestContentDocument < Test::Unit::TestCase
|
|
125
125
|
|
126
126
|
assert_equal "nested/dir/text/2_chapter-1.xhtml", package.manifest.nav.content_document.navigation.items.first.item.full_path.path
|
127
127
|
end
|
128
|
+
|
129
|
+
def test_navigation_with_double_dots
|
130
|
+
book = EPUB::Parser.parse("test/fixtures/book.epub")
|
131
|
+
package = book.packages[2]
|
132
|
+
|
133
|
+
assert_equal "OEBPS/2_chapter-1.xhtml", package.manifest.nav.content_document.navigation.items.first.item.full_path.to_s
|
134
|
+
end
|
128
135
|
end
|
129
136
|
end
|
data/test/test_parser_ocf.rb
CHANGED
@@ -17,7 +17,7 @@ class TestParserOCF < Test::Unit::TestCase
|
|
17
17
|
end
|
18
18
|
|
19
19
|
def test_parsed_container_has_two_rootfiles
|
20
|
-
assert_equal
|
20
|
+
assert_equal 3, @parser.parse_container(@container_xml).rootfiles.length
|
21
21
|
end
|
22
22
|
|
23
23
|
def test_parse_container_can_find_primary_rootfile
|
data/test/test_publication.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# coding: utf-8
|
1
2
|
require_relative 'helper'
|
2
3
|
require 'epub/publication'
|
3
4
|
|
@@ -301,8 +302,10 @@ class TestPublication < Test::Unit::TestCase
|
|
301
302
|
item = EPUB::Publication::Package::Manifest::Item.new
|
302
303
|
item.media_type = 'application/xhtml+xml'
|
303
304
|
item.properties = %w[nav]
|
305
|
+
item.href = "nav.xhtml"
|
304
306
|
stub(item).read {File.read(File.expand_path('../fixtures/book/OPS/nav.xhtml', __FILE__))}
|
305
|
-
stub(item
|
307
|
+
stub(item.manifest).items {[]}
|
308
|
+
stub(item.manifest).package.stub!.full_path {Addressable::URI.parse("OPS/ルートファイル.opf")}
|
306
309
|
|
307
310
|
assert_instance_of EPUB::ContentDocument::Navigation, item.content_document
|
308
311
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: epub-parser
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- KITAITI Makoto
|
@@ -360,6 +360,9 @@ files:
|
|
360
360
|
- man/epubinfo.1.ronn
|
361
361
|
- test/fixtures/book/META-INF/container.xml
|
362
362
|
- test/fixtures/book/META-INF/metadata.xml
|
363
|
+
- test/fixtures/book/OEBPS/2_chapter-1.xhtml
|
364
|
+
- test/fixtures/book/OEBPS/content.opf
|
365
|
+
- test/fixtures/book/OEBPS/toc.xhtml
|
363
366
|
- test/fixtures/book/OPS/%E6%97%A5%E6%9C%AC%E8%AA%9E.xhtml
|
364
367
|
- test/fixtures/book/OPS/case-sensitive.xhtml
|
365
368
|
- test/fixtures/book/OPS/containing space.xhtml
|