kitabu 1.0.6 → 2.0.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.
Files changed (157) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +5 -3
  3. data/.travis.yml +18 -0
  4. data/CHANGELOG.md +9 -0
  5. data/Gemfile.lock +67 -50
  6. data/README.md +235 -0
  7. data/attachments/browser-version.png +0 -0
  8. data/attachments/cover.png +0 -0
  9. data/attachments/kitabu.epub +0 -0
  10. data/attachments/kitabu.mobi +0 -0
  11. data/attachments/kitabu.pdf +0 -0
  12. data/{spec/support/mybook/output → examples/kitabu/output/epub/images}/.gitkeep +0 -0
  13. data/examples/kitabu/output/epub/images/kitabu-icon.png +0 -0
  14. data/examples/kitabu/output/epub/images/kitabu-icon.svg +19 -0
  15. data/examples/kitabu/output/epub/images/kitabu-word.png +0 -0
  16. data/examples/kitabu/output/epub/images/kitabu-word.svg +14 -0
  17. data/examples/kitabu/output/epub/images/kitabu.png +0 -0
  18. data/examples/kitabu/output/epub/images/kitabu.svg +20 -0
  19. data/examples/kitabu/output/epub/section_0.html +266 -0
  20. data/examples/kitabu/output/epub/section_1.html +246 -0
  21. data/examples/kitabu/output/epub/section_2.html +520 -0
  22. data/examples/kitabu/output/epub/section_3.html +282 -0
  23. data/examples/kitabu/output/epub/section_4.html +276 -0
  24. data/examples/kitabu/output/epub/styles/epub.css +437 -0
  25. data/examples/kitabu/output/epub/styles/html.css +712 -0
  26. data/examples/kitabu/output/epub/styles/pdf.css +840 -0
  27. data/examples/kitabu/output/epub/styles/print.css +1278 -0
  28. data/examples/kitabu/output/epub/toc.html +37 -0
  29. data/{spec/support/mybook/templates/epub/style.css → examples/kitabu/output/images/.gitkeep} +0 -0
  30. data/examples/kitabu/output/images/kitabu-icon.png +0 -0
  31. data/examples/kitabu/output/images/kitabu-icon.svg +19 -0
  32. data/examples/kitabu/output/images/kitabu-word.png +0 -0
  33. data/examples/kitabu/output/images/kitabu-word.svg +14 -0
  34. data/examples/kitabu/output/images/kitabu.png +0 -0
  35. data/examples/kitabu/output/images/kitabu.svg +20 -0
  36. data/examples/kitabu/output/kitabu.epub +0 -0
  37. data/examples/kitabu/output/kitabu.html +513 -0
  38. data/examples/kitabu/output/kitabu.mobi +0 -0
  39. data/examples/kitabu/output/kitabu.pdf +0 -0
  40. data/examples/kitabu/output/kitabu.pdf.html +729 -0
  41. data/examples/kitabu/output/kitabu.print.html +729 -0
  42. data/examples/kitabu/output/kitabu.print.pdf +0 -0
  43. data/examples/kitabu/output/kitabu.txt +440 -0
  44. data/examples/kitabu/output/styles/epub.css +437 -0
  45. data/examples/kitabu/output/styles/html.css +712 -0
  46. data/examples/kitabu/output/styles/pdf.css +840 -0
  47. data/examples/kitabu/output/styles/print.css +1278 -0
  48. data/kitabu.gemspec +7 -5
  49. data/lib/kitabu.rb +10 -20
  50. data/lib/kitabu/cli.rb +0 -5
  51. data/lib/kitabu/dependency.rb +0 -4
  52. data/lib/kitabu/exporter.rb +2 -0
  53. data/lib/kitabu/extensions/rouge.rb +9 -0
  54. data/lib/kitabu/generator.rb +9 -21
  55. data/lib/kitabu/helpers.rb +47 -0
  56. data/lib/kitabu/markdown.rb +31 -0
  57. data/lib/kitabu/parser.rb +21 -3
  58. data/lib/kitabu/parser/epub.rb +31 -18
  59. data/lib/kitabu/parser/html.rb +48 -29
  60. data/lib/kitabu/parser/mobi.rb +1 -1
  61. data/lib/kitabu/parser/pdf.rb +52 -8
  62. data/lib/kitabu/version.rb +2 -2
  63. data/spec/kitabu/cli/export_spec.rb +4 -4
  64. data/spec/kitabu/cli/new_spec.rb +2 -2
  65. data/spec/kitabu/markdown_spec.rb +24 -0
  66. data/spec/kitabu/parser/html_spec.rb +20 -25
  67. data/spec/kitabu/parser/mobi_spec.rb +14 -0
  68. data/spec/kitabu/parser/pdf_spec.rb +18 -1
  69. data/spec/kitabu/parser/txt_spec.rb +14 -0
  70. data/spec/spec_helper.rb +10 -6
  71. data/spec/support/mybook/config/helper.rb +4 -29
  72. data/spec/support/mybook/config/kitabu.yml +0 -10
  73. data/spec/support/mybook/templates/epub/cover.erb +4 -3
  74. data/{templates → spec/support/mybook/templates/epub}/cover.png +0 -0
  75. data/spec/support/mybook/templates/epub/page.erb +3 -2
  76. data/spec/support/mybook/templates/html/layout.erb +10 -13
  77. data/spec/support/mybook/templates/styles/epub.scss +3 -0
  78. data/spec/support/mybook/templates/styles/html.scss +3 -0
  79. data/spec/support/mybook/templates/styles/pdf.scss +3 -0
  80. data/spec/support/mybook/templates/styles/print.scss +3 -0
  81. data/spec/support/mybook/text/{01_Markdown_Chapter.markdown → 01_Markdown_Chapter.md} +2 -3
  82. data/spec/support/mybook/text/02_ERB_Chapter.md.erb +7 -0
  83. data/spec/support/mybook/text/{04_With_Directory/Some_Chapter.mkdn → 03_With_Directory/Some_Chapter.md} +0 -0
  84. data/spec/support/mybook/text/{CHANGELOG.textile → CHANGELOG.md} +2 -2
  85. data/spec/support/mybook/text/{TOC.textile → TOC.md} +0 -0
  86. data/spec/support/mybook/text/{_00_Introduction.markdown → _00_Introduction.md} +0 -0
  87. data/spec/support/shared.rb +14 -10
  88. data/templates/Gemfile +3 -3
  89. data/templates/Guardfile +1 -5
  90. data/templates/config.erb +5 -5
  91. data/templates/cover.erb +4 -3
  92. data/templates/epub.erb +3 -2
  93. data/templates/helper.rb +28 -29
  94. data/templates/images/.gitkeep +0 -0
  95. data/templates/images/kitabu-icon.png +0 -0
  96. data/templates/images/kitabu-icon.svg +19 -0
  97. data/templates/images/kitabu-word.png +0 -0
  98. data/templates/images/kitabu-word.svg +14 -0
  99. data/templates/images/kitabu.png +0 -0
  100. data/templates/images/kitabu.svg +20 -0
  101. data/{examples/RailsGuides/templates → templates/templates/epub}/cover.erb +4 -3
  102. data/templates/templates/epub/cover.png +0 -0
  103. data/templates/templates/epub/page.erb +16 -0
  104. data/templates/{layout.erb → templates/html/layout.erb} +22 -11
  105. data/templates/templates/styles/epub.scss +1 -0
  106. data/templates/templates/styles/files/_normalize.scss +427 -0
  107. data/templates/templates/styles/html.scss +252 -0
  108. data/templates/templates/styles/pdf.scss +371 -0
  109. data/templates/templates/styles/print.scss +2 -0
  110. data/templates/text/01_Getting_Started.md +26 -0
  111. data/templates/text/02_Creating_Chapters.md +22 -0
  112. data/templates/text/03_Syntax_Highlighting.erb +69 -0
  113. data/templates/text/04_Dynamic_Content.erb +64 -0
  114. data/templates/text/05_Exporting_Files.md +49 -0
  115. metadata +143 -83
  116. data/README.rdoc +0 -218
  117. data/examples/RailsGuides/config/helper.rb +0 -29
  118. data/examples/RailsGuides/config/kitabu.yml +0 -44
  119. data/examples/RailsGuides/images/challenge.png +0 -0
  120. data/examples/RailsGuides/images/posts_index.png +0 -0
  121. data/examples/RailsGuides/images/rails_welcome.png +0 -0
  122. data/examples/RailsGuides/output/RailsGuides.epub +0 -0
  123. data/examples/RailsGuides/output/RailsGuides.html +0 -1556
  124. data/examples/RailsGuides/output/RailsGuides.pdf +3 -4934
  125. data/examples/RailsGuides/templates/layout.css +0 -352
  126. data/examples/RailsGuides/templates/layout.erb +0 -43
  127. data/examples/RailsGuides/templates/syntax.css +0 -62
  128. data/examples/RailsGuides/templates/user.css +0 -19
  129. data/examples/RailsGuides/text/01_Guide_Assumptions.mkdn +0 -13
  130. data/examples/RailsGuides/text/02_What_is_Rails.mkdn +0 -106
  131. data/examples/RailsGuides/text/03_Creating_a_new_Rails_project.mkdn +0 -200
  132. data/examples/RailsGuides/text/04_Hello_Rails.mkdn +0 -62
  133. data/examples/RailsGuides/text/05_Getting_Up_and_Running_Quickly_with_Scaffolding.mkdn +0 -4
  134. data/examples/RailsGuides/text/06_Creating_a_resource.mkdn +0 -503
  135. data/examples/RailsGuides/text/07_Adding_a_second_model.mkdn +0 -232
  136. data/examples/RailsGuides/text/08_Refactoring.mkdn +0 -123
  137. data/examples/RailsGuides/text/09_Deleting_comments.mkdn +0 -57
  138. data/examples/RailsGuides/text/09_Security.mkdn +0 -56
  139. data/examples/RailsGuides/text/10_Building_a_multi_model_form.mkdn +0 -130
  140. data/examples/RailsGuides/text/11_View_helpers.mkdn +0 -50
  141. data/examples/RailsGuides/text/12_Whats_next.mkdn +0 -14
  142. data/examples/RailsGuides/text/13_Configuration_gotchas.mkdn +0 -10
  143. data/lib/kitabu/adapters/markdown.rb +0 -34
  144. data/lib/kitabu/extensions/redcloth.rb +0 -69
  145. data/lib/kitabu/syntax.rb +0 -130
  146. data/spec/kitabu/extensions/redcloth_spec.rb +0 -57
  147. data/spec/kitabu/syntax_spec.rb +0 -106
  148. data/spec/support/mybook/templates/html/layout.css +0 -353
  149. data/spec/support/mybook/templates/html/syntax.css +0 -58
  150. data/spec/support/mybook/templates/html/user.css +0 -1
  151. data/spec/support/mybook/text/02_Textile_Chapter.textile +0 -3
  152. data/spec/support/mybook/text/03_HTML_Chapter.html +0 -3
  153. data/templates/epub.css +0 -500
  154. data/templates/layout.css +0 -353
  155. data/templates/sample.md +0 -6
  156. data/templates/syntax.css +0 -58
  157. data/templates/user.css +0 -1
