ebookbinder 1.0.0 → 1.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 +4 -4
- data/Changelog +6 -0
- data/README.md +8 -2
- data/examples/epub2/src/01.xhtml +70 -0
- data/examples/epub2/src/02.xhtml +38 -0
- data/examples/epub3/src/01.xhtml +69 -0
- data/examples/epub3/src/02.xhtml +37 -0
- data/lib/ebookbinder/ebook_base.rb +0 -2
- data/lib/ebookbinder/epub2.rb +20 -13
- data/lib/ebookbinder/epub3.rb +19 -9
- data/lib/ebookbinder/epub_base.rb +32 -0
- data/lib/ebookbinder/version.rb +1 -1
- data/lib/ebookbinder.rb +1 -0
- metadata +40 -19
- data/Gemfile +0 -3
- data/Rakefile +0 -14
- data/ebookbinder.gemspec +0 -26
- data/test/epub2/src/01.xhtml +0 -15
- data/test/epub2/src/02.xhtml +0 -16
- data/test/epub3/src/01.xhtml +0 -14
- data/test/epub3/src/02.xhtml +0 -15
- /data/{test → examples}/epub2/Rakefile +0 -0
- /data/{test → examples}/epub3/Rakefile +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0d4719c670f07d1d20edcae6ddac4966c78d2e50c3862bb17555cca3b5360249
|
4
|
+
data.tar.gz: ddb2c5a78e52b65620f1543ee50785da8a9bb438ed77c17c85a68c9fbcd29d79
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ad1085e2dd71f26e54fbda3850e087574e4c6d637546135e77b8957584d68041b8802553099573badd63691f4a495db394e6d92c647e609e1d6ea85c26b6e59c
|
7
|
+
data.tar.gz: f11dbdb0628a497756c1536eb1ba0299c54fda7f25a712e6dc8b5873a0b630fb3c1c5776c5311fca6f2f728a9674eac5c2226f6e324e62507b84e14a701a698e
|
data/Changelog
CHANGED
data/README.md
CHANGED
@@ -4,14 +4,20 @@
|
|
4
4
|
## Description
|
5
5
|
|
6
6
|
This library should help to make ebooks as easy as possible. It interprets an
|
7
|
-
XHTML structure and generate a corresponding ebook on base of easy
|
7
|
+
XHTML structure and generate a corresponding ebook on base of easy assumptions.
|
8
|
+
|
9
|
+
|
10
|
+
## Usage
|
11
|
+
|
12
|
+
To understand how Ebookbinder works have a look at the examples directory.
|
13
|
+
There are examples of the actual implemented functionality.
|
8
14
|
|
9
15
|
|
10
16
|
## Requirements
|
11
17
|
|
12
18
|
To use rake check it needs an actual version of
|
13
19
|
[epubcheck](https://www.w3.org/publishing/epubcheck/) accessible on the
|
14
|
-
|
20
|
+
command line via `epubcheck`.
|
15
21
|
|
16
22
|
|
17
23
|
## Versioning
|
@@ -0,0 +1,70 @@
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
2
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
|
3
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de">
|
4
|
+
<head>
|
5
|
+
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8"/>
|
6
|
+
<title>Title 01</title>
|
7
|
+
</head>
|
8
|
+
<body>
|
9
|
+
<h1 id="id1">Header 1 number 1</h1>
|
10
|
+
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam</p>
|
11
|
+
<h2 id="id2">Header 2 number 1</h2>
|
12
|
+
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam</p>
|
13
|
+
<h3 id="id3">Header 3 number 1</h3>
|
14
|
+
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam</p>
|
15
|
+
<h4 id="id4">Header 4 number 1</h4>
|
16
|
+
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam</p>
|
17
|
+
<h4 id="id5">Header 4 number 2</h4>
|
18
|
+
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam</p>
|
19
|
+
<h3 id="id6">Header 3 number 2</h3>
|
20
|
+
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam</p>
|
21
|
+
<h4 id="id7">Header 4 number 3</h4>
|
22
|
+
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam</p>
|
23
|
+
<h4 id="id8">Header 4 number 4</h4>
|
24
|
+
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam</p>
|
25
|
+
<h2 id="id9">Header 2 number 2</h2>
|
26
|
+
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam</p>
|
27
|
+
<h3 id="id10">Header 3 number 3</h3>
|
28
|
+
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam</p>
|
29
|
+
<h4 id="id11">Header 4 number 5</h4>
|
30
|
+
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam</p>
|
31
|
+
<h4 id="id12">Header 4 number 6</h4>
|
32
|
+
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam</p>
|
33
|
+
<h3 id="id13">Header 3 number 4</h3>
|
34
|
+
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam</p>
|
35
|
+
<h4 id="id14">Header 4 number 7</h4>
|
36
|
+
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam</p>
|
37
|
+
<h4 id="id15">Header 4 number 8</h4>
|
38
|
+
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam</p>
|
39
|
+
<h1 id="id16">Header 1 number 2</h1>
|
40
|
+
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam</p>
|
41
|
+
<h2 id="id17">Header 2 number 3</h2>
|
42
|
+
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam</p>
|
43
|
+
<h3 id="id18">Header 3 number 5</h3>
|
44
|
+
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam</p>
|
45
|
+
<h4 id="id19">Header 4 number 9</h4>
|
46
|
+
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam</p>
|
47
|
+
<h4 id="id20">Header 4 number 10</h4>
|
48
|
+
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam</p>
|
49
|
+
<h3 id="id21">Header 3 number 6</h3>
|
50
|
+
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam</p>
|
51
|
+
<h4 id="id22">Header 4 number 11</h4>
|
52
|
+
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam</p>
|
53
|
+
<h4 id="id23">Header 4 number 12</h4>
|
54
|
+
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam</p>
|
55
|
+
<h2 id="id24">Header 2 number 4</h2>
|
56
|
+
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam</p>
|
57
|
+
<h3 id="id25">Header 3 number 7</h3>
|
58
|
+
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam</p>
|
59
|
+
<h4 id="id26">Header 4 number 13</h4>
|
60
|
+
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam</p>
|
61
|
+
<h4 id="id27">Header 4 number 14</h4>
|
62
|
+
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam</p>
|
63
|
+
<h3 id="id28">Header 3 number 8</h3>
|
64
|
+
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam</p>
|
65
|
+
<h4 id="id29">Header 4 number 15</h4>
|
66
|
+
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam</p>
|
67
|
+
<h4 id="id30">Header 4 number 16</h4>
|
68
|
+
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam</p>
|
69
|
+
</body>
|
70
|
+
</html>
|
@@ -0,0 +1,38 @@
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
2
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
|
3
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de">
|
4
|
+
<head>
|
5
|
+
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8"/>
|
6
|
+
<title>Title 02</title>
|
7
|
+
</head>
|
8
|
+
<body>
|
9
|
+
<h1 id="id1">Header 1 number 1</h1>
|
10
|
+
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam</p>
|
11
|
+
<h2 id="id2">Header 2 number 1</h2>
|
12
|
+
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam</p>
|
13
|
+
<h3 id="id3">Header 3 number 1</h3>
|
14
|
+
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam</p>
|
15
|
+
<h3 id="id4">Header 3 number 2</h3>
|
16
|
+
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam</p>
|
17
|
+
<h2 id="id5">Header 2 number 2</h2>
|
18
|
+
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam</p>
|
19
|
+
<h3 id="id6">Header 3 number 3</h3>
|
20
|
+
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam</p>
|
21
|
+
<h3 id="id7">Header 3 number 4</h3>
|
22
|
+
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam</p>
|
23
|
+
<h1 id="id8">Header 1 number 2</h1>
|
24
|
+
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam</p>
|
25
|
+
<h2 id="id9">Header 2 number 3</h2>
|
26
|
+
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam</p>
|
27
|
+
<h3 id="id10">Header 3 number 5</h3>
|
28
|
+
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam</p>
|
29
|
+
<h3 id="id11">Header 3 number 6</h3>
|
30
|
+
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam</p>
|
31
|
+
<h2 id="id12">Header 2 number 4</h2>
|
32
|
+
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam</p>
|
33
|
+
<h3 id="id13">Header 3 number 7</h3>
|
34
|
+
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam</p>
|
35
|
+
<h3 id="id14">Header 3 number 8</h3>
|
36
|
+
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam</p>
|
37
|
+
</body>
|
38
|
+
</html>
|
@@ -0,0 +1,69 @@
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
2
|
+
<!DOCTYPE html>
|
3
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:epub="http://www.idpf.org/2007/ops" xml:lang="en" lang="en">
|
4
|
+
<head>
|
5
|
+
<title>Title 01</title>
|
6
|
+
</head>
|
7
|
+
<body>
|
8
|
+
<h1 id="id1">Header 1 number 1</h1>
|
9
|
+
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam</p>
|
10
|
+
<h2 id="id2">Header 2 number 1</h2>
|
11
|
+
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam</p>
|
12
|
+
<h3 id="id3">Header 3 number 1</h3>
|
13
|
+
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam</p>
|
14
|
+
<h4 id="id4">Header 4 number 1</h4>
|
15
|
+
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam</p>
|
16
|
+
<h4 id="id5">Header 4 number 2</h4>
|
17
|
+
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam</p>
|
18
|
+
<h3 id="id6">Header 3 number 2</h3>
|
19
|
+
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam</p>
|
20
|
+
<h4 id="id7">Header 4 number 3</h4>
|
21
|
+
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam</p>
|
22
|
+
<h4 id="id8">Header 4 number 4</h4>
|
23
|
+
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam</p>
|
24
|
+
<h2 id="id9">Header 2 number 2</h2>
|
25
|
+
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam</p>
|
26
|
+
<h3 id="id10">Header 3 number 3</h3>
|
27
|
+
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam</p>
|
28
|
+
<h4 id="id11">Header 4 number 5</h4>
|
29
|
+
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam</p>
|
30
|
+
<h4 id="id12">Header 4 number 6</h4>
|
31
|
+
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam</p>
|
32
|
+
<h3 id="id13">Header 3 number 4</h3>
|
33
|
+
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam</p>
|
34
|
+
<h4 id="id14">Header 4 number 7</h4>
|
35
|
+
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam</p>
|
36
|
+
<h4 id="id15">Header 4 number 8</h4>
|
37
|
+
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam</p>
|
38
|
+
<h1 id="id16">Header 1 number 2</h1>
|
39
|
+
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam</p>
|
40
|
+
<h2 id="id17">Header 2 number 3</h2>
|
41
|
+
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam</p>
|
42
|
+
<h3 id="id18">Header 3 number 5</h3>
|
43
|
+
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam</p>
|
44
|
+
<h4 id="id19">Header 4 number 9</h4>
|
45
|
+
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam</p>
|
46
|
+
<h4 id="id20">Header 4 number 10</h4>
|
47
|
+
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam</p>
|
48
|
+
<h3 id="id21">Header 3 number 6</h3>
|
49
|
+
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam</p>
|
50
|
+
<h4 id="id22">Header 4 number 11</h4>
|
51
|
+
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam</p>
|
52
|
+
<h4 id="id23">Header 4 number 12</h4>
|
53
|
+
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam</p>
|
54
|
+
<h2 id="id24">Header 2 number 4</h2>
|
55
|
+
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam</p>
|
56
|
+
<h3 id="id25">Header 3 number 7</h3>
|
57
|
+
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam</p>
|
58
|
+
<h4 id="id26">Header 4 number 13</h4>
|
59
|
+
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam</p>
|
60
|
+
<h4 id="id27">Header 4 number 14</h4>
|
61
|
+
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam</p>
|
62
|
+
<h3 id="id28">Header 3 number 8</h3>
|
63
|
+
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam</p>
|
64
|
+
<h4 id="id29">Header 4 number 15</h4>
|
65
|
+
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam</p>
|
66
|
+
<h4 id="id30">Header 4 number 16</h4>
|
67
|
+
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam</p>
|
68
|
+
</body>
|
69
|
+
</html>
|
@@ -0,0 +1,37 @@
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
2
|
+
<!DOCTYPE html>
|
3
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:epub="http://www.idpf.org/2007/ops" xml:lang="en" lang="en">
|
4
|
+
<head>
|
5
|
+
<title>Title 02</title>
|
6
|
+
</head>
|
7
|
+
<body>
|
8
|
+
<h1 id="id1">Header 1 number 1</h1>
|
9
|
+
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam</p>
|
10
|
+
<h2 id="id2">Header 2 number 1</h2>
|
11
|
+
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam</p>
|
12
|
+
<h3 id="id3">Header 3 number 1</h3>
|
13
|
+
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam</p>
|
14
|
+
<h3 id="id4">Header 3 number 2</h3>
|
15
|
+
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam</p>
|
16
|
+
<h2 id="id5">Header 2 number 2</h2>
|
17
|
+
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam</p>
|
18
|
+
<h3 id="id6">Header 3 number 3</h3>
|
19
|
+
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam</p>
|
20
|
+
<h3 id="id7">Header 3 number 4</h3>
|
21
|
+
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam</p>
|
22
|
+
<h1 id="id8">Header 1 number 2</h1>
|
23
|
+
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam</p>
|
24
|
+
<h2 id="id9">Header 2 number 3</h2>
|
25
|
+
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam</p>
|
26
|
+
<h3 id="id10">Header 3 number 5</h3>
|
27
|
+
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam</p>
|
28
|
+
<h3 id="id11">Header 3 number 6</h3>
|
29
|
+
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam</p>
|
30
|
+
<h2 id="id12">Header 2 number 4</h2>
|
31
|
+
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam</p>
|
32
|
+
<h3 id="id13">Header 3 number 7</h3>
|
33
|
+
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam</p>
|
34
|
+
<h3 id="id14">Header 3 number 8</h3>
|
35
|
+
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam</p>
|
36
|
+
</body>
|
37
|
+
</html>
|
data/lib/ebookbinder/epub2.rb
CHANGED
@@ -52,6 +52,7 @@ module Ebookbinder
|
|
52
52
|
end
|
53
53
|
|
54
54
|
def generate_ncx_file
|
55
|
+
puts "generate #{ncx_filename}" if verbose
|
55
56
|
builder = Nokogiri::XML::Builder.new(encoding: 'UTF-8') do |xml|
|
56
57
|
xml.ncx(xmlns: 'http://www.daisy.org/z3986/2005/ncx/', version: '2005-1') do
|
57
58
|
xml.head do
|
@@ -63,21 +64,12 @@ module Ebookbinder
|
|
63
64
|
xml.docTitle do
|
64
65
|
xml.text! title
|
65
66
|
end
|
67
|
+
i = 1
|
66
68
|
xml.navMap do
|
67
|
-
i = 0
|
68
69
|
content_filenames.each do |fn|
|
69
70
|
next unless Ebookbinder.mimetype_for_filename(fn) == 'application/xhtml+xml'
|
70
|
-
|
71
|
-
|
72
|
-
i +=1
|
73
|
-
xml.navPoint id: format('id_%04d', i), playOrder: i do
|
74
|
-
xml.navLabel do
|
75
|
-
xml.text! e.text
|
76
|
-
end
|
77
|
-
xml.content src: href(fn, id)
|
78
|
-
end
|
79
|
-
end
|
80
|
-
end
|
71
|
+
h_struct = create_header_struct(fn)
|
72
|
+
i = create_navpoints(fn, xml, h_struct, i)
|
81
73
|
end
|
82
74
|
end
|
83
75
|
end
|
@@ -85,6 +77,21 @@ module Ebookbinder
|
|
85
77
|
File.write(ncx_filename, builder.to_xml)
|
86
78
|
end
|
87
79
|
|
80
|
+
def create_navpoints fn, xml, h_struct, i
|
81
|
+
h_struct.each do |entry|
|
82
|
+
e, children = entry
|
83
|
+
id = e.attribute('id')
|
84
|
+
xml.navPoint id: format('id_%04d', i), playOrder: i do
|
85
|
+
xml.navLabel do
|
86
|
+
xml.text! e.text
|
87
|
+
end
|
88
|
+
xml.content src: href(fn, id)
|
89
|
+
i = create_navpoints(fn, xml, children, i + 1)
|
90
|
+
end
|
91
|
+
end
|
92
|
+
i
|
93
|
+
end
|
94
|
+
|
88
95
|
end
|
89
96
|
|
90
97
|
Epub2.define_tasks do
|
@@ -128,7 +135,7 @@ module Ebookbinder
|
|
128
135
|
root = Dir.pwd
|
129
136
|
epub_filename_fullpath = File.join(root, epub_filename)
|
130
137
|
cd epub_dir do
|
131
|
-
sh "zip -
|
138
|
+
sh "zip -Xqr9D \"#{epub_filename_fullpath}\" mimetype *"
|
132
139
|
end
|
133
140
|
end
|
134
141
|
|
data/lib/ebookbinder/epub3.rb
CHANGED
@@ -53,7 +53,7 @@ module Ebookbinder
|
|
53
53
|
end
|
54
54
|
|
55
55
|
def generate_nav_file
|
56
|
-
puts "generate #{nav_filename}"
|
56
|
+
puts "generate #{nav_filename}" if verbose
|
57
57
|
builder = Nokogiri::XML::Builder.new(encoding: 'UTF-8') do |xml|
|
58
58
|
xml.html(xmlns: 'http://www.w3.org/1999/xhtml') do
|
59
59
|
xml.head do
|
@@ -64,13 +64,8 @@ module Ebookbinder
|
|
64
64
|
xml.ol do
|
65
65
|
content_filenames.each do |fn|
|
66
66
|
next unless Ebookbinder.mimetype_for_filename(fn) == 'application/xhtml+xml'
|
67
|
-
|
68
|
-
|
69
|
-
xml.li do
|
70
|
-
xml.a(e.text, href: href(fn, id))
|
71
|
-
end
|
72
|
-
end
|
73
|
-
end
|
67
|
+
h_struct = create_header_struct(fn)
|
68
|
+
create_li_entries(fn, xml, h_struct)
|
74
69
|
end
|
75
70
|
end
|
76
71
|
end
|
@@ -80,6 +75,21 @@ module Ebookbinder
|
|
80
75
|
File.write(nav_filename, builder.to_xml)
|
81
76
|
end
|
82
77
|
|
78
|
+
def create_li_entries fn, xml, h_struct
|
79
|
+
h_struct.each do |entry|
|
80
|
+
e, children = entry
|
81
|
+
id = e.attribute('id')
|
82
|
+
xml.li do
|
83
|
+
xml.a(e.text, href: href(fn, id))
|
84
|
+
unless children.empty?
|
85
|
+
xml.ol do
|
86
|
+
create_li_entries(fn, xml, children)
|
87
|
+
end
|
88
|
+
end
|
89
|
+
end
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
83
93
|
end
|
84
94
|
|
85
95
|
Epub3.define_tasks do
|
@@ -123,7 +133,7 @@ module Ebookbinder
|
|
123
133
|
root = Dir.pwd
|
124
134
|
epub_filename_fullpath = File.join(root, epub_filename)
|
125
135
|
cd epub_dir do
|
126
|
-
sh "zip -
|
136
|
+
sh "zip -Xqr9D \"#{epub_filename_fullpath}\" mimetype *"
|
127
137
|
end
|
128
138
|
end
|
129
139
|
|
@@ -65,6 +65,38 @@ module Ebookbinder
|
|
65
65
|
res
|
66
66
|
end
|
67
67
|
|
68
|
+
private
|
69
|
+
|
70
|
+
def create_header_struct fn
|
71
|
+
res = []
|
72
|
+
last_h1 = last_h2 = last_h3 = last_h4 = last_h5 = last_h6 = nil
|
73
|
+
Nokogiri.XML(File.read(fn)).search('h1,h2,h3,h4,h5,h6').each do |e|
|
74
|
+
if id = e.attribute('id')
|
75
|
+
case e.name
|
76
|
+
when 'h1'
|
77
|
+
last_h1 = [e, []]
|
78
|
+
res << last_h1
|
79
|
+
when 'h2'
|
80
|
+
last_h2 = [e, []]
|
81
|
+
last_h1.last << last_h2
|
82
|
+
when 'h3'
|
83
|
+
last_h3 = [e, []]
|
84
|
+
last_h2.last << last_h3
|
85
|
+
when 'h4'
|
86
|
+
last_h4 = [e, []]
|
87
|
+
last_h3.last << last_h4
|
88
|
+
when 'h5'
|
89
|
+
last_h5 = [e, []]
|
90
|
+
last_h4.last << last_h5
|
91
|
+
when 'h6'
|
92
|
+
last_h6 = [e, []]
|
93
|
+
last_h5.last << last_h6
|
94
|
+
end
|
95
|
+
end
|
96
|
+
end
|
97
|
+
res
|
98
|
+
end
|
99
|
+
|
68
100
|
end
|
69
101
|
|
70
102
|
end
|
data/lib/ebookbinder/version.rb
CHANGED
data/lib/ebookbinder.rb
CHANGED
metadata
CHANGED
@@ -1,13 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ebookbinder
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
|
+
original_platform: ''
|
6
7
|
authors:
|
7
8
|
- Jan Friedrich
|
8
9
|
bindir: bin
|
9
10
|
cert_chain: []
|
10
|
-
date: 2024-
|
11
|
+
date: 2024-11-11 00:00:00.000000000 Z
|
11
12
|
dependencies:
|
12
13
|
- !ruby/object:Gem::Dependency
|
13
14
|
name: rake
|
@@ -15,54 +16,73 @@ dependencies:
|
|
15
16
|
requirements:
|
16
17
|
- - ">="
|
17
18
|
- !ruby/object:Gem::Version
|
18
|
-
version: '0'
|
19
|
+
version: '13.0'
|
19
20
|
type: :development
|
20
21
|
prerelease: false
|
21
22
|
version_requirements: !ruby/object:Gem::Requirement
|
22
23
|
requirements:
|
23
24
|
- - ">="
|
24
25
|
- !ruby/object:Gem::Version
|
25
|
-
version: '0'
|
26
|
+
version: '13.0'
|
26
27
|
- !ruby/object:Gem::Dependency
|
27
28
|
name: rim
|
28
29
|
requirement: !ruby/object:Gem::Requirement
|
29
30
|
requirements:
|
30
31
|
- - "~>"
|
31
32
|
- !ruby/object:Gem::Version
|
32
|
-
version: '
|
33
|
+
version: '3.0'
|
33
34
|
type: :development
|
34
35
|
prerelease: false
|
35
36
|
version_requirements: !ruby/object:Gem::Requirement
|
36
37
|
requirements:
|
37
38
|
- - "~>"
|
38
39
|
- !ruby/object:Gem::Version
|
39
|
-
version: '
|
40
|
-
|
40
|
+
version: '3.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: regtest
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '2.4'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '2.4'
|
41
55
|
email: janfri26@gmail.com
|
42
56
|
executables: []
|
43
57
|
extensions: []
|
44
58
|
extra_rdoc_files: []
|
45
59
|
files:
|
46
60
|
- Changelog
|
47
|
-
- Gemfile
|
48
61
|
- LICENSE
|
49
62
|
- README.md
|
50
|
-
- Rakefile
|
51
|
-
-
|
63
|
+
- examples/epub2/Rakefile
|
64
|
+
- examples/epub2/src/01.xhtml
|
65
|
+
- examples/epub2/src/02.xhtml
|
66
|
+
- examples/epub3/Rakefile
|
67
|
+
- examples/epub3/src/01.xhtml
|
68
|
+
- examples/epub3/src/02.xhtml
|
52
69
|
- lib/ebookbinder.rb
|
53
70
|
- lib/ebookbinder/ebook_base.rb
|
54
71
|
- lib/ebookbinder/epub2.rb
|
55
72
|
- lib/ebookbinder/epub3.rb
|
56
73
|
- lib/ebookbinder/epub_base.rb
|
57
74
|
- lib/ebookbinder/version.rb
|
58
|
-
|
59
|
-
|
60
|
-
-
|
61
|
-
- test/epub3/Rakefile
|
62
|
-
- test/epub3/src/01.xhtml
|
63
|
-
- test/epub3/src/02.xhtml
|
64
|
-
licenses: []
|
75
|
+
homepage: https://github.com/janfri/ebookbinder
|
76
|
+
licenses:
|
77
|
+
- MIT
|
65
78
|
metadata: {}
|
79
|
+
post_install_message: |
|
80
|
+
+-----------------------------------------------------------------------+
|
81
|
+
| To run rake check you need epubcheck installed and accessible via |
|
82
|
+
| `epubcheck` on the command line. |
|
83
|
+
| |
|
84
|
+
| https://www.w3.org/publishing/epubcheck/ |
|
85
|
+
+-----------------------------------------------------------------------+
|
66
86
|
rdoc_options: []
|
67
87
|
require_paths:
|
68
88
|
- lib
|
@@ -70,7 +90,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
70
90
|
requirements:
|
71
91
|
- - ">="
|
72
92
|
- !ruby/object:Gem::Version
|
73
|
-
version: '
|
93
|
+
version: '2.3'
|
74
94
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
75
95
|
requirements:
|
76
96
|
- - ">="
|
@@ -79,5 +99,6 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
79
99
|
requirements: []
|
80
100
|
rubygems_version: 3.6.0.dev
|
81
101
|
specification_version: 4
|
82
|
-
summary:
|
102
|
+
summary: This library should help to make ebooks as easy as possible. It interprets
|
103
|
+
an XHTML structure and generate a corresponding ebook on base of easy asumptions.
|
83
104
|
test_files: []
|
data/Gemfile
DELETED
data/Rakefile
DELETED
@@ -1,14 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
|
-
require 'rim/tire'
|
4
|
-
require 'rim/version'
|
5
|
-
require_relative 'lib/ebookbinder/version'
|
6
|
-
|
7
|
-
Rim.setup do |r|
|
8
|
-
r.name = 'ebookbinder'
|
9
|
-
r.authors = 'Jan Friedrich'
|
10
|
-
r.email = 'janfri26@gmail.com'
|
11
|
-
r.version = Ebookbinder::VERSION
|
12
|
-
r.gem_files.exclude(/build/).exclude {|e| File.directory?(e)}
|
13
|
-
r.test_files = FileList.new()
|
14
|
-
end
|
data/ebookbinder.gemspec
DELETED
@@ -1,26 +0,0 @@
|
|
1
|
-
# -*- encoding: utf-8 -*-
|
2
|
-
# stub: ebookbinder 1.0.0 ruby lib
|
3
|
-
#
|
4
|
-
# This file is automatically generated by rim.
|
5
|
-
# PLEASE DO NOT EDIT IT DIRECTLY!
|
6
|
-
# Change the values in Rim.setup in Rakefile instead.
|
7
|
-
|
8
|
-
Gem::Specification.new do |s|
|
9
|
-
s.name = "ebookbinder"
|
10
|
-
s.version = "1.0.0"
|
11
|
-
|
12
|
-
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
13
|
-
s.require_paths = ["lib"]
|
14
|
-
s.authors = ["Jan Friedrich"]
|
15
|
-
s.date = "2024-03-02"
|
16
|
-
s.description = ""
|
17
|
-
s.email = "janfri26@gmail.com"
|
18
|
-
s.files = ["Changelog", "Gemfile", "LICENSE", "README.md", "Rakefile", "ebookbinder.gemspec", "lib/ebookbinder.rb", "lib/ebookbinder/ebook_base.rb", "lib/ebookbinder/epub2.rb", "lib/ebookbinder/epub3.rb", "lib/ebookbinder/epub_base.rb", "lib/ebookbinder/version.rb", "test/epub2/Rakefile", "test/epub2/src/01.xhtml", "test/epub2/src/02.xhtml", "test/epub3/Rakefile", "test/epub3/src/01.xhtml", "test/epub3/src/02.xhtml"]
|
19
|
-
s.rubygems_version = "3.6.0.dev"
|
20
|
-
s.summary = ""
|
21
|
-
|
22
|
-
s.specification_version = 4
|
23
|
-
|
24
|
-
s.add_development_dependency(%q<rake>, [">= 0"])
|
25
|
-
s.add_development_dependency(%q<rim>, ["~> 2.17"])
|
26
|
-
end
|
data/test/epub2/src/01.xhtml
DELETED
@@ -1,15 +0,0 @@
|
|
1
|
-
<?xml version="1.0" encoding="utf-8"?>
|
2
|
-
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
|
3
|
-
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de">
|
4
|
-
<head>
|
5
|
-
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8"/>
|
6
|
-
<title>Title 01</title>
|
7
|
-
</head>
|
8
|
-
<body>
|
9
|
-
<h1 id="id1">H1 number 1</h1>
|
10
|
-
<h1 id="id2">H1 number 2</h1>
|
11
|
-
<h1 id="id3">H1 number 3</h1>
|
12
|
-
<h1 id="id4">H1 number 4</h1>
|
13
|
-
<h1 id="id5">H1 number 5</h1>
|
14
|
-
</body>
|
15
|
-
</html>
|
data/test/epub2/src/02.xhtml
DELETED
@@ -1,16 +0,0 @@
|
|
1
|
-
<?xml version="1.0" encoding="utf-8"?>
|
2
|
-
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
|
3
|
-
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de">
|
4
|
-
<head>
|
5
|
-
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8"/>
|
6
|
-
<title>Title 02</title>
|
7
|
-
</head>
|
8
|
-
<body>
|
9
|
-
<h1 id="id1">H1 number 1</h1>
|
10
|
-
<h1 id="id2">H1 number 2</h1>
|
11
|
-
<h1 id="id3">H1 number 3</h1>
|
12
|
-
<h1 id="id4">H1 number 4</h1>
|
13
|
-
<h1 id="id5">H1 number 5</h1>
|
14
|
-
</body>
|
15
|
-
</html>
|
16
|
-
|
data/test/epub3/src/01.xhtml
DELETED
@@ -1,14 +0,0 @@
|
|
1
|
-
<?xml version="1.0" encoding="utf-8"?>
|
2
|
-
<!DOCTYPE html>
|
3
|
-
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:epub="http://www.idpf.org/2007/ops" xml:lang="en" lang="en">
|
4
|
-
<head>
|
5
|
-
<title>Title 01</title>
|
6
|
-
</head>
|
7
|
-
<body>
|
8
|
-
<h1 id="id1">H1 number 1</h1>
|
9
|
-
<h1 id="id2">H1 number 2</h1>
|
10
|
-
<h1 id="id3">H1 number 3</h1>
|
11
|
-
<h1 id="id4">H1 number 4</h1>
|
12
|
-
<h1 id="id5">H1 number 5</h1>
|
13
|
-
</body>
|
14
|
-
</html>
|
data/test/epub3/src/02.xhtml
DELETED
@@ -1,15 +0,0 @@
|
|
1
|
-
<?xml version="1.0" encoding="utf-8"?>
|
2
|
-
<!DOCTYPE html>
|
3
|
-
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:epub="http://www.idpf.org/2007/ops" xml:lang="en" lang="en">
|
4
|
-
<head>
|
5
|
-
<title>Title 02</title>
|
6
|
-
</head>
|
7
|
-
<body>
|
8
|
-
<h1 id="id1">H1 number 1</h1>
|
9
|
-
<h1 id="id2">H1 number 2</h1>
|
10
|
-
<h1 id="id3">H1 number 3</h1>
|
11
|
-
<h1 id="id4">H1 number 4</h1>
|
12
|
-
<h1 id="id5">H1 number 5</h1>
|
13
|
-
</body>
|
14
|
-
</html>
|
15
|
-
|
File without changes
|
File without changes
|