author 1.1.2.alpha → 1.1.3.alpha

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 CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- ZmI4YjYwOTc0ZTQxMjI2ZmYwOGIzN2ZmZjljOTMyZjdjNGJkOTFmZQ==
4
+ M2FhMTUyMGU5ZTgyNjFmZjNhMGFmNzYwMTdlODZkYjg3YjVkMjA2ZQ==
5
5
  data.tar.gz: !binary |-
6
- YWQ3YjdlODYyMmM3NjAwNjUzNWIwOTc0MTk3ZmVkOTcxNjdjNWFmOQ==
6
+ NjVkNjk2MTI1OTlhNmNjZDUyNGY5ODU1ZWMzMTNmNThhMzI5Y2M5Mw==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- ZmE3OWMxZWI0MmYxMmIyZTg3N2Y5YjkxODk1NGYwNTg3NGRhYWY3NTNlNTM1
10
- YTkzMGM5YTY1MWIzYzgyMmExMTQ3NDg4OWFjMjVlYmU3MTU1ZGFkMmVhZDkz
11
- MmQ1ZGJmOGU3NjlhNzU3Yjc0YzVhNmZlZTExNzYyNjYxZDg5MWY=
9
+ NTU5Y2YyMTlhNzJmNDgyNDEwMGMxYTI2NjYyYzc2YzIzZjBmNzA3YTk2NmVm
10
+ MmRhMzI4YjVhODBhZjVkOTk1ZTkwZjg2ZGJkNDc3NDBkMzlhYjgxYzExYzM5
11
+ NjYyNDJjOGFlOTc3ZDliZGIwMmE3MThmYzNlMGQ5NWM1NzA4NmI=
12
12
  data.tar.gz: !binary |-
13
- Zjc1NTM1MmJkYTI4Y2ExZTIxYWFhYzc1NTVkZTE4OTU1M2JlNDk2ZWNmMDgy
14
- N2RmMDNmY2E3ZGRlN2FjNGI1NThmNmRiYTgxNmRmZWUyNTA2NjNjYjFkY2E1
15
- MzEwMGVjZjY0NDhkZmZkNmM4N2QwNjAwNWQzZTE2MzFlMGVkYmE=
13
+ Y2MzYzAwOTJjMzJmMTQ3ZGI3ODkwOTVlYzUzODEwYTFmN2VmNjliOWRjZDJm
14
+ ZTAxZTRkZGYxNmIzZmUxNmVhNDk4MjQ4NGUyYWNkYjFmNTQ0MTU3NTUwZDM3
15
+ Nzg5OGM4NTdlMDE4YTRhNjVkNTllMzg2MGMyMDVmZGIwMzJhYWY=
@@ -10,6 +10,14 @@ module Author
10
10
  Author::Exporters::XHTML.export
11
11
  end
12
12
 
13
+ desc "pdf", "Build PDF from XHTML"
14
+ def pdf
15
+ say "Building the XHTML site"
16
+ Author::Exporters::XHTML.export
17
+ say "Building PDF"
18
+ Author::Exporters::PDF.export
19
+ end
20
+
13
21
  end
14
22
  end
15
23
  end
@@ -0,0 +1,27 @@
1
+ module Author
2
+ module Exporters
3
+ class Base
4
+
5
+ def root_dir
6
+ Dir.pwd
7
+ end
8
+
9
+ def source_dir
10
+ File.join(root_dir, 'chapters')
11
+ end
12
+
13
+ def export_path
14
+ File.join(source_dir, '..', 'export')
15
+ end
16
+
17
+ def output_path
18
+ File.join(export_path, 'book.xhtml')
19
+ end
20
+
21
+ def theme_path
22
+ File.join(export_path, 'book.css')
23
+ end
24
+
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,35 @@
1
+ module Author
2
+ module Exporters
3
+ class PDF < Base
4
+ # 1. check that prince is installed
5
+ # 2. check that xhtml file exists
6
+ # 3. check that css file exists
7
+ # 4. run prince command
8
+
9
+ def self.export
10
+ exporter = new
11
+ exporter.prince_installed?
12
+ exporter.xhtml_exists?
13
+ exporter.css_exists?
14
+ exporter.export
15
+ end
16
+
17
+ def xhtml_exists?
18
+ raise "No book.xhtml file found" unless File.file?(output_path)
19
+ end
20
+
21
+ def css_exists?
22
+ raise "No book.css file found" unless File.file?(theme_path)
23
+ end
24
+
25
+ def prince_installed?
26
+ raise "Prince XML is not installed. This is required to build PDFs." unless `which prince` && $?.success?
27
+ end
28
+
29
+ def export
30
+ system("prince -s #{theme_path} #{output_path} -o #{File.join(export_path, 'book.pdf')}")
31
+ end
32
+
33
+ end
34
+ end
35
+ end
@@ -4,7 +4,7 @@ require 'author/plugins/awesome_codeblock'
4
4
 
5
5
  module Author
6
6
  module Exporters
7
- class XHTML
7
+ class XHTML < Base
8
8
  # step 1: get file names from the outline.txt file
9
9
  # step 2: create a new file called all.md
10
10
  # step 3: concatenate all files and output to all.md
@@ -20,14 +20,6 @@ module Author
20
20
  exporter.kramdownify
21
21
  end
22
22
 
