bookmaker 0.3.1 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -29,9 +29,10 @@ module Bookmaker
29
29
 
30
30
  exported = []
31
31
  exported << Parser::PDF.parse(root_dir) if export_pdf && Dependency.xelatex?# && Dependency.prince?
32
- exported << Parser::HTML.parse(root_dir) if export_html
33
- exported << Parser::Epub.parse(root_dir) if export_epub
34
- exported << Parser::Mobi.parse(root_dir) if export_mobi && Dependency.kindlegen?
32
+ exported << Parser::HTML.parse(root_dir) if export_html
33
+ epub_done = Parser::Epub.parse(root_dir) if export_epub
34
+ exported << epub_done
35
+ exported << Parser::Mobi.parse(root_dir) if export_mobi && epub_done && Dependency.kindlegen?
35
36
  # exported << Parser::Txt.parse(root_dir) if export_txt && Dependency.html2text?
36
37
 
37
38
  if exported.all?
@@ -16,6 +16,7 @@ module Bookmaker
16
16
  def html; @html ||= Nokogiri::HTML(html_path.read); end
17
17
 
18
18
  def parse
19
+ puts "-- Exporting EPUB"
19
20
  epub.title config["title"]
20
21
  epub.language config["language"]
21
22
  epub.creator config["authors"].to_sentence
@@ -5,14 +5,18 @@ module Bookmaker
5
5
  def content
6
6
  raw = []
7
7
  entries.keys.each do |chapter|
8
- raw << "{::nomarkdown}<h2>#{chapter.split(/_/)[1].gsub('-',' ')}</h2>{:/}"
8
+ text = "<h2>#{chapter.split(/_/)[1].gsub('-',' ')}</h2>"
9
+ sections = []
9
10
  entries[chapter].each do |section|
10
- raw << read_content(section)[0] + "\n\n* * *"
11
+ sections << "<p>#{read_content(section)[0].split(/\n{2,}/).map{|a| a.gsub("\n",' ').chomp}.join("</p>\n\n<p>")}</p>"
11
12
  end
13
+ text << sections.join("\n\n<hr />\n\n")
14
+ raw << "<div class='chapter'>\n#{text}\n</div>\n"
12
15
  end
13
16
  raw
14
17
  end
15
18
  def parse
19
+ puts "-- Exporting HTML"
16
20
  html = parse_layout(content)
17
21
  toc = TOC::HTML.generate(html)