@@ -2,7 +2,7 @@ module Kitabu
2
2
  module Parser
3
3
  class Mobi < Base
4
4
  def parse
5
- spawn_command ["kindlegen", epub_file.to_s,]
5
+ spawn_command ["kindlegen", epub_file.to_s]
6
6
  true
7
7
  end
8
8
 
@@ -3,11 +3,13 @@ module Kitabu
3
3
  class PDF < Base
4
4
  def parse
5
5
  apply_footnotes!
6
- spawn_command ["prince", with_footnotes_file.to_s, "-o", pdf_file.to_s]
6
+ spawn_command ["prince", html_for_pdf.to_s, "-o", pdf_file.to_s]
7
+ spawn_command ["prince", html_for_print.to_s, "-o", print_file.to_s]
7
8
  end
8
9
 
9
10
  def apply_footnotes!
10
11
  html = Nokogiri::HTML(html_file.read)
12
+ footnote_count = 1
11
13
 
12
14
  # https://github.com/sparklemotion/nokogiri/issues/339
13
15
  html.css("html").first.tap do |element|
@@ -16,22 +18,60 @@ module Kitabu
16
18
  element.delete("xml:lang")
17
19
  end
18
20
 
19
- html.css("p.footnote[id^='_fn']").each do |fn|
20
- fn.node_name = "span"
21
- fn.set_attribute("class", "fn")
21
+ chapters = html.css(".chapter")
22
22
 