23
- def root_dir
24
- Dir.pwd
25
- end
26
-
27
- def source_dir
28
- File.join(root_dir, 'chapters')
29
- end
30
-
31
23
  def outline_path
32
24
  filepath = File.join(root_dir, 'outline.txt')
33
25
  raise "No outline.txt file found. Make sure you are in an author project." unless File.file?(filepath)
@@ -46,10 +38,6 @@ module Author
46
38
  File.join(source_dir, 'all.md')
47
39
  end
48
40
 
49
- def output_path
50
- File.join(source_dir, '..', 'export', 'book.xhtml')
51
- end
52
-
53
41
  def layout_path
54
42
  File.join(source_dir, '..', 'templates', 'layout.xhtml')
55
43
  end
@@ -581,14 +581,18 @@ figure.code figcaption {
581
581
 
582
582
 
583
583
  /*****************************************
584
- Coderay Github Theme
584
+ Book Styles
585
585
  *****************************************/
586
586
 
587
+ @page {
588
+ width: 8.5in;
589
+ height: 11in;
590
+ margin: 0.25in;
591
+ }
592
+
587
593
  body {
588
594
  padding: 50px;
589
595
  font-weight: 100;
590
- width: 1100px;
591
- height: 600px;
592
596
  }
593
597
 
594
598
  p {
@@ -599,4 +603,9 @@ h2 {
599
603
  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
600
604
  font-weight: 100;
601
605
  font-size: 42px;
606
+ page-break-before: always;
607
+ }
608
+
609
+ figure.code {
610
+ page-break-inside: avoid;
602
611
  }
@@ -1,3 +1,3 @@
1
1
  module Author
2
- VERSION = "1.1.2.alpha"
2
+ VERSION = "1.1.3.alpha"
3
3
  end
@@ -4,10 +4,14 @@ require 'author/commands/builder'
4
4
  describe Author::Commands::Builder do
5
5
 
6
6
  let(:builder) { Author::Commands::Builder }
7
+ let(:output) { capture { builder.start } }
7
8
 
8
9
  it "should respond to xhtml" do
9
- output = capture { builder.start }
10
10
  expect(output).to_include "xhtml"
11
11
  end
12
12
 
13
+ it "should respond to pdf" do
14
+ expect(output).to_include "pdf"
15
+ end
16
+
13
17
  end
@@ -0,0 +1,41 @@
1
+ require_relative '../helper'
2
+ require 'author/exporters/base'
3
+ require 'author/exporters/pdf'
4
+
5
+ describe Author::Exporters::PDF do
6
+
7
+ let(:exporter) { Author::Exporters::PDF }
8
+
9
+ it "should respond to #export" do
10
+ expect(exporter).to_respond_to :export
11
+ end
12
+
13
+ it "should raise error if no book.xhtml file exists" do
14
+ expect { exporter.export }.to_raise RuntimeError
15
+ end
16
+
17
+ it "should raise error if no book.css file exists" do
18
+ expect { exporter.export }.to_raise RuntimeError
19
+ end
20
+
21
+ context "an instance" do
22
+ let(:exporter) { Author::Exporters::PDF.new }
23
+
24
+ it "should respond to #prince_installed?" do
25
+ expect(exporter).to_respond_to :prince_installed?
26
+ end
27
+
28
+ it "should respond to #xhtml_exists?" do
29
+ expect(exporter).to_respond_to :xhtml_exists?
30
+ end
31
+
32
+ it "should respond to #css_exists?" do
33
+ expect(exporter).to_respond_to :css_exists?
34
+ end
35
+
36
+ it "should respond to #export" do
37
+ expect(exporter).to_respond_to :export
38
+ end
39
+ end
40
+
41
+ end
@@ -1,4 +1,5 @@
1
1
  require_relative '../helper'
2
+ require 'author/exporters/base'
2
3
  require 'author/exporters/xhtml'
3
4
 
4
5
  describe Author::Exporters::XHTML do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: author
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.2.alpha
4
+ version: 1.1.3.alpha
5
5
  platform: ruby
6
6
  authors:
7
7
  - Terry Schmidt
@@ -144,6 +144,8 @@ files:
144
144
  - lib/author/commands/cli.rb
145
145
  - lib/author/commands/generator.rb
146
146
  - lib/author/commands/version.rb
147
+ - lib/author/exporters/base.rb
148
+ - lib/author/exporters/pdf.rb
147
149
  - lib/author/exporters/xhtml.rb
148
150
  - lib/author/plugins/awesome_codeblock.rb
149
151
  - lib/author/templates/Gemfile
@@ -157,6 +159,7 @@ files:
157
159
  - test/commands/cli_test.rb
158
160
  - test/commands/generator_test.rb
159
161
  - test/commands/version_test.rb
162
+ - test/exporters/pdf_test.rb
160
163
  - test/exporters/xhtml_test.rb
161
164
  - test/helper.rb
162
165
  - test/liquids/highlight_lines.md
@@ -207,6 +210,7 @@ test_files:
207
210
  - test/commands/cli_test.rb
208
211
  - test/commands/generator_test.rb
209
212
  - test/commands/version_test.rb
213
+ - test/exporters/pdf_test.rb
210
214
  - test/exporters/xhtml_test.rb
211
215
  - test/helper.rb
212
216
  - test/liquids/highlight_lines.md