mkbok 0.0.13 → 0.0.14
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.
- data/LICENSE +13 -0
- data/README.rdoc +1 -2
- data/bin/mkbok +55 -24
- data/lib/mkbok_version.rb +1 -1
- data/templates/{README.md → README.md.erb} +1 -1
- metadata +7 -5
data/LICENSE
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
Copyright 2012 Larry Cai
|
2
|
+
|
3
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
you may not use this file except in compliance with the License.
|
5
|
+
You may obtain a copy of the License at
|
6
|
+
|
7
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
|
9
|
+
Unless required by applicable law or agreed to in writing, software
|
10
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
See the License for the specific language governing permissions and
|
13
|
+
limitations under the License.
|
data/README.rdoc
CHANGED
@@ -5,8 +5,7 @@
|
|
5
5
|
Author:: Larry Cai (mailto:larry.caiyu@gmail.com)
|
6
6
|
|
7
7
|
Copyright:: Copyright (c) 2012 by Larry Cai
|
8
|
-
License:: Distributes under the Apache License,
|
9
|
-
see LICENSE.txt in the source distro
|
8
|
+
License:: Distributes under the Apache License 2.0, see LICENSE in the source distro
|
10
9
|
|
11
10
|
This application generate ebooks (.pdf,.epub,.mobi) from markdown plaintext files
|
12
11
|
|
data/bin/mkbok
CHANGED
@@ -13,8 +13,11 @@ def main()
|
|
13
13
|
options = {
|
14
14
|
"build"=> "pdf",
|
15
15
|
"lang" => "zh",
|
16
|
-
"config"
|
17
|
-
"template"
|
16
|
+
"config" => "latex/config.yml",
|
17
|
+
"template" => "latex/template.tex",
|
18
|
+
"chapter-files" => "*/*.markdown",
|
19
|
+
"appendix-files"=> "*appendix/*.markdown",
|
20
|
+
"jeykll" => false
|
18
21
|
}
|
19
22
|
config_file = File.join('.mkbok.yml')
|
20
23
|
if File.exists? config_file
|
@@ -140,21 +143,23 @@ end
|
|
140
143
|
|
141
144
|
def pre_pandoc(string, config)
|
142
145
|
replace(string) do
|
143
|
-
|
146
|
+
s /\#\#\#\#\# (.*?) \#\#\#\#\#/, 'PARASECTION: \1'
|
144
147
|
# Pandoc discards #### subsubsections #### - this hack recovers them
|
145
148
|
s /\#\#\#\# (.*?) \#\#\#\#/, 'SUBSUBSECTION: \1'
|
146
149
|
|
150
|
+
# convert div figures to normal markdown format
|
151
|
+
# http://johnmacfarlane.net/pandoc/README.html
|
152
|
+
s /^<div class=\"figures\"> <img src=\"..\/figures\/(.*)\".*<\/div>/, '\ '
|
153
|
+
# "
|
147
154
|
# Turns URLs into clickable links
|
148
155
|
s /\`(http:\/\/[A-Za-z0-9\/\%\&\=\-\_\\\.]+)\`/, '<\1>'
|
149
156
|
s /(\n\n)\t(http:\/\/[A-Za-z0-9\/\%\&\=\-\_\\\.]+)\n([^\t]|\t\n)/, '\1<\2>\1'
|
150
|
-
|
157
|
+
# `
|
151
158
|
# Process figures
|
152
159
|
s /Insert\s18333fig\d+\.png\s*\n.*?\d{1,2}-\d{1,2}\. (.*)/, 'FIG: \1'
|
153
160
|
end
|
154
161
|
end
|
155
162
|
|
156
|
-
# `
|
157
|
-
|
158
163
|
def post_pandoc(string, config, lang, chapter=true)
|
159
164
|
replace(string) do
|
160
165
|
space = /\s/
|
@@ -209,6 +214,9 @@ def post_pandoc(string, config, lang, chapter=true)
|
|
209
214
|
else
|
210
215
|
s /(^\\item)/m,'\item[*]'
|
211
216
|
end
|
217
|
+
|
218
|
+
# change the width to standard .6 width
|
219
|
+
s /\\includegraphics/m, '\\includegraphics[width=\\imgwidth]'
|
212
220
|
end
|
213
221
|
|
214
222
|
if chapter != true
|
@@ -220,6 +228,10 @@ def post_pandoc(string, config, lang, chapter=true)
|
|
220
228
|
end
|
221
229
|
end
|
222
230
|
|
231
|
+
def check_jekyll(str)
|
232
|
+
str.lines.to_a[4..-3].join
|
233
|
+
end
|
234
|
+
|
223
235
|
def generate_pdf(options)
|
224
236
|
$config = YAML.load_file(options["config"])
|
225
237
|
template = ERB.new(File.read(options["template"]))
|
@@ -240,10 +252,17 @@ def generate_pdf(options)
|
|
240
252
|
config = $config['default'].merge($config[lang]) rescue $config['default']
|
241
253
|
|
242
254
|
puts "#{lang}:"
|
243
|
-
|
244
|
-
|
255
|
+
|
256
|
+
prefacefiles = "#$root/#{lang}/#{options['preface-files']}"
|
257
|
+
|
258
|
+
puts "\tParsing preface markdown... #{prefacefiles} "
|
259
|
+
prefacemarkdown = Dir["#{prefacefiles}"].sort.map do |file|
|
245
260
|
puts "\t =>"+file
|
246
|
-
|
261
|
+
if options["jeykll"]
|
262
|
+
check_jekyll(File.read(file))
|
263
|
+
else
|
264
|
+
File.read(file)
|
265
|
+
end
|
247
266
|
end.join("\n\n")
|
248
267
|
|
249
268
|
preface = IO.popen('pandoc -p --no-wrap -f markdown -t latex', 'w+') do |pipe|
|
@@ -252,17 +271,17 @@ def generate_pdf(options)
|
|
252
271
|
post_pandoc(pipe.read, config, lang, false)
|
253
272
|
end
|
254
273
|
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
274
|
+
chapterfiles = "#$root/#{lang}/#{options['chapter-files']}"
|
275
|
+
|
276
|
+
puts "\n\tParsing main chapters markdown... #{chapterfiles} "
|
277
|
+
chaptersmarkdown = Dir["#{chapterfiles}"].sort{|a,b| [Integer(a[/\d+/]),a]<=>[Integer(b[/\d+/]),b]}.map do |file|
|
259
278
|
puts "\t =>"+file
|
260
|
-
|
279
|
+
if options["jeykll"]
|
280
|
+
check_jekyll(File.read(file))
|
281
|
+
else
|
282
|
+
File.read(file)
|
283
|
+
end
|
261
284
|
end.join("\n\n")
|
262
|
-
chaptersmarkdown = Dir["#$root/#{lang}/*/*.markdown"].sort.map do |file|
|
263
|
-
puts "\t =>"+file
|
264
|
-
File.read(file)
|
265
|
-
end.join("\n\n") unless found
|
266
285
|
# puts "done"
|
267
286
|
|
268
287
|
latex = IO.popen('pandoc -p --no-wrap -f markdown -t latex', 'w+') do |pipe|
|
@@ -272,11 +291,17 @@ def generate_pdf(options)
|
|
272
291
|
end
|
273
292
|
# puts "done"
|
274
293
|
|
275
|
-
|
276
|
-
|
277
|
-
|
278
|
-
|
279
|
-
|
294
|
+
appendixfiles = "#$root/#{lang}/#{options['appendix-files']}"
|
295
|
+
|
296
|
+
puts "\n\tParsing appendix markdown... #{appendixfiles} "
|
297
|
+
appendixmarkdown = Dir["#{appendixfiles}"].sort.map do |file|
|
298
|
+
puts "\t =>"+file
|
299
|
+
if options["jeykll"]
|
300
|
+
check_jekyll(File.read(file))
|
301
|
+
else
|
302
|
+
File.read(file)
|
303
|
+
end
|
304
|
+
end.join("\n\n")
|
280
305
|
|
281
306
|
appendix = IO.popen('pandoc -p --no-wrap -f markdown -t latex', 'w+') do |pipe|
|
282
307
|
pipe.write(pre_pandoc(appendixmarkdown, config))
|
@@ -374,6 +399,8 @@ def generate_ebook(options)
|
|
374
399
|
options["outputformat"].each do | format |
|
375
400
|
system('pandoc',
|
376
401
|
'--standalone',
|
402
|
+
'--toc',
|
403
|
+
'--template=template.html',
|
377
404
|
'--epub-metadata', 'epub/metadata.xml',
|
378
405
|
'--epub-stylesheet', 'epub/book.css', # this doesn't work
|
379
406
|
'--output', "#{name}.#{lang}.#{format}",
|
@@ -407,7 +434,10 @@ def generate_project(project)
|
|
407
434
|
else
|
408
435
|
FileUtils.mkdir_p(File.join(destination, relative.dirname))
|
409
436
|
if pathname.extname == '.erb'
|
410
|
-
|
437
|
+
#puts pathname.basename.sub(/\.erb$/, '')
|
438
|
+
#puts destination
|
439
|
+
#puts File.join(destination,pathname.basename.sub(/\.erb$/, ''))
|
440
|
+
File.open(File.join(destination,pathname.basename.sub(/\.erb$/, '')), 'w') do |file|
|
411
441
|
file.puts(ERB.new(File.read(path)).result(binding))
|
412
442
|
end
|
413
443
|
else
|
@@ -417,5 +447,6 @@ def generate_project(project)
|
|
417
447
|
end
|
418
448
|
end
|
419
449
|
end
|
450
|
+
|
420
451
|
main
|
421
452
|
|
data/lib/mkbok_version.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# Software Development Book Contents#
|
2
2
|
|
3
|
-
[](http://travis-ci.org/larrycai
|
3
|
+
[](http://travis-ci.org/larrycai/<%= project %>)
|
4
4
|
|
5
5
|
This is the book for how to write opensource books, it covers markdown,pandoc,latex
|
6
6
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mkbok
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.14
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-05-02 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: aruba
|
16
|
-
requirement: &
|
16
|
+
requirement: &24856032 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,7 +21,7 @@ dependencies:
|
|
21
21
|
version: 0.4.6
|
22
22
|
type: :development
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *24856032
|
25
25
|
description: the ebook generate tools from markdown plain text
|
26
26
|
email:
|
27
27
|
- larry.caiyu@gmail.com
|
@@ -42,7 +42,7 @@ files:
|
|
42
42
|
- templates/latex/README
|
43
43
|
- templates/latex/template.tex
|
44
44
|
- templates/Rakefile
|
45
|
-
- templates/README.md
|
45
|
+
- templates/README.md.erb
|
46
46
|
- templates/summary.rb
|
47
47
|
- templates/zh/appendix/02-chapter1.markdown
|
48
48
|
- templates/zh/chapters/01-chapter2.markdown
|
@@ -50,6 +50,7 @@ files:
|
|
50
50
|
- templates/zh/chapters/01-chapter4.markdown
|
51
51
|
- templates/zh/preface/01-chapter1.markdown
|
52
52
|
- README.rdoc
|
53
|
+
- LICENSE
|
53
54
|
homepage: http://github.com/larrycai/mkbok
|
54
55
|
licenses: []
|
55
56
|
post_install_message:
|
@@ -75,3 +76,4 @@ signing_key:
|
|
75
76
|
specification_version: 3
|
76
77
|
summary: tools to generate ebooks from markdown
|
77
78
|
test_files: []
|
79
|
+
has_rdoc:
|