23
- html.css("[href='##{fn["id"]}']").each do |link|
24
- link.add_next_sibling(fn)
23
+ chapters.each do |chapter|
24
+ footnotes = chapter.css(".footnotes li")
25
+
26
+ footnotes.each do |fn|
27
+ # Get current footnote number
28
+ footnote_number = footnote_count
29
+ footnote_count += 1
30
+
31
+ # Remove rev links
32
+ fn.css('[rev=footnote]').map(&:remove)
33
+
34
+ # Create an element for storing the footnote description
35
+ fn_desc = Nokogiri::XML::Node.new('span', Nokogiri::HTML::DocumentFragment.parse(''))
36
+ fn_desc.set_attribute 'class', 'fn-desc'
37
+ fn_desc.inner_html = fn.css('p').map(&:inner_html).join("\n")
38
+
39
+ # Find ref based on footnote's id
40
+ fn_id = fn.get_attribute('id')
41
+ ref = chapter.css("a[href='##{fn_id}']").first
42
+
43
+ # Go up to parent and reformat it.
44
+ sup = ref.parent
45
+ sup.delete("id")
46
+ sup.set_attribute 'class', 'fn-ref'
47
+ sup.inner_html = ''
48
+
49
+ # Finally, add the description after the <sup> tag.
50
+ sup.after(fn_desc)
25
51
  end
52
+
53
+ # Remove the footnotes element
54
+ chapter.css('.footnotes').map(&:remove)
26
55
  end
27
56
 
28
- File.open(with_footnotes_file, "w") {|f| f << html.to_xhtml}
57
+ create_html_file(html_for_print, html, 'print')
58
+ create_html_file(html_for_pdf, html, 'pdf')
29
59
  end
30
60
 
31
- def with_footnotes_file
61
+ def create_html_file(target, html, class_name)
62
+ html.css("html").first.set_attribute "class", class_name
63
+ html.css("link[name=stylesheet]").first.set_attribute "href", "styles/#{class_name}.css"
64
+ File.open(target, "w") {|f| f << html.to_html }
65
+ end
66
+
67
+ def html_for_pdf
32
68
  root_dir.join("output/#{name}.pdf.html")
33
69
  end
34
70
 
71
+ def html_for_print
72
+ root_dir.join("output/#{name}.print.html")
73
+ end
74
+
35
75
  def html_file
36
76
  root_dir.join("output/#{name}.html")
37
77
  end
@@ -39,6 +79,10 @@ module Kitabu
39
79
  def pdf_file
40
80
  root_dir.join("output/#{name}.pdf")
41
81
  end
82
+
83
+ def print_file
84
+ root_dir.join("output/#{name}.print.pdf")
85
+ end
42
86
  end
43
87
  end
44
88
  end
@@ -1,8 +1,8 @@
1
1
  module Kitabu
2
2
  module Version
3
- MAJOR = 1
3
+ MAJOR = 2
4
4
  MINOR = 0
5
- PATCH = 6
5
+ PATCH = 0
6
6
  STRING = "#{MAJOR}.#{MINOR}.#{PATCH}"
7
7
  end
8
8
  end
@@ -3,15 +3,15 @@ require "spec_helper"
3
3
  describe Kitabu::Cli do
4
4
  context "while running export" do
5
5
  it "exits with status 1 when an invalid --only option is provided" do
6
- expect {
6
+ expect(->{
7
7
  capture(:stderr){ Kitabu::Cli.start(["export", "--only=invalid"]) }
8
- }.to exit_with_code(1)
8
+ }).to exit_with_code(1)
9
9
  end
10
10
 
11
11
  it "exits with status 1 when no config file is found" do
12
- expect {
12
+ expect(->{
13
13
  capture(:stderr){ Kitabu::Cli.start(["export"]) }
14
- }.to exit_with_code(1)
14
+ }).to exit_with_code(1)
15
15
  end
16
16
  end
17
17
  end
@@ -13,9 +13,9 @@ describe Kitabu::Cli do
13
13
  end
14
14
 
15
15
  it "exits with status 1 when no path is provided" do