18
22
  locals = config.merge({
@@ -26,12 +30,26 @@ module Bookmaker
26
30
  p $!, $@
27
31
  false
28
32
  end
29
- def parse_layout(text)
30
- output = ""
31
- text.each do |s|
32
- output << "<div class='section'>\n#{Kramdown::Document.new(s).to_html}\n</div>\n"
33
+ def parse_layout(chapters)
34
+ output = ''
35
+ chapters.each do |text|
36
+ text.gsub!(/%.*/,'')
37
+ text.gsub!(/``(.*?)''/m) { "&ldquo;#{$1}&rdquo;"}
38
+ # \{([^\}]+?)\} Within the curly braces.
39
+ text.gsub!(/\\begin\{quote\}(.*?)\\end\{quote\}/m) { "<blockquote>#{$1}</blockquote>"}
40
+ text.gsub!(/<\/blockquote>\s+?<blockquote>/m, "\n")
41
+ text.gsub!(/\\begin\{([^\}]+?)\}(.*?)\\end\{[^\}]+?\}/m) { "<div class='#{$1}'>#{$2}</div>"}
42
+ text.gsub!(/\\section\{([^\}]+?)\}/m) { "<h3>#{$1}</h3>"}
43
+ text.gsub!(/\\emph\{([^\}]+?)\}/m) { "<em>#{$1}</em>"}
44
+ text.gsub!(/\\(.*?)\{([^\}]+?)\}/) { "<span class='#{$1}'>#{$2}</span>"}
45
+ text.gsub!(/<\/span>\{[^\}]+?}/, "</span>")
46
+ text.gsub!(/<p><h([1-6])>(.*?)<\/h[1-6]><\/p>/) { "<h#{$1}>#{$2}</h#{$1}>"}
47
+ text.gsub!(/\\Dash\{\}/, "&mdash;")
48
+ text.gsub!(/\b'\b/) { "&#39;" }
49
+ output << text
33
50
  end
34
- output
51
+ output.gsub!(/\n\n+/, "\n\n")
52
+ return output
35
53
  end
36
54
  end
37
55
  # # List of directories that should be skipped.
@@ -2,6 +2,7 @@ module Bookmaker
2
2
  module Parser
3
3
  class Mobi < Base
4
4
  def parse
5
+ puts "-- Exporting MOBI"
5
6
  spawn_command ["kindlegen", epub_file.to_s,]
6
7
  true
7
8
  end
@@ -17,6 +17,7 @@ module Bookmaker
17
17
  raw
18
18
  end
19
19
  def parse
20
+ puts "-- Exporting PDF"
20
21
  locals = config.merge({ :contents => parse_layout(content) })
21
22
  locals['copyright'].gsub!("(C)", "\\copyright{}")
22
23
  output = render_template(root_dir.join("templates/pdf/layout.erb"), locals)
@@ -1,3 +1,3 @@
1
1
  module Bookmaker
2
- VERSION = "0.3.1"
2
+ VERSION = "0.4.0"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bookmaker
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.4.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2013-03-03 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activesupport
16
- requirement: &2152320520 !ruby/object:Gem::Requirement
16
+ requirement: &2160139320 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *2152320520
24
+ version_requirements: *2160139320
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: aruba
27
- requirement: &2152318860 !ruby/object:Gem::Requirement
27
+ requirement: &2160124400 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *2152318860
35
+ version_requirements: *2160124400
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: cucumber
38
- requirement: &2152312100 !ruby/object:Gem::Requirement
38
+ requirement: &2160122120 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *2152312100
46
+ version_requirements: *2160122120
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: eeepub
49
- requirement: &2152310880 !ruby/object:Gem::Requirement
49
+ requirement: &2160109740 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: '0'
55
55
  type: :runtime
56
56
  prerelease: false
57
- version_requirements: *2152310880
57
+ version_requirements: *2160109740
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: kramdown
60
- requirement: &2152307400 !ruby/object:Gem::Requirement
60
+ requirement: &2160104920 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: '0'
66
66
  type: :runtime
67
67
  prerelease: false
68
- version_requirements: *2152307400
68
+ version_requirements: *2160104920
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: thor
71
- requirement: &2152287540 !ruby/object:Gem::Requirement
71
+ requirement: &2160073380 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ! '>='
@@ -76,10 +76,10 @@ dependencies:
76
76
  version: '0'
77
77
  type: :runtime
78
78
  prerelease: false
79
- version_requirements: *2152287540
79
+ version_requirements: *2160073380
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: nokogiri
82
- requirement: &2152281980 !ruby/object:Gem::Requirement
82
+ requirement: &2160069400 !ruby/object:Gem::Requirement
83
83
  none: false
84
84
  requirements:
85
85
  - - ! '>='
@@ -87,10 +87,10 @@ dependencies:
87
87
  version: '0'
88
88
  type: :runtime
89
89
  prerelease: false
90
- version_requirements: *2152281980
90
+ version_requirements: *2160069400
91
91
  - !ruby/object:Gem::Dependency
92
92
  name: notifier
93
- requirement: &2152258980 !ruby/object:Gem::Requirement
93
+ requirement: &2152320600 !ruby/object:Gem::Requirement
94
94
  none: false
95
95
  requirements:
96
96
  - - ! '>='
@@ -98,7 +98,7 @@ dependencies:
98
98
  version: '0'
99
99
  type: :runtime
100
100
  prerelease: false
101
- version_requirements: *2152258980
101
+ version_requirements: *2152320600
102
102
  description: ! 'ODO: Write a gem description'
103
103
  email:
104
104
  - dausha@gmail.com