kindlerb 0.1.1 → 1.0.1

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 4cab5c3ffc932e8c475b229d29b77fcd403cedc0
4
+ data.tar.gz: 55c0bceb12bb7e190b65ce1a2450229c5fb2ff55
5
+ SHA512:
6
+ metadata.gz: 45f6cad989b027854eaa0f788f3290f2749ec206bd785917cc1c79c77d1a58499a9d6727fcd4236801573ef83ee8cb8b8e021aee3b3c258fe6fa733476a3bc0f
7
+ data.tar.gz: a2124e7d8f7ebc1dcb2765ecd95addfa6b0b64bd52ca830a66e528001c306d91cadc90faf0390c6ae2aca0b520235c1520332ea0bd4c5aff58a28b97d5635e05
data/.gitignore CHANGED
@@ -1 +1 @@
1
- testtree/
1
+ testtree/
data/Gemfile CHANGED
@@ -1,3 +1,3 @@
1
-
2
- gem 'nokogiri'
3
- gem 'mustache'
1
+
2
+ gem 'nokogiri'
3
+ gem 'mustache'
data/MIT-LICENSE.txt CHANGED
@@ -1,21 +1,21 @@
1
- Copyright (c) 2010 Daniel Choi, http://danielchoi.com/software/
2
-
3
- Permission is hereby granted, free of charge, to any person obtaining
4
- a copy of this software and associated documentation files (the
5
- "Software"), to deal in the Software without restriction, including
6
- without limitation the rights to use, copy, modify, merge, publish,
7
- distribute, sublicense, and/or sell copies of the Software, and to
8
- permit persons to whom the Software is furnished to do so, subject to
9
- the following conditions:
10
-
11
- The above copyright notice and this permission notice shall be
12
- included in all copies or substantial portions of the Software.
13
-
14
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21
-
1
+ Copyright (c) 2010 Daniel Choi, http://danielchoi.com/software/
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21
+
@@ -1,111 +1,139 @@
1
- # kindlerb
2
-
3
- kindlerb is a Ruby Kindle periodical-format ebook generator. I extracted
4
- this tool from [kindlefeeder.com][kf1]. I also built [Kindlefodder][kf2] on
5
- top of kindlerb.
6
-
7
- [kf1]:http://kindlefeeder.com
8
- [kf2]:https://github.com/danchoi/kindlefodder
9
-
10
- kindlerb converts a file tree of sections, articles, images, and metadata into
11
- a MOBI periodical-formatted document for the Kindle. It is a wrapper around the
12
- `kindlegen` program from Amazon that hides the details for templating OPF and NCX
13
- files.
14
-
15
- ## Requirements
16
-
17
- * Ruby 1.9.x.
18
- * Make sure kindlegen is on your PATH.
19
-
20
- You can get kindlegen [here][kindlegen].
21
-
22
- [kindlegen]:http://www.amazon.com/gp/feature.html?docId=1000234621
23
-
24
- ## Install
25
-
26
- gem install kindlerb
27
-
28
- ## How to use it
29
-
30
- Run the program at the root of the file tree:
31
-
32
- kindlerb [filetree dir]
33
-
34
- The output will be a mobi document.
35
-
36
- The file tree input structure is
37
-
38
- _document.yml
39
- sections/
40
- 000/
41
- _section.txt # contains section title
42
- 000.html # an article
43
- 001.html
44
- 001/
45
- _section.txt
46
- 000.html
47
- 001.html
48
- 002.html
49
-
50
- kindlerb will extract article titles from the `<title>` (in `<head>`) tag in
51
- the *.html files .
52
-
53
- The _document.yml is a YAML document. It should look like something like this:
54
-
55
- ---
56
- doc_uuid: kindlerb.21395-2011-12-19
57
- title: my-ebook
58
- author: my-ebook
59
- publisher: me
60
- subject: News
61
- date: "2011-12-19"
62
- masthead: /home/choi/Desktop/masthead.gif
63
- cover: /home/choi/Desktop/cover.gif
64
- mobi_outfile: my-ebook.mobi
65
-
66
- kindlerb uses the the file tree and _document.yml to construct these additional
67
- resource required by Amazon's `kindlegen` program:
68
-
69
- * nav-contents.ncx
70
- * contents.html
71
- * kindlerb.opf
72
-
73
- After that, kindlerb will exec the kindlegen program to generate your mobi
74
- document. The filename the output document is specified by the 'mobi_outfile'
75
- value in _document.yml.
76
-
77
- ## Images
78
-
79
- kindlerb will incorporate images into the generated ebook by parsing all the
80
- `src` attributes of all the `<img>` tags in your *.html files.
81
-
82
- The `src` attributes must point to image files on the local filesystem. If the
83
- paths are relative, they should be relative to the target file tree root.
84
-
85
-
86
- ## Encoding
87
-
88
- Make sure all your textual source files are encoded in UTF-8.
89
-
90
-
91
- ## Author
92
-
93
- Daniel Choi
94
-
95
- * email: dhchoi@gmail.com
96
- * github: [danchoi][github]
97
- * twitter: @danchoi
98
-
99
- [github]:http://github.com/danchoi
100
-
101
-
102
- I'm indebted to [mhl][mhl] for writing the
103
- [guardian-for-kindle][guardian-for-kindle] MOBI generator in Python. kindlerb
104
- ported a bunch of ideas from that project over to Ruby.
105
-
106
- [mhl]:https://github.com/mhl
107
- [guardian-for-kindle]:https://github.com/mhl/guardian-for-kindle
108
-
109
-
110
-
111
-
1
+ # kindlerb
2
+
3
+ kindlerb is a Ruby Kindle periodical-format ebook generator. This tool was initially extracted from
4
+ [kindlefeeder.com][kf1]. [Kindlefodder][kf2] was also built on
5
+ top of kindlerb.
6
+
7
+ [kf1]:http://kindlefeeder.com
8
+ [kf2]:https://github.com/danchoi/kindlefodder
9
+
10
+ kindlerb converts a file tree of sections, articles, images, and metadata into
11
+ a MOBI periodical-formatted document for the Kindle. It is a wrapper around the
12
+ `kindlegen` program from Amazon that hides the details for templating OPF and NCX
13
+ files.
14
+
15
+ ## Requirements
16
+
17
+ * Ruby 1.9.x.
18
+
19
+ ## Installation and Setup
20
+
21
+ Add `gem 'kindlerb', github: 'danchoi/kindlerb'` to your Gemfile then run
22
+ ```
23
+ bundle install
24
+ bundle binstubs kindlerb
25
+ ```
26
+ Then **cd** into your app root and then run the below command - this will install the required Kindlegen package:
27
+ `./bin/setupkindlerb`
28
+
29
+ You're good to go!
30
+
31
+ **OR**
32
+
33
+ run `gem install kindlerb`
34
+
35
+ Then **cd** into your app root and then run the below command - this will install the required Kindlegen package:
36
+ `setupkindlerb`
37
+
38
+ You're good to go!
39
+
40
+ ## How to use it
41
+
42
+ Require kindlerb in your project.
43
+
44
+ require 'kindlerb'
45
+
46
+ ### Kindlerb.run(target_dir, verbose, compression_method)
47
+
48
+ Only the first argument is mandatory, everything else will use default values if no arguments are provided.
49
+
50
+ **target_dir** = Put the directory that contains your ebook files
51
+
52
+ **verbose** = true or false. Default is false.
53
+
54
+ **compression_method** = 'c0' (no compression) OR 'c1' (standard DOC compression) OR 'c2' (Kindle huffdic compression). Default is 'c2'.
55
+
56
+ The output will be a mobi document.
57
+
58
+ **target_dir** should include the below files and structure:
59
+
60
+ _document.yml
61
+ sections/
62
+ 000/
63
+ _section.txt # contains section title
64
+ 000.html # an article
65
+ 001.html
66
+ 001/
67
+ _section.txt
68
+ 000.html
69
+ 001.html
70
+ 002.html
71
+
72
+ kindlerb will extract article titles from the `<title>` (in `<head>`) tag in
73
+ the *.html files .
74
+
75
+ The _document.yml is a YAML document. It should look like something like this:
76
+
77
+ ---
78
+ doc_uuid: kindlerb.21395-2011-12-19
79
+ title: my-ebook
80
+ author: my-ebook
81
+ publisher: me
82
+ subject: News
83
+ date: "2011-12-19"
84
+ masthead: /home/choi/Desktop/masthead.gif
85
+ cover: /home/choi/Desktop/cover.gif
86
+ mobi_outfile: my-ebook.mobi
87
+
88
+ kindlerb uses the the file tree and _document.yml to construct these additional
89
+ resource required by Amazon's `kindlegen` program:
90
+
91
+ * nav-contents.ncx
92
+ * contents.html
93
+ * kindlerb.opf
94
+
95
+ After that, kindlerb will exec the kindlegen program to generate your mobi
96
+ document. The filename the output document is specified by the 'mobi_outfile'
97
+ value in _document.yml.
98
+
99
+ ### Kindlerb.executable
100
+ Will return the full path to the Kindlegen executable file.
101
+
102
+ ### Kindlerb.download
103
+ This is called when you first install the gem and call `setupkindlerb` executable. It downloads the appropriate Kindlegen version for the host OS. There should be no need to call this after initial set up.
104
+
105
+ ## Images
106
+
107
+ kindlerb will incorporate images into the generated ebook by parsing all the
108
+ `src` attributes of all the `<img>` tags in your *.html files.
109
+
110
+ The `src` attributes must point to image files on the local filesystem. If the
111
+ paths are relative, they should be relative to the target file tree root.
112
+
113
+
114
+ ## Encoding
115
+
116
+ Make sure all your textual source files are encoded in UTF-8.
117
+
118
+
119
+ ## Authors
120
+
121
+ **Daniel Choi**
122
+ * email: dhchoi@gmail.com
123
+ * github: [danchoi][github]
124
+ * twitter: @danchoi
125
+ [github]:http://github.com/danchoi
126
+
127
+ **Emir Aydin**
128
+ * email: emir@emiraydin.com
129
+ * github: [emiraydin][github]
130
+ * twitter: @emiraydin
131
+ [github]:http://github.com/emiraydin
132
+
133
+
134
+ Indebted to [mhl][mhl] for writing the
135
+ [guardian-for-kindle][guardian-for-kindle] MOBI generator in Python. kindlerb
136
+ ported a bunch of ideas from that project over to Ruby.
137
+
138
+ [mhl]:https://github.com/mhl
139
+ [guardian-for-kindle]:https://github.com/mhl/guardian-for-kindle
data/Rakefile CHANGED
@@ -1,71 +1,71 @@
1
- require 'rake'
2
- require 'rake/testtask'
3
- require 'bundler'
4
- Bundler::GemHelper.install_tasks
5
-
6
- $LOAD_PATH.unshift File.join(File.dirname(__FILE__), 'lib')
7
-
8
- desc "release and build and push new website"
9
- task :push => [:release, :web]
10
-
11
- desc "Bumps version number up one and git commits"
12
- task :bump do
13
- basefile = "lib/vmail/version.rb"
14
- file = File.read(basefile)
15
- oldver = file[/VERSION = '(\d.\d.\d)'/, 1]
16
- newver_i = oldver.gsub(".", '').to_i + 1
17
- newver = ("%.3d" % newver_i).split(//).join('.')
18
- puts oldver
19
- puts newver
20
- puts "Bumping version: #{oldver} => #{newver}"
21
- newfile = file.gsub("VERSION = '#{oldver}'", "VERSION = '#{newver}'")
22
- File.open(basefile, 'w') {|f| f.write newfile}
23
- `git commit -am 'Bump'`
24
- end
25
-
26
-
27
- desc "build and push website"
28
- task :web => :build_webpage do
29
- puts "Building and pushing website"
30
- Dir.chdir "../project-webpages" do
31
- `scp out/vmail.html zoe2@instantwatcher.com:~/danielchoi.com/public/software/`
32
- `rsync -avz out/images-vmail zoe2@instantwatcher.com:~/danielchoi.com/public/software/`
33
- `rsync -avz out/stylesheets zoe2@instantwatcher.com:~/danielchoi.com/public/software/`
34
- `rsync -avz out/lightbox2 zoe2@instantwatcher.com:~/danielchoi.com/public/software/`
35
- end
36
- `open http://danielchoi.com/software/vmail.html`
37
- end
38
-
39
- desc "build webpage"
40
- task :build_webpage do
41
- `cp README.markdown ../project-webpages/src/vmail.README.markdown`
42
- `cp coverage.markdown ../project-webpages/src/vmail.coverage.markdown`
43
- Dir.chdir "../project-webpages" do
44
- puts `ruby gen.rb vmail #{Vmail::VERSION}`
45
- #`open out/vmail.html`
46
- end
47
- end
48
-
49
-
50
- desc "git push and rake release bumped version"
51
- task :bumped do
52
- puts `git push && rake release`
53
- Rake::Task["web"].execute
54
- end
55
-
56
- desc "Run tests"
57
- task :test do
58
- $:.unshift File.expand_path("test")
59
- require 'test_helper'
60
- Dir.chdir("test") do
61
- Dir['*_test.rb'].each do |x|
62
- puts "requiring #{x}"
63
- require x
64
- end
65
- end
66
-
67
- MiniTest::Unit.autorun
68
- end
69
-
70
- task :default => :test
71
-
1
+ require 'rake'
2
+ require 'rake/testtask'
3
+ require 'bundler'
4
+ Bundler::GemHelper.install_tasks
5
+
6
+ $LOAD_PATH.unshift File.join(File.dirname(__FILE__), 'lib')
7
+
8
+ desc "release and build and push new website"
9
+ task :push => [:release, :web]
10
+
11
+ desc "Bumps version number up one and git commits"
12
+ task :bump do
13
+ basefile = "lib/vmail/version.rb"
14
+ file = File.read(basefile)
15
+ oldver = file[/VERSION = '(\d.\d.\d)'/, 1]
16
+ newver_i = oldver.gsub(".", '').to_i + 1
17
+ newver = ("%.3d" % newver_i).split(//).join('.')
18
+ puts oldver
19
+ puts newver
20
+ puts "Bumping version: #{oldver} => #{newver}"
21
+ newfile = file.gsub("VERSION = '#{oldver}'", "VERSION = '#{newver}'")
22
+ File.open(basefile, 'w') {|f| f.write newfile}
23
+ `git commit -am 'Bump'`
24
+ end
25
+
26
+
27
+ desc "build and push website"
28
+ task :web => :build_webpage do
29
+ puts "Building and pushing website"
30
+ Dir.chdir "../project-webpages" do
31
+ `scp out/vmail.html zoe2@instantwatcher.com:~/danielchoi.com/public/software/`
32
+ `rsync -avz out/images-vmail zoe2@instantwatcher.com:~/danielchoi.com/public/software/`
33
+ `rsync -avz out/stylesheets zoe2@instantwatcher.com:~/danielchoi.com/public/software/`
34
+ `rsync -avz out/lightbox2 zoe2@instantwatcher.com:~/danielchoi.com/public/software/`
35
+ end
36
+ `open http://danielchoi.com/software/vmail.html`
37
+ end
38
+
39
+ desc "build webpage"
40
+ task :build_webpage do
41
+ `cp README.markdown ../project-webpages/src/vmail.README.markdown`
42
+ `cp coverage.markdown ../project-webpages/src/vmail.coverage.markdown`
43
+ Dir.chdir "../project-webpages" do
44
+ puts `ruby gen.rb vmail #{Vmail::VERSION}`
45
+ #`open out/vmail.html`
46
+ end
47
+ end
48
+
49
+
50
+ desc "git push and rake release bumped version"
51
+ task :bumped do
52
+ puts `git push && rake release`
53
+ Rake::Task["web"].execute
54
+ end
55
+
56
+ desc "Run tests"
57
+ task :test do
58
+ $:.unshift File.expand_path("test")
59
+ require 'test_helper'
60
+ Dir.chdir("test") do
61
+ Dir['*_test.rb'].each do |x|
62
+ puts "requiring #{x}"
63
+ require x
64
+ end
65
+ end
66
+
67
+ MiniTest::Unit.autorun
68
+ end
69
+
70
+ task :default => :test
71
+