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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e84bb03efbd7cc1485383c90b47e60fbe9e61f711b5dcd19f016372433c08b00
4
- data.tar.gz: 43a1abc9fde8c47f9d8cd50f8829f490f249381240bbf7e772a7d7377c7d92c3
3
+ metadata.gz: 0d4719c670f07d1d20edcae6ddac4966c78d2e50c3862bb17555cca3b5360249
4
+ data.tar.gz: ddb2c5a78e52b65620f1543ee50785da8a9bb438ed77c17c85a68c9fbcd29d79
5
5
  SHA512:
6
- metadata.gz: be92f5553c6ff6417c4d2bafe8e8b487cbc9084f7721f647e8de787d354c9816a3dd81a44bf322231de57c84881a42a084b0d7460764dd622436842edc4cac30
7
- data.tar.gz: 388f22704f7770c26881542c3fe53d97ef58a5cd9e851e74382441ce26dca73c599048532b06ec704f60caee3e1202bd6ee2479fcbd05793cb20f6c3685667f3
6
+ metadata.gz: ad1085e2dd71f26e54fbda3850e087574e4c6d637546135e77b8957584d68041b8802553099573badd63691f4a495db394e6d92c647e609e1d6ea85c26b6e59c
7
+ data.tar.gz: f11dbdb0628a497756c1536eb1ba0299c54fda7f25a712e6dc8b5873a0b630fb3c1c5776c5311fca6f2f728a9674eac5c2226f6e324e62507b84e14a701a698e
data/Changelog CHANGED
@@ -1,2 +1,8 @@
1
+ 1.1.0
2
+ Generate hierarchical table of content from XHTML header elements.
3
+
4
+ 1.0.1
5
+ Improve repository structure.
6
+
1
7
  1.0.0
2
8
  First public release.
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 asumptions.
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
- commandline via `epubcheck`.
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>
@@ -1,7 +1,5 @@
1
1
  # encoding: utf-8
2
2
  require_relative '../ebookbinder'
3
-
4
- require 'rake/clean'
5
3
  require 'singleton'
6
4
 
7
5
  module Ebookbinder
@@ -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
- Nokogiri.XML(File.read(fn)).search('h1').each do |e|
71
- if id = e.attribute('id')
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 -Xr9D \"#{epub_filename_fullpath}\" mimetype *"
138
+ sh "zip -Xqr9D \"#{epub_filename_fullpath}\" mimetype *"
132
139
  end
133
140
  end
134
141
 
@@ -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
- Nokogiri.XML(File.read(fn)).search('h1').each do |e|
68
- if id = e.attribute('id')
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 -Xr9D \"#{epub_filename_fullpath}\" mimetype *"
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
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Ebookbinder
4
4
 
5
- VERSION = '1.0.0'
5
+ VERSION = '1.1.0'
6
6
 
7
7
  end
data/lib/ebookbinder.rb CHANGED
@@ -1,5 +1,6 @@
1
1
  # encoding: utf-8
2
2
  require 'rake'
3
+ require 'rake/clean'
3
4
  require 'yaml'
4
5
 
5
6
  module Ebookbinder
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.0.0
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-03-02 00:00:00.000000000 Z
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: '2.17'
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: '2.17'
40
- description: ''
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
- - ebookbinder.gemspec
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
- - test/epub2/Rakefile
59
- - test/epub2/src/01.xhtml
60
- - test/epub2/src/02.xhtml
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: '0'
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
@@ -1,3 +0,0 @@
1
- # encoding: utf-8
2
-
3
- gem 'nokogiri'
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
@@ -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>
@@ -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
-
@@ -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>
@@ -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