verku 0.15.0 → 0.16.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/.rvmrc +1 -0
- data/Gemfile.lock +17 -19
- data/lib/verku/cli.rb +7 -7
- data/lib/verku/exporter/base.rb +35 -9
- data/lib/verku/exporter/epub.rb +4 -14
- data/lib/verku/exporter/html.rb +6 -26
- data/lib/verku/exporter/mobi.rb +0 -3
- data/lib/verku/exporter/pdf.rb +7 -31
- data/lib/verku/exporter/txt.rb +1 -1
- data/lib/verku/exporter.rb +2 -2
- data/lib/verku/extensions/string.rb +16 -8
- data/lib/verku/source_list.rb +2 -3
- data/lib/verku/version.rb +1 -1
- data/lib/verku.rb +4 -6
- data/verku.gemspec +7 -59
- metadata +46 -61
- data/lib/verku/adapters/markdown.rb +0 -44
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a8ebb6f690d5fa191b46a1fcefed79fa0ac39cbf
|
4
|
+
data.tar.gz: b5d132a61f9584fb205a383db0bfb8ecccf3b939
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d8443121ca7cd78c9a3931a08e0bfbae2bf81a7412682b901c636d84895553811d7416585807f88456a430cc4a0a011ef287cfe1632a62a2f317d677ff7fc381
|
7
|
+
data.tar.gz: b7a1b2845ffe65b60a3b94f2f4974e67df989e737318f303fb0c0664d3906ccb5165b3a91133652226b1a3b214d24971cbad50985469186f07be58d979c3bd7a
|
data/.rvmrc
CHANGED
@@ -0,0 +1 @@
|
|
1
|
+
rvm use 2.3.1
|
data/Gemfile.lock
CHANGED
@@ -1,14 +1,13 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
verku (0.
|
4
|
+
verku (0.16.0)
|
5
5
|
activesupport (~> 5.0, >= 5.0.0)
|
6
6
|
awesome_print (~> 0)
|
7
7
|
eeepub (~> 0)
|
8
|
-
kramdown (~> 0)
|
9
8
|
nokogiri (~> 1.6, >= 1.6.0)
|
10
9
|
notifier (~> 0)
|
11
|
-
|
10
|
+
pandoc-ruby
|
12
11
|
rubyzip (~> 1.0, >= 1.0.0)
|
13
12
|
safe_yaml (~> 1.0)
|
14
13
|
thor (~> 0.19, >= 0.19.1)
|
@@ -17,31 +16,30 @@ PATH
|
|
17
16
|
GEM
|
18
17
|
remote: http://rubygems.org/
|
19
18
|
specs:
|
20
|
-
activesupport (5.
|
19
|
+
activesupport (5.1.4)
|
21
20
|
concurrent-ruby (~> 1.0, >= 1.0.2)
|
22
21
|
i18n (~> 0.7)
|
23
22
|
minitest (~> 5.1)
|
24
23
|
tzinfo (~> 1.1)
|
25
24
|
awesome_print (0.4.0)
|
26
|
-
builder (3.2.
|
27
|
-
concurrent-ruby (1.0.
|
25
|
+
builder (3.2.3)
|
26
|
+
concurrent-ruby (1.0.5)
|
28
27
|
eeepub (0.8.1)
|
29
28
|
builder
|
30
29
|
rubyzip
|
31
|
-
i18n (0.
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
mini_portile2 (~> 2.1.0)
|
30
|
+
i18n (0.8.6)
|
31
|
+
mini_portile2 (2.3.0)
|
32
|
+
minitest (5.10.3)
|
33
|
+
nokogiri (1.8.1)
|
34
|
+
mini_portile2 (~> 2.3.0)
|
37
35
|
notifier (0.5.2)
|
38
|
-
|
39
|
-
rake (
|
40
|
-
rubyzip (1.2.
|
36
|
+
pandoc-ruby (2.0.2)
|
37
|
+
rake (12.1.0)
|
38
|
+
rubyzip (1.2.1)
|
41
39
|
safe_yaml (1.0.4)
|
42
|
-
thor (0.
|
43
|
-
thread_safe (0.3.
|
44
|
-
tzinfo (1.2.
|
40
|
+
thor (0.20.0)
|
41
|
+
thread_safe (0.3.6)
|
42
|
+
tzinfo (1.2.3)
|
45
43
|
thread_safe (~> 0.1)
|
46
44
|
zip-zip (0.3)
|
47
45
|
rubyzip (>= 1.0.0)
|
@@ -55,4 +53,4 @@ DEPENDENCIES
|
|
55
53
|
verku!
|
56
54
|
|
57
55
|
BUNDLED WITH
|
58
|
-
1.
|
56
|
+
1.15.4
|
data/lib/verku/cli.rb
CHANGED
@@ -5,7 +5,7 @@ module Verku
|
|
5
5
|
class Cli < Thor
|
6
6
|
FORMATS = %w[pdf draft proof html epub mobi txt]
|
7
7
|
check_unknown_options!
|
8
|
-
|
8
|
+
|
9
9
|
def self.exit_on_failure?
|
10
10
|
true
|
11
11
|
end
|
@@ -15,16 +15,16 @@ module Verku
|
|
15
15
|
end
|
16
16
|
super
|
17
17
|
end
|
18
|
-
|
18
|
+
|
19
19
|
desc "create", "Start new work"
|
20
20
|
map %w(create new) => :create
|
21
21
|
def create(path)
|
22
|
-
|
22
|
+
say "Verku -- A Million Monkeys Writing Your Masterpiece."
|
23
23
|
generator = Generator.new
|
24
24
|
generator.destination_root = path.squish.gsub(' ','-')
|
25
25
|
generator.invoke_all
|
26
26
|
end
|
27
|
-
|
27
|
+
|
28
28
|
desc "compile [OPTIONS]", "Export e-book"
|
29
29
|
map %w(compile export build) => :export
|
30
30
|
method_option :only, :type => :string, :desc => "Can be one of: #{FORMATS.join(", ")}"
|
@@ -36,19 +36,19 @@ module Verku
|
|
36
36
|
end
|
37
37
|
Verku::Exporter.run(root_dir, options)
|
38
38
|
end
|
39
|
-
|
39
|
+
|
40
40
|
desc "pdf", "Export PDF only"
|
41
41
|
def pdf
|
42
42
|
inside_ebook!
|
43
43
|
Verku::Exporter.run(root_dir, {:only => 'pdf'})
|
44
44
|
end
|
45
|
-
|
45
|
+
|
46
46
|
desc "version", "Prints the Verku's version information"
|
47
47
|
map %w(-v --version) => :version
|
48
48
|
def version
|
49
49
|
say "Verku version #{Verku::VERSION}"
|
50
50
|
end
|
51
|
-
|
51
|
+
|
52
52
|
desc "stats", "Display some stats about your e-book"
|
53
53
|
def stats
|
54
54
|
inside_ebook!
|
data/lib/verku/exporter/base.rb
CHANGED
@@ -4,10 +4,12 @@ require "English"
|
|
4
4
|
module Verku
|
5
5
|
class Exporter
|
6
6
|
class Base
|
7
|
-
|
7
|
+
|
8
8
|
attr_accessor :root_dir # The e-book directory.
|
9
9
|
attr_accessor :source # Where the text files are stored.
|
10
|
-
|
10
|
+
|
11
|
+
EXTENSIONS = %w[markdown mkdown mkdn mkd md text]
|
12
|
+
|
11
13
|
def handle_error(error)
|
12
14
|
ui.say "#{error.class}: #{error.message}", :red
|
13
15
|
ui.say error.backtrace.join("\n"), :white
|
@@ -19,23 +21,40 @@ module Verku
|
|
19
21
|
def initialize(root_dir)
|
20
22
|
@root_dir = Pathname.new(root_dir)
|
21
23
|
@source = root_dir.join("text")
|
22
|
-
# @build = Build.new
|
23
24
|
end
|
24
25
|
|
25
26
|
# Return directory's basename.
|
26
27
|
def name
|
27
28
|
File.basename(root_dir)
|
28
29
|
end
|
30
|
+
def git_branch
|
31
|
+
branch = if (File.exist?(root_dir.join(".git/HEAD")))
|
32
|
+
File.read( root_dir.join(".git/HEAD") ).sub("ref: refs/heads/","").sub(/\n/,'')
|
33
|
+
else
|
34
|
+
"none"
|
35
|
+
end
|
36
|
+
return branch
|
37
|
+
end
|
38
|
+
def base_name(ext='')
|
39
|
+
oname = "#{name}-#{git_branch}"
|
40
|
+
end
|
41
|
+
def output_name(ext='txt')
|
42
|
+
root_dir.join("builds/#{base_name}.#{ext}")
|
43
|
+
end
|
29
44
|
|
30
45
|
# Return the configuration file.
|
31
46
|
def config
|
32
47
|
Verku.config(root_dir)
|
33
48
|
end
|
34
|
-
|
35
|
-
|
36
|
-
|
49
|
+
def build_data
|
50
|
+
source_list.each do |file|
|
51
|
+
data = read_content(file)[1]
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
37
55
|
def source_list
|
38
|
-
@source_list ||= SourceList.new(root_dir)
|
56
|
+
# @source_list ||= SourceList.new(root_dir)
|
57
|
+
@source_list ||= Dir.glob("#{@root_dir.join('text')}/**/*.{#{EXTENSIONS.join(",")}}")
|
39
58
|
end
|
40
59
|
def render_template(file, locals = {})
|
41
60
|
ERB.new(File.read(file)).result OpenStruct.new(locals).instance_eval{ binding }
|
@@ -43,15 +62,22 @@ module Verku
|
|
43
62
|
def ui
|
44
63
|
@ui ||= Thor::Base.shell.new
|
45
64
|
end
|
65
|
+
def html_file
|
66
|
+
output_name("html")
|
67
|
+
end
|
68
|
+
def epub_file
|
69
|
+
output_name("epub")
|
70
|
+
end
|
71
|
+
def tex_file
|
72
|
+
output_name("tex")
|
73
|
+
end
|
46
74
|
def read_content(file)
|
47
75
|
content = File.read(file)
|
48
76
|
data = {}
|
49
77
|
begin
|
50
78
|
# YAML_FRONT_MATTER_REGEXP = /\A(---\s*\n.*?\n?)^((---|\.\.\.)\s*$\n?)/m
|
51
79
|
if content =~ /\A(---\s*\n.*?\n?)^((---|\.\.\.)\s*$\n?)/m
|
52
|
-
# content = "\n#{$'}\n"
|
53
80
|
content = $POSTMATCH
|
54
|
-
# data = SafeYAML.load($1)
|
55
81
|
data = YAML.load($1, :safe => true)
|
56
82
|
end
|
57
83
|
return [content, data]
|
data/lib/verku/exporter/epub.rb
CHANGED
@@ -3,17 +3,17 @@ module Verku
|
|
3
3
|
class Exporter
|
4
4
|
class Epub < Base
|
5
5
|
def sections
|
6
|
-
@sections ||= html.css("div.
|
6
|
+
@sections ||= html.css("div.section").each_with_index.map do |section, index|
|
7
7
|
OpenStruct.new({
|
8
8
|
:index => index,
|
9
9
|
:filename => "section_#{index}.html",
|
10
10
|
:filepath => tmp_dir.join("section_#{index}.html").to_s,
|
11
|
-
:html => Nokogiri::HTML(
|
11
|
+
:html => Nokogiri::HTML(section.inner_html)
|
12
12
|
})
|
13
13
|
end
|
14
14
|
end
|
15
15
|
def epub; @epub ||= EeePub.make ;end
|
16
|
-
def html; @html ||= Nokogiri::HTML(
|
16
|
+
def html; @html ||= Nokogiri::HTML(html_file.read); end
|
17
17
|
def export!
|
18
18
|
puts "-- Exporting EPUB"
|
19
19
|
epub.title config["title"]
|
@@ -37,7 +37,7 @@ module Verku
|
|
37
37
|
epub.files cover_page + thanks_page + sections.map(&:filepath) + back_page + copyright_page + assets
|
38
38
|
epub.nav navigation
|
39
39
|
|
40
|
-
epub.save(
|
40
|
+
epub.save(epub_file)
|
41
41
|
true
|
42
42
|
rescue Exception
|
43
43
|
p $!, $@
|
@@ -65,8 +65,6 @@ module Verku
|
|
65
65
|
def write_coverpage!
|
66
66
|
contents = render_template(root_dir.join("_templates/epub/cover.html"), config)
|
67
67
|
puts "Writing cover page. #{cover_path}"
|
68
|
-
#
|
69
|
-
# raise File.dirname(cover_path).inspect
|
70
68
|
FileUtils.mkdir_p(File.dirname(cover_path))
|
71
69
|
File.open(cover_path,"w") do |file|
|
72
70
|
file << contents
|
@@ -74,7 +72,6 @@ module Verku
|
|
74
72
|
end
|
75
73
|
def write_copyright!
|
76
74
|
contents = render_template(root_dir.join("_templates/html/copyright.erb"), config)
|
77
|
-
# File.open('help.html','w').write(contents)
|
78
75
|
FileUtils.mkdir_p(File.dirname(copyright_path))
|
79
76
|
File.open(copyright_path,"w") do |file|
|
80
77
|
file << contents
|
@@ -82,7 +79,6 @@ module Verku
|
|
82
79
|
end
|
83
80
|
def write_thankspage!
|
84
81
|
contents = render_template(root_dir.join("_templates/html/thanks.erb"), config)
|
85
|
-
# File.open('help.html','w').write(contents)
|
86
82
|
FileUtils.mkdir_p(File.dirname(thanks_path))
|
87
83
|
File.open(thanks_path,"w") do |file|
|
88
84
|
file << contents
|
@@ -158,12 +154,6 @@ module Verku
|
|
158
154
|
def template_path
|
159
155
|
root_dir.join("_templates/epub/page.erb")
|
160
156
|
end
|
161
|
-
def html_path
|
162
|
-
root_dir.join("builds/#{name}.html")
|
163
|
-
end
|
164
|
-
def epub_path
|
165
|
-
root_dir.join("builds/#{name}.epub")
|
166
|
-
end
|
167
157
|
def tmp_dir
|
168
158
|
root_dir.join("builds/tmp")
|
169
159
|
end
|
data/lib/verku/exporter/html.rb
CHANGED
@@ -1,11 +1,8 @@
|
|
1
|
-
require 'kramdown'
|
2
|
-
require "awesome_print"
|
3
|
-
|
4
1
|
module Verku
|
5
2
|
class Exporter
|
6
3
|
class HTML < Base
|
7
4
|
def export!
|
8
|
-
locals = config.merge({
|
5
|
+
locals = config.merge({ "contents" => content })
|
9
6
|
locals['copyright'].gsub!("(C)", "©")
|
10
7
|
output = render_template(root_dir.join("_templates/html/layout.erb"), locals)
|
11
8
|
File.open(root_dir.join(html_file), 'w').write(output)
|
@@ -18,28 +15,11 @@ module Verku
|
|
18
15
|
|
19
16
|
private
|
20
17
|
def content
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
end
|
27
|
-
def render_file(file)
|
28
|
-
data = read_content(file)
|
29
|
-
content = "#{data[0]}".to_html
|
30
|
-
return content
|
31
|
-
end
|
32
|
-
def render_chapter(files)
|
33
|
-
chapter = String.new
|
34
|
-
String.new.tap do
|
35
|
-
files.each do |file|
|
36
|
-
chapter << render_file(file) << "\n\n"
|
37
|
-
end
|
38
|
-
end
|
39
|
-
return "<div class='chapter'>\n\t#{chapter}\n</div>"
|
40
|
-
end
|
41
|
-
def html_file
|
42
|
-
root_dir.join("builds/#{name}.html")
|
18
|
+
source_list.map do |file|
|
19
|
+
d = File.read_content(file)
|
20
|
+
raise d.inspect
|
21
|
+
PandocRuby.markdown(read_content(file)[0]).to_html.sectionize
|
22
|
+
end.join("\n\n")
|
43
23
|
end
|
44
24
|
end
|
45
25
|
end
|
data/lib/verku/exporter/mobi.rb
CHANGED
data/lib/verku/exporter/pdf.rb
CHANGED
@@ -9,7 +9,7 @@ module Verku
|
|
9
9
|
locals['copyright'].gsub!("(C)", "\\copyright{}")
|
10
10
|
output = render_template(root_dir.join("_templates/pdf/layout.erb"), locals)
|
11
11
|
File.open(root_dir.join(tex_file), 'w').write(output)
|
12
|
-
|
12
|
+
|
13
13
|
puts "-- Exporting PDF"
|
14
14
|
puts " - Pass 1"; spawn_command ["xelatex", tex_file.to_s,]
|
15
15
|
puts " - Pass 2"; spawn_command ["xelatex", tex_file.to_s,]
|
@@ -17,13 +17,13 @@ module Verku
|
|
17
17
|
if config['status'] == 'final'
|
18
18
|
puts " - Pass 3 - Indexing"
|
19
19
|
spawn_command ["makeindex #{name}.idx"]
|
20
|
-
|
20
|
+
spawn_command ["makeglossaries #{name}.glo"] if File.exist?("#{name}.glo")
|
21
21
|
spawn_command ["xelatex", tex_file.to_s,]
|
22
22
|
spawn_command ["rm *ilg *ind "]
|
23
23
|
end
|
24
|
-
|
24
|
+
|
25
25
|
spawn_command ["rm *.glo *.idx *.log *.out *.toc *aux *ist"]
|
26
|
-
spawn_command ["mv #{
|
26
|
+
spawn_command ["mv #{base_name("pdf")}.pdf #{output_name("pdf")}"]
|
27
27
|
true
|
28
28
|
|
29
29
|
rescue Exception => error
|
@@ -32,34 +32,10 @@ module Verku
|
|
32
32
|
end
|
33
33
|
|
34
34
|
private
|
35
|
-
def render_file(file)
|
36
|
-
data = read_content(file)
|
37
|
-
h = nil
|
38
|
-
|
39
|
-
if config["headers"].is_a? Array
|
40
|
-
h = config["headers"][0..5]
|
41
|
-
end
|
42
|
-
|
43
|
-
return "#{data[0]}".to_latex(h)
|
44
|
-
end
|
45
35
|
def content
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
end
|
50
|
-
return content
|
51
|
-
end
|
52
|
-
def render_chapter(files)
|
53
|
-
chapter = String.new
|
54
|
-
String.new.tap do
|
55
|
-
files.each do |file|
|
56
|
-
chapter << render_file(file) << "\n\n"
|
57
|
-
end
|
58
|
-
end
|
59
|
-
return chapter
|
60
|
-
end
|
61
|
-
def tex_file
|
62
|
-
root_dir.join("builds/#{name}.tex")
|
36
|
+
source_list.map do |file|
|
37
|
+
PandocRuby.markdown(read_content(file)[0], :chapters).to_latex.fix_scenebreaks
|
38
|
+
end.join("\n\n")
|
63
39
|
end
|
64
40
|
end
|
65
41
|
end
|
data/lib/verku/exporter/txt.rb
CHANGED
@@ -1 +1 @@
|
|
1
|
-
txt.rb
|
1
|
+
# txt.rb
|
data/lib/verku/exporter.rb
CHANGED
@@ -36,8 +36,8 @@ module Verku
|
|
36
36
|
export_txt = [nil, "txt"].include?(options[:only])
|
37
37
|
|
38
38
|
exported = []
|
39
|
-
exported << PDF.export!(root_dir) if export_pdf && Dependency.xelatex
|
40
|
-
exported << HTML.export!(root_dir) if export_html
|
39
|
+
exported << PDF.export!(root_dir) if export_pdf && Dependency.xelatex?
|
40
|
+
exported << HTML.export!(root_dir) if export_html
|
41
41
|
epub_done = Epub.export!(root_dir) if export_epub
|
42
42
|
exported << epub_done
|
43
43
|
exported << Mobi.export!(root_dir) if export_mobi && epub_done && Dependency.kindlegen?
|
@@ -8,14 +8,22 @@ class String
|
|
8
8
|
str.downcase!
|
9
9
|
str
|
10
10
|
end
|
11
|
-
def
|
12
|
-
|
13
|
-
|
14
|
-
s = Kramdown::Document.new(self.dup, :latex_headers => headers).to_latex
|
15
|
-
s << "\\pbreak{}"
|
11
|
+
def fix_scenebreaks
|
12
|
+
str = ActiveSupport::Multibyte::Chars.new(self.dup)
|
13
|
+
str.gsub('\begin{center}\rule{0.5\linewidth}{\linethickness}\end{center}','\pfbreak')
|
16
14
|
end
|
17
|
-
def
|
18
|
-
|
19
|
-
|
15
|
+
def sectionize
|
16
|
+
str = ActiveSupport::Multibyte::Chars.new(self.dup)
|
17
|
+
"<div class='section'>#{str}</div>"
|
20
18
|
end
|
19
|
+
# def to_latex(headers=nil)
|
20
|
+
# headers = %w{chapter section subsection subsubsection paragraph subparagraph} if headers.nil?
|
21
|
+
# require 'kramdown'
|
22
|
+
# s = Kramdown::Document.new(self.dup, :latex_headers => headers).to_latex
|
23
|
+
# s << "\\pbreak{}"
|
24
|
+
# end
|
25
|
+
# def to_html
|
26
|
+
# require 'kramdown'
|
27
|
+
# Kramdown::Document.new(self.dup).to_html
|
28
|
+
# end
|
21
29
|
end
|
data/lib/verku/source_list.rb
CHANGED
@@ -10,7 +10,7 @@ module Verku
|
|
10
10
|
|
11
11
|
# List of recognized extensions.
|
12
12
|
#
|
13
|
-
EXTENSIONS = %w[md
|
13
|
+
EXTENSIONS = %w[markdown mkdown mkdn mkd md text]
|
14
14
|
|
15
15
|
attr_reader :root_dir
|
16
16
|
attr_reader :source
|
@@ -39,12 +39,12 @@ module Verku
|
|
39
39
|
if File.file?(entry)
|
40
40
|
[entry]
|
41
41
|
else
|
42
|
+
# markdown,mkdown,mkdn,mkd,md
|
42
43
|
Dir["#{entry}/**/*.{#{EXTENSIONS.join(",")}}"].sort
|
43
44
|
end
|
44
45
|
end
|
45
46
|
|
46
47
|
# Return a list of all recognized files.
|
47
|
-
#
|
48
48
|
def entries
|
49
49
|
Dir.entries(source).sort.each_with_object([]) do |entry, buffer|
|
50
50
|
buffer << source.join(entry) if valid_entry?(entry)
|
@@ -53,7 +53,6 @@ module Verku
|
|
53
53
|
|
54
54
|
# Check if path is a valid entry.
|
55
55
|
# Files/directories that start with a dot or underscore will be skipped.
|
56
|
-
#
|
57
56
|
def valid_entry?(entry)
|
58
57
|
entry !~ /^(\.|_)/ && (valid_directory?(entry) || valid_file?(entry))
|
59
58
|
end
|
data/lib/verku/version.rb
CHANGED
data/lib/verku.rb
CHANGED
@@ -11,6 +11,7 @@ require "open3"
|
|
11
11
|
require "optparse"
|
12
12
|
require "ostruct"
|
13
13
|
require "tempfile"
|
14
|
+
require "pandoc-ruby"
|
14
15
|
require "pathname"
|
15
16
|
require "thor"
|
16
17
|
require "thor/group"
|
@@ -34,15 +35,12 @@ module Verku
|
|
34
35
|
require "verku/exporter/mobi"
|
35
36
|
|
36
37
|
require "verku/generator"
|
37
|
-
require "verku/
|
38
|
-
# require "verku/parser"
|
39
|
-
require "verku/source_list"
|
38
|
+
# require "verku/source_list"
|
40
39
|
require "verku/stats"
|
41
40
|
require "verku/stream"
|
42
|
-
# require "verku/structure"
|
43
41
|
require "verku/toc"
|
44
42
|
require 'verku/version'
|
45
|
-
|
43
|
+
|
46
44
|
Encoding.default_internal = "utf-8"
|
47
45
|
Encoding.default_external = "utf-8"
|
48
46
|
|
@@ -53,8 +51,8 @@ module Verku
|
|
53
51
|
raise "Invalid Verku directory; couldn't found #{path} file." unless File.file?(path)
|
54
52
|
content = File.read(path)
|
55
53
|
erb = ERB.new(content).result
|
54
|
+
SafeYAML::OPTIONS[:default_mode] = true
|
56
55
|
YAML.load(erb, :safe => true)
|
57
|
-
#YAML.load(erb)#.with_indifferent_access
|
58
56
|
end
|
59
57
|
def self.logger
|
60
58
|
@logger ||= Logger.new(File.open("/tmp/verku.log", "a"))
|
data/verku.gemspec
CHANGED
@@ -7,7 +7,6 @@ Gem::Specification.new do |spec|
|
|
7
7
|
spec.name = "verku"
|
8
8
|
spec.version = Verku::VERSION
|
9
9
|
|
10
|
-
# spec.required_rubygems_version = Gem::Requirement.new("~> 0") if spec.respond_to? :required_rubygems_version=
|
11
10
|
spec.require_paths = ["lib"]
|
12
11
|
spec.authors = ["Merovex"]
|
13
12
|
spec.description = "Verku provides authors a free, ruby-based production toolchain for self-published paper and electronic books using the LaTeX document preparation system."
|
@@ -21,75 +20,24 @@ Gem::Specification.new do |spec|
|
|
21
20
|
"README.md"
|
22
21
|
]
|
23
22
|
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
24
|
-
|
23
|
+
|
25
24
|
spec.rubyforge_project = "verku"
|
26
25
|
spec.rubygems_version = "2.2.2"
|
27
|
-
spec.summary = "Verku is a Ruby
|
26
|
+
spec.summary = "Verku is a Ruby-/Markdown-/LaTeX-based production tool chain for self-publishers."
|
28
27
|
spec.test_files = ["test/helper.rb", "test/test_bookmaker.rb"]
|
29
28
|
|
30
29
|
spec.add_development_dependency "bundler", "~> 1.12"
|
31
30
|
spec.add_development_dependency "rake", "~> 10.0"
|
32
31
|
|
33
|
-
spec.add_runtime_dependency "kramdown", "~> 0"
|
34
|
-
spec.add_runtime_dependency "psych", "~> 1.0"
|
35
32
|
spec.add_runtime_dependency "activesupport", "~> 5.0", ">= 5.0.0"
|
36
|
-
spec.add_runtime_dependency "
|
37
|
-
spec.add_runtime_dependency "zip-zip", "~> 0"
|
33
|
+
spec.add_runtime_dependency "awesome_print", "~> 0"
|
38
34
|
spec.add_runtime_dependency "eeepub", "~> 0"
|
39
|
-
# spec.add_runtime_dependency "thor", ">= 0.19.1"
|
40
|
-
spec.add_runtime_dependency 'thor', "~> 0.19", ">= 0.19.1"
|
41
35
|
spec.add_runtime_dependency "nokogiri", "~> 1.6", ">= 1.6.0"
|
42
36
|
spec.add_runtime_dependency "notifier", "~> 0"
|
43
|
-
spec.add_runtime_dependency
|
37
|
+
spec.add_runtime_dependency 'pandoc-ruby'
|
38
|
+
spec.add_runtime_dependency "rubyzip", "~> 1.0", ">= 1.0.0"
|
44
39
|
spec.add_runtime_dependency "safe_yaml", "~> 1.0"
|
40
|
+
spec.add_runtime_dependency 'thor', "~> 0.19", ">= 0.19.1"
|
41
|
+
spec.add_runtime_dependency "zip-zip", "~> 0"
|
45
42
|
|
46
|
-
# if spec.respond_to? :specification_version then
|
47
|
-
# spec.specification_version = 4
|
48
|
-
|
49
|
-
# if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
50
|
-
# spec.add_development_dependency(%q<shoulda>, ["~> 0"])
|
51
|
-
# spec.add_development_dependency(%q<rdoc>, ["~> 3.12"])
|
52
|
-
# spec.add_development_dependency(%q<bundler>, ["~> 1.0"])
|
53
|
-
# spec.add_development_dependency(%q<simplecov>, ["~> 0"])
|
54
|
-
|
55
|
-
# spec.add_development_dependency(%q<aruba>, ["~> 0"])
|
56
|
-
# spec.add_development_dependency(%q<cucumber>, ["~> 0"])
|
57
|
-
# else
|
58
|
-
# spec.add_dependency(%q<shoulda>, ["~> 0"])
|
59
|
-
# spec.add_dependency(%q<rdoc>, ["~> 3.12"])
|
60
|
-
# spec.add_dependency(%q<bundler>, ["~> 1.0"])
|
61
|
-
|
62
|
-
# spec.add_dependency(%q<simplecov>, ["~> 0"])
|
63
|
-
# spec.add_dependency(%q<activesupport>, ["~> 0"])
|
64
|
-
# spec.add_dependency(%q<aruba>, ["~> 0"])
|
65
|
-
# spec.add_dependency(%q<cucumber>, ["~> 0"])
|
66
|
-
# spec.add_dependency(%q<rubyzip>, ["~> 0"])
|
67
|
-
# spec.add_dependency(%q<zip-zip>, ["~> 0"])
|
68
|
-
# spec.add_dependency(%q<eeepub>, ["~> 0"])
|
69
|
-
# spec.add_dependency(%q<kramdown>, ["~> 0"])
|
70
|
-
# spec.add_dependency(%q<thor>, ["~> 0"])
|
71
|
-
# spec.add_dependency(%q<nokogiri>, ["~> 0"])
|
72
|
-
# spec.add_dependency(%q<notifier>, ["~> 0"])
|
73
|
-
# spec.add_dependency(%q<awesome_print>, ["~> 0"])
|
74
|
-
# spec.add_dependency(%q<safe_yaml>, ["~> 0"])
|
75
|
-
# end
|
76
|
-
# else
|
77
|
-
# spec.add_dependency(%q<shoulda>, ["~> 0"])
|
78
|
-
# spec.add_dependency(%q<rdoc>, ["~> 3.12"])
|
79
|
-
# spec.add_dependency(%q<bundler>, ["~> 1.0"])
|
80
|
-
# spec.add_dependency(%q<simplecov>, ["~> 0"])
|
81
|
-
# spec.add_dependency(%q<activesupport>, ["~> 0"])
|
82
|
-
# spec.add_dependency(%q<aruba>, ["~> 0"])
|
83
|
-
# spec.add_dependency(%q<cucumber>, ["~> 0"])
|
84
|
-
# spec.add_dependency(%q<rubyzip>, ["~> 0"])
|
85
|
-
# spec.add_dependency(%q<zip-zip>, ["~> 0"])
|
86
|
-
# spec.add_dependency(%q<eeepub>, ["~> 0"])
|
87
|
-
# spec.add_dependency(%q<kramdown>, ["~> 0"])
|
88
|
-
# spec.add_dependency(%q<thor>, ["~> 0"])
|
89
|
-
# spec.add_dependency(%q<nokogiri>, ["~> 0"])
|
90
|
-
# spec.add_dependency(%q<notifier>, ["~> 0"])
|
91
|
-
# spec.add_dependency(%q<awesome_print>, ["~> 0"])
|
92
|
-
# spec.add_dependency(%q<safe_yaml>, ["~> 0"])
|
93
|
-
# end
|
94
43
|
end
|
95
|
-
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: verku
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.16.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Merovex
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-10-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -39,75 +39,75 @@ dependencies:
|
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '10.0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
42
|
+
name: activesupport
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '0'
|
47
|
+
version: '5.0'
|
48
|
+
- - ">="
|
49
|
+
- !ruby/object:Gem::Version
|
50
|
+
version: 5.0.0
|
48
51
|
type: :runtime
|
49
52
|
prerelease: false
|
50
53
|
version_requirements: !ruby/object:Gem::Requirement
|
51
54
|
requirements:
|
52
55
|
- - "~>"
|
53
56
|
- !ruby/object:Gem::Version
|
54
|
-
version: '0'
|
57
|
+
version: '5.0'
|
58
|
+
- - ">="
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: 5.0.0
|
55
61
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
62
|
+
name: awesome_print
|
57
63
|
requirement: !ruby/object:Gem::Requirement
|
58
64
|
requirements:
|
59
65
|
- - "~>"
|
60
66
|
- !ruby/object:Gem::Version
|
61
|
-
version: '
|
67
|
+
version: '0'
|
62
68
|
type: :runtime
|
63
69
|
prerelease: false
|
64
70
|
version_requirements: !ruby/object:Gem::Requirement
|
65
71
|
requirements:
|
66
72
|
- - "~>"
|
67
73
|
- !ruby/object:Gem::Version
|
68
|
-
version: '
|
74
|
+
version: '0'
|
69
75
|
- !ruby/object:Gem::Dependency
|
70
|
-
name:
|
76
|
+
name: eeepub
|
71
77
|
requirement: !ruby/object:Gem::Requirement
|
72
78
|
requirements:
|
73
79
|
- - "~>"
|
74
80
|
- !ruby/object:Gem::Version
|
75
|
-
version: '
|
76
|
-
- - ">="
|
77
|
-
- !ruby/object:Gem::Version
|
78
|
-
version: 5.0.0
|
81
|
+
version: '0'
|
79
82
|
type: :runtime
|
80
83
|
prerelease: false
|
81
84
|
version_requirements: !ruby/object:Gem::Requirement
|
82
85
|
requirements:
|
83
86
|
- - "~>"
|
84
87
|
- !ruby/object:Gem::Version
|
85
|
-
version: '
|
86
|
-
- - ">="
|
87
|
-
- !ruby/object:Gem::Version
|
88
|
-
version: 5.0.0
|
88
|
+
version: '0'
|
89
89
|
- !ruby/object:Gem::Dependency
|
90
|
-
name:
|
90
|
+
name: nokogiri
|
91
91
|
requirement: !ruby/object:Gem::Requirement
|
92
92
|
requirements:
|
93
93
|
- - "~>"
|
94
94
|
- !ruby/object:Gem::Version
|
95
|
-
version: '1.
|
95
|
+
version: '1.6'
|
96
96
|
- - ">="
|
97
97
|
- !ruby/object:Gem::Version
|
98
|
-
version: 1.
|
98
|
+
version: 1.6.0
|
99
99
|
type: :runtime
|
100
100
|
prerelease: false
|
101
101
|
version_requirements: !ruby/object:Gem::Requirement
|
102
102
|
requirements:
|
103
103
|
- - "~>"
|
104
104
|
- !ruby/object:Gem::Version
|
105
|
-
version: '1.
|
105
|
+
version: '1.6'
|
106
106
|
- - ">="
|
107
107
|
- !ruby/object:Gem::Version
|
108
|
-
version: 1.
|
108
|
+
version: 1.6.0
|
109
109
|
- !ruby/object:Gem::Dependency
|
110
|
-
name:
|
110
|
+
name: notifier
|
111
111
|
requirement: !ruby/object:Gem::Requirement
|
112
112
|
requirements:
|
113
113
|
- - "~>"
|
@@ -121,75 +121,75 @@ dependencies:
|
|
121
121
|
- !ruby/object:Gem::Version
|
122
122
|
version: '0'
|
123
123
|
- !ruby/object:Gem::Dependency
|
124
|
-
name:
|
124
|
+
name: pandoc-ruby
|
125
125
|
requirement: !ruby/object:Gem::Requirement
|
126
126
|
requirements:
|
127
|
-
- - "
|
127
|
+
- - ">="
|
128
128
|
- !ruby/object:Gem::Version
|
129
129
|
version: '0'
|
130
130
|
type: :runtime
|
131
131
|
prerelease: false
|
132
132
|
version_requirements: !ruby/object:Gem::Requirement
|
133
133
|
requirements:
|
134
|
-
- - "
|
134
|
+
- - ">="
|
135
135
|
- !ruby/object:Gem::Version
|
136
136
|
version: '0'
|
137
137
|
- !ruby/object:Gem::Dependency
|
138
|
-
name:
|
138
|
+
name: rubyzip
|
139
139
|
requirement: !ruby/object:Gem::Requirement
|
140
140
|
requirements:
|
141
141
|
- - "~>"
|
142
142
|
- !ruby/object:Gem::Version
|
143
|
-
version: '0
|
143
|
+
version: '1.0'
|
144
144
|
- - ">="
|
145
145
|
- !ruby/object:Gem::Version
|
146
|
-
version: 0.
|
146
|
+
version: 1.0.0
|
147
147
|
type: :runtime
|
148
148
|
prerelease: false
|
149
149
|
version_requirements: !ruby/object:Gem::Requirement
|
150
150
|
requirements:
|
151
151
|
- - "~>"
|
152
152
|
- !ruby/object:Gem::Version
|
153
|
-
version: '0
|
153
|
+
version: '1.0'
|
154
154
|
- - ">="
|
155
155
|
- !ruby/object:Gem::Version
|
156
|
-
version: 0.
|
156
|
+
version: 1.0.0
|
157
157
|
- !ruby/object:Gem::Dependency
|
158
|
-
name:
|
158
|
+
name: safe_yaml
|
159
159
|
requirement: !ruby/object:Gem::Requirement
|
160
160
|
requirements:
|
161
161
|
- - "~>"
|
162
162
|
- !ruby/object:Gem::Version
|
163
|
-
version: '1.
|
164
|
-
- - ">="
|
165
|
-
- !ruby/object:Gem::Version
|
166
|
-
version: 1.6.0
|
163
|
+
version: '1.0'
|
167
164
|
type: :runtime
|
168
165
|
prerelease: false
|
169
166
|
version_requirements: !ruby/object:Gem::Requirement
|
170
167
|
requirements:
|
171
168
|
- - "~>"
|
172
169
|
- !ruby/object:Gem::Version
|
173
|
-
version: '1.
|
174
|
-
- - ">="
|
175
|
-
- !ruby/object:Gem::Version
|
176
|
-
version: 1.6.0
|
170
|
+
version: '1.0'
|
177
171
|
- !ruby/object:Gem::Dependency
|
178
|
-
name:
|
172
|
+
name: thor
|
179
173
|
requirement: !ruby/object:Gem::Requirement
|
180
174
|
requirements:
|
181
175
|
- - "~>"
|
182
176
|
- !ruby/object:Gem::Version
|
183
|
-
version: '0'
|
177
|
+
version: '0.19'
|
178
|
+
- - ">="
|
179
|
+
- !ruby/object:Gem::Version
|
180
|
+
version: 0.19.1
|
184
181
|
type: :runtime
|
185
182
|
prerelease: false
|
186
183
|
version_requirements: !ruby/object:Gem::Requirement
|
187
184
|
requirements:
|
188
185
|
- - "~>"
|
189
186
|
- !ruby/object:Gem::Version
|
190
|
-
version: '0'
|
187
|
+
version: '0.19'
|
188
|
+
- - ">="
|
189
|
+
- !ruby/object:Gem::Version
|
190
|
+
version: 0.19.1
|
191
191
|
- !ruby/object:Gem::Dependency
|
192
|
-
name:
|
192
|
+
name: zip-zip
|
193
193
|
requirement: !ruby/object:Gem::Requirement
|
194
194
|
requirements:
|
195
195
|
- - "~>"
|
@@ -202,20 +202,6 @@ dependencies:
|
|
202
202
|
- - "~>"
|
203
203
|
- !ruby/object:Gem::Version
|
204
204
|
version: '0'
|
205
|
-
- !ruby/object:Gem::Dependency
|
206
|
-
name: safe_yaml
|
207
|
-
requirement: !ruby/object:Gem::Requirement
|
208
|
-
requirements:
|
209
|
-
- - "~>"
|
210
|
-
- !ruby/object:Gem::Version
|
211
|
-
version: '1.0'
|
212
|
-
type: :runtime
|
213
|
-
prerelease: false
|
214
|
-
version_requirements: !ruby/object:Gem::Requirement
|
215
|
-
requirements:
|
216
|
-
- - "~>"
|
217
|
-
- !ruby/object:Gem::Version
|
218
|
-
version: '1.0'
|
219
205
|
description: Verku provides authors a free, ruby-based production toolchain for self-published
|
220
206
|
paper and electronic books using the LaTeX document preparation system.
|
221
207
|
email:
|
@@ -239,7 +225,6 @@ files:
|
|
239
225
|
- VERSION
|
240
226
|
- bin/verku
|
241
227
|
- lib/verku.rb
|
242
|
-
- lib/verku/adapters/markdown.rb
|
243
228
|
- lib/verku/build.rb
|
244
229
|
- lib/verku/cli.rb
|
245
230
|
- lib/verku/dependency.rb
|
@@ -309,10 +294,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
309
294
|
version: '0'
|
310
295
|
requirements: []
|
311
296
|
rubyforge_project: verku
|
312
|
-
rubygems_version: 2.6.
|
297
|
+
rubygems_version: 2.6.11
|
313
298
|
signing_key:
|
314
299
|
specification_version: 4
|
315
|
-
summary: Verku is a Ruby
|
300
|
+
summary: Verku is a Ruby-/Markdown-/LaTeX-based production tool chain for self-publishers.
|
316
301
|
test_files:
|
317
302
|
- test/helper.rb
|
318
303
|
- test/test_bookmaker.rb
|
@@ -1,44 +0,0 @@
|
|
1
|
-
module Kitabu
|
2
|
-
class Markdown
|
3
|
-
# Supported Markdown libraries
|
4
|
-
#
|
5
|
-
MARKDOWN_LIBRARIES = %w[Kramdown]
|
6
|
-
|
7
|
-
# Retrieve preferred Markdown processor.
|
8
|
-
# You'll need one of the following libraries:
|
9
|
-
#
|
10
|
-
# # RDiscount: https://rubygems.org/gems/rdiscount
|
11
|
-
# # Maruku: https://rubygems.org/gems/maruku
|
12
|
-
# # PEGMarkdown: https://rubygems.org/gems/rpeg-markdown
|
13
|
-
# # BlueCloth: https://rubygems.org/gems/bluecloth
|
14
|
-
# # Redcarpet: https://rubygems.org/gems/redcarpet
|
15
|
-
# # Kramdown: http://kramdown.rubyforge.org/
|
16
|
-
#
|
17
|
-
# Note: RDiscount will always be installed as Kitabu's dependency but only used when no
|
18
|
-
# alternative library is available.
|
19
|
-
#
|
20
|
-
def self.engine
|
21
|
-
@engine ||= Object.const_get(MARKDOWN_LIBRARIES.find {|lib| Object.const_defined?(lib)})
|
22
|
-
end
|
23
|
-
|
24
|
-
def self.to_latex(content)
|
25
|
-
case engine.name
|
26
|
-
when "Redcarpet"
|
27
|
-
# render = Redcarpet::Render::HTML.new(:hard_wrap => true, :xhtml => true)
|
28
|
-
# Redcarpet::Markdown.new(render).render(content)
|
29
|
-
else
|
30
|
-
engine.new(content).to_latex
|
31
|
-
end
|
32
|
-
end
|
33
|
-
# Convert Markdown to HTML.
|
34
|
-
def self.to_html(content)
|
35
|
-
case engine.name
|
36
|
-
when "Redcarpet"
|
37
|
-
render = Redcarpet::Render::HTML.new(:hard_wrap => true, :xhtml => true)
|
38
|
-
Redcarpet::Markdown.new(render).render(content)
|
39
|
-
else
|
40
|
-
engine.new(content).to_html
|
41
|
-
end
|
42
|
-
end
|
43
|
-
end
|
44
|
-
end
|