16
- expect {
16
+ expect(->{
17
17
  capture(:stderr){ Kitabu::Cli.start(["new"]) }
18
- }.to exit_with_code(1)
18
+ }).to exit_with_code(1)
19
19
 
20
20
  expect(File).not_to be_directory(tmpdir.join("mybook"))
21
21
  end
@@ -0,0 +1,24 @@
1
+ require 'spec_helper'
2
+
3
+ describe Kitabu::Markdown do
4
+ it 'enables fenced code blocks' do
5
+ html = Kitabu::Markdown.render <<-TEXT.strip_heredoc
6
+ ```ruby
7
+ class User
8
+ end
9
+ ```
10
+ TEXT
11
+
12
+ expect(html).to include('<pre class="highlight ruby">')
13
+ end
14
+
15
+ it 'enables options' do
16
+ html = Kitabu::Markdown.render <<-TEXT.strip_heredoc
17
+ ```php?start_inline=true
18
+ echo 'Hello';
19
+ ```
20
+ TEXT
21
+
22
+ expect(html).to include('<span class="k">echo</span>')
23
+ end
24
+ end
@@ -18,24 +18,23 @@ describe Kitabu::Parser::HTML do
18
18
  end
19
19
 
20
20
  it "skips files that start with underscore" do
21
- expect(relative).not_to include("_00_Introduction.markdown")
21
+ expect(relative).not_to include("_00_Introduction.md")
22
22
  end
23
23
 
24
24
  it "skips other files" do
25
- expect(relative).not_to include("CHANGELOG.textile")
26
- expect(relative).not_to include("TOC.textile")
25
+ expect(relative).not_to include("CHANGELOG.md")
26
+ expect(relative).not_to include("TOC.md")
27
27
  end
28
28
 
29
29
  it "returns only first-level entries" do
30
- expect(relative).not_to include("04_With_Directory/Some_Chapter.mkdn")
30
+ expect(relative).not_to include("03_With_Directory/Some_Chapter.md")
31
31
  end
32
32
 
33
33
  it "returns entries" do
34
- expect(relative.first).to eq("01_Markdown_Chapter.markdown")
35
- expect(relative.second).to eq("02_Textile_Chapter.textile")
36
- expect(relative.third).to eq("03_HTML_Chapter.html")
37
- expect(relative.fourth).to eq("04_With_Directory")
38
- expect(relative.fifth).to be_nil
34
+ expect(relative.first).to eq("01_Markdown_Chapter.md")
35
+ expect(relative.second).to eq("02_ERB_Chapter.md.erb")
36
+ expect(relative.third).to eq("03_With_Directory")
37
+ expect(relative.fourth).to be_nil
39
38
  end
40
39
  end
41
40
 
@@ -44,24 +43,12 @@ describe Kitabu::Parser::HTML do
44
43
  let(:html) { File.read(file) }
45
44
  before { parser.parse }
46
45
 
47
- it "has several chapters" do
48
- expect(html).to have_tag("div.chapter", 4)
49
- end
50
-
51
- it "renders .markdown" do
52
- expect(html).to have_tag("div.chapter > h2#markdown", "Markdown")
53
- end
54
-
55
- it "renders .mkdn" do
56
- expect(html).to have_tag("div.chapter > h2#some-chapter", "Some Chapter")
57
- end
58
-
59
- it "renders .textile" do
60
- expect(html).to have_tag("div.chapter > h2#textile", "Textile")
46
+ it "keeps html file around" do
47
+ expect(file).to be_file
61
48
  end
62
49
 
63
- it "renders .html" do
64
- expect(html).to have_tag("div.chapter > h2#html", "HTML")
50
+ it "has several chapters" do
51
+ expect(html).to have_tag("div.chapter", 3)
65
52
  end
66
53
 
67
54
  it "uses config file" do
@@ -71,5 +58,13 @@ describe Kitabu::Parser::HTML do
71
58
  it "renders changelog" do
72
59
  expect(html).to have_tag("div.changelog h2", "Revisions")
73
60
  end
61
+
62
+ it "renders erb" do
63
+ expect(html).to have_tag("h2", "ERB")
64
+ end
65
+
66
+ it "renders erb blocks" do
67
+ expect(html).to have_tag("div.note.info > p", "This is a note!")
68
+ end
74
69
  end
75
70
  end
@@ -0,0 +1,14 @@
1
+ require "spec_helper"
2
+
3
+ describe Kitabu::Parser::Mobi, kindlegen: Kitabu::Dependency.kindlegen? do
4
+ let(:root) { SPECDIR.join("support/mybook") }
5
+
6
+ before do
7
+ Kitabu::Parser::HTML.parse(root)
8
+ Kitabu::Parser::Mobi.parse(root)
9
+ end
10
+
11
+ it "generates mobi" do
12
+ expect(root.join("output/mybook.mobi")).to be_file
13
+ end
14
+ end
@@ -1,6 +1,6 @@
1
1
  require "spec_helper"
2
2
 
3
- describe Kitabu::Parser::PDF do
3
+ describe Kitabu::Parser::PDF, prince: Kitabu::Dependency.prince? do
4
4
  let(:root) { SPECDIR.join("support/mybook") }
5
5
 
6
6
  before do
@@ -8,6 +8,23 @@ describe Kitabu::Parser::PDF do
8
8
  Kitabu::Parser::PDF.new(root).parse
9
9
  end
10
10
 
11
+ it "creates html with css identifier" do
12
+ expect(root.join("output/mybook.pdf.html").read).to have_tag('html.pdf')
13
+ expect(root.join("output/mybook.print.html").read).to have_tag('html.print')
14
+ end
15
+
16
+ it "sets stylesheet for print pdf" do
17
+ expect(root.join("output/mybook.print.html").read).to have_tag('link[rel=stylesheet][href="styles/print.css"]')
18
+ end
19
+
20
+ it "sets stylesheet for pdf" do
21
+ expect(root.join("output/mybook.pdf.html").read).to have_tag('link[rel=stylesheet][href="styles/pdf.css"]')
22
+ end
23
+
24
+ it "generates pdf file for print" do
25
+ expect(root.join("output/mybook.print.pdf")).to be_file
26
+ end
27
+
11
28
  it "generates pdf file" do
12
29
  expect(root.join("output/mybook.pdf")).to be_file
13
30
  end
@@ -0,0 +1,14 @@
1
+ require "spec_helper"
2
+
3
+ describe Kitabu::Parser::Txt, html2text: Kitabu::Dependency.html2text? do
4
+ let(:root) { SPECDIR.join("support/mybook") }
5
+
6
+ before do
7
+ Kitabu::Parser::HTML.parse(root)
8
+ Kitabu::Parser::Txt.parse(root)
9
+ end
10
+
11
+ it "generates text file" do
12
+ expect(root.join("output/mybook.txt")).to be_file
13
+ end
14
+ end
@@ -1,3 +1,8 @@
1
+ require "codeclimate-test-reporter"
2
+ CodeClimate::TestReporter.start
3
+
4
+ require "bundler/setup"
5
+
1
6
  require "kitabu"
2
7
  require "pathname"
3
8
 
@@ -17,15 +22,14 @@ RSpec.configure do |config|
17
22
  config.include(SpecHelper)
18
23
  config.include(Matchers)
19
24
 
25
+ config.filter_run_excluding html2text: false, kindlegen: false, prince: false
26
+
20
27
  cleaner = proc do
21
- [
22
- TMPDIR,
23
- SPECDIR.join("support/mybook/output/mybook.pdf"),
24
- SPECDIR.join("support/mybook/output/mybook.epub"),
25
- SPECDIR.join("support/mybook/output/mybook.html")
26
- ].each do |i|
28
+ [TMPDIR].each do |i|
27
29
  FileUtils.rm_rf(i) if File.exist?(i)
28
30
  end
31
+
32
+ Dir.chdir File.expand_path('../..', __FILE__)
29
33
  end
30
34
 
31
35
  config.before(&cleaner)
@@ -1,29 +1,4 @@
1
- # Put any Ruby code in here.
2
- # Here's an example on how you can extend RedCloth (Textile) with new formatters.
3
- #
4
- # module RedCloth
5
- # module Formatters
6
- # module HTML
7
- # def attention(options)
8
- # %[<p class="attention">#{options[:text]}</p>]
9
- # end
10
- # end
11
- # end
12
- # end
13
- #
14
- # Then you can just use `attention. This is an important note!` on your text.
15
- #
16
- # You can add inline formatters as well. The approach is slightly different,
17
- # but pretty straightforward.
18
- #
19
- # Add your formatter to `RedCloth::INLINE_FORMATTERS` and implement the method, making sure that it
20
- # replaces the content using `String#gsub!`.
21
- #
22
- # module RedCloth
23
- # def my_formatter(text)
24
- # text.gsub!(/Hello/, "Hi")
25
- # end
26
- # end
27
- #
28
- # RedCloth::INLINE_FORMATTERS << :my_formatter
29
- #
1
+ module Kitabu
2
+ module Helpers
3
+ end
4
+ end
@@ -43,13 +43,3 @@ authors:
43
43
 
44
44
  # The base URL from your source code.
45
45
  base_url: http://example.com
46
-
47
- # You can rename your text structure automatically.
48
- # All you have to do is using a list will all your chapters and
49
- # then you can run `kitabu rearrange`.
50
- structure:
51
- - Markdown_Chapter.markdown
52
- - Textile_Chapter.textile
53
- - HTML_Chapter.html
54
- - With_Directory
55
- - Some_Chapter.mkdn
@@ -2,15 +2,16 @@
2
2
  <!DOCTYPE html PUBLIC
3
3
  "-//W3C//DTD XHTML 1.1//EN"
4
4
  "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
5
- <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<%= language %>">
5
+ <html class="epub" xmlns="http://www.w3.org/1999/xhtml" xml:lang="<%= language %>">
6
6
  <head>
7
7
  <title><%= title %></title>
8
- <link rel="stylesheet" href="style.css" type="text/css" />
8
+ <link rel="stylesheet" href="styles/epub.css" type="text/css" />
9
9
  <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" />
10
10
  </head>
11
+
11
12
  <body>
12
13
  <div>
13
- <h1><%= title %></h1>
14
+ <h1><%= title %></h1>
14
15
  </div>
15
16
  </body>
16
17
  </html>
@@ -1,10 +1,11 @@
1
1
  <?xml version="1.0" encoding="UTF-8"?>
2
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="<%= language %>">
3
+ <html class="epub" xmlns="http://www.w3.org/1999/xhtml" xml:lang="<%= language %>">
4
4
  <head>
5
5
  <title></title>
6
6
  <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
7
- <link rel="stylesheet" type="text/css" href="style.css"/>
7
+ <link rel="stylesheet" type="text/css" href="styles/epub.css"/>
8
+ <%= highlight_theme('github') %>
8
9
  </head>
9
10
 
10
11
  <body>
@@ -1,17 +1,14 @@
1
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
2
- "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
3
- <html>
1
+ <!doctype html>
2
+ <html class="html">
4
3
  <head>
5
4
  <title><%= title %></title>
6
5
  <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
7
- <link rel="stylesheet" type="text/css" href="../templates/html/layout.css"/>
8
- <link rel="stylesheet" type="text/css" href="../templates/html/syntax.css"/>
9
- <link rel="stylesheet" type="text/css" href="../templates/html/user.css"/>
10
-
6
+ <link name="stylesheet" rel="stylesheet" type="text/css" href="styles/html.css" />
11
7
  <meta name="author" content="<%= authors.join(', ') %>" />
12
8
  <meta name="subject" content="<%= subject %>" />
13
9
  <meta name="keywords" content="<%= keywords %>" />
14
10
  <meta name="date" content="<%= published_at %>" />
11
+ <%= highlight_theme('github') %>
15
12
  </head>
16
13
  <body>
17
14
  <div class="frontcover container">
@@ -33,6 +30,12 @@
33
30
  <%= content %>
34
31
  </div>
35
32
 
33
+ <% if changelog %>
34
+ <div class="container changelog">
35
+ <%= changelog %>
36
+ </div>
37
+ <% end %>
38
+
36
39
  <div class="imprint container">
37
40
  <div>
38
41
  <h2><%= title %></h2>
@@ -40,11 +43,5 @@
40
43
  <p><%= copyright %></p>
41
44
  </div>
42
45
  </div>
43
-
44
- <% if changelog %>
45
- <div class="container changelog">
46
- <%= changelog %>
47
- </div>
48
- <% end %>
49
46
  </body>
50
47
  </html>