riven 0.0.1 → 0.1.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/Gemfile.lock +4 -0
- data/README.md +11 -9
- data/bin/riven +35 -10
- data/css/style.css +31 -14
- data/lib/riven/html_file.rb +1 -1
- data/lib/riven/html_generator.rb +5 -3
- data/lib/riven/markup_file.rb +15 -2
- data/lib/riven/opt_parser.rb +19 -5
- data/lib/riven/version.rb +2 -2
- data/lib/riven/wkhtmltopdf.rb +26 -5
- data/riven.gemspec +1 -1
- data/toc.xsl +72 -0
- metadata +5 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 249713d59e43598175a09dbf188fdc4afaf4023c
|
4
|
+
data.tar.gz: 9843a8a2a382623f06c416d6e074d9c8cf9efea4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ebe32bc24a34766e3eda31553d1205adc2c2457976d1eb9f32d1113fde593fe842ecc1022d3fa8b0d4b328aa910a81dfc1f11662b78cdc3c97ebea6d21e59019
|
7
|
+
data.tar.gz: 52592999799d5e60e0ea8ead3c192187a0d3bc1f5dd3ddb8bf77ca3d22da600860509bbb35587cc2c53b8d69304f64ae6f8e70b88414583379090ea872593b57
|
data/Gemfile.lock
CHANGED
@@ -3,12 +3,16 @@ PATH
|
|
3
3
|
specs:
|
4
4
|
riven (0.0.1)
|
5
5
|
coderay (~> 1.1.0)
|
6
|
+
github-markup (~> 1.2.0)
|
6
7
|
redcarpet (~> 3.2.2)
|
7
8
|
|
8
9
|
GEM
|
9
10
|
remote: https://rubygems.org/
|
10
11
|
specs:
|
11
12
|
coderay (1.1.0)
|
13
|
+
github-markup (1.2.1)
|
14
|
+
posix-spawn (~> 0.3.8)
|
15
|
+
posix-spawn (0.3.9)
|
12
16
|
rake (10.4.2)
|
13
17
|
redcarpet (3.2.2)
|
14
18
|
|
data/README.md
CHANGED
@@ -6,21 +6,23 @@ Converts GitHub Flavored Markdown files to PDFs! Feature highlights:
|
|
6
6
|
- Syntax Highlighting with GitHub like theme
|
7
7
|
- Smart page breaks
|
8
8
|
- Smart directory based file merging
|
9
|
-
- Page numbers (
|
9
|
+
- Page numbers (see *Prerequisites* section)
|
10
10
|
- ~~Custom CSS~~ (not finised yet, sorry)
|
11
|
-
-
|
12
|
-
-
|
11
|
+
- Covers (see *Prerequisites* section)
|
12
|
+
- Table of Contents (see *Prerequisites* section)
|
13
13
|
|
14
14
|
The gem is still under development, but it already works. In the current version the output PDF file name will always be `test.pdf`. This will change soon.
|
15
15
|
|
16
16
|
|
17
17
|
## Prerequisites
|
18
18
|
|
19
|
-
You need `wkhtmltopdf` in order to generate PDFs, since that's the PDF generator backend for riven:
|
19
|
+
You need `wkhtmltopdf` in order to generate PDFs, since that's the PDF generator backend for riven. You should use the QT patched version of `wkhtmltopdf`. You may also use the version without patched qt, but that will disable the following features of riven: Page numbers, table of contents, covers.
|
20
20
|
|
21
|
-
- If you got
|
21
|
+
- If you got Arch Linux, you can just install the packages `wkhtmltopdf-static`and `icu48` from the AUR.
|
22
22
|
|
23
|
-
- If you
|
23
|
+
- If you got a Linux Distribution or OSX you may compile `wkhtmltopdf` from the sources. See http://stackoverflow.com/questions/10981960/wkhtmltopdf-patched-qt.
|
24
|
+
|
25
|
+
- Otherwise, you should download `wkhtmltopdf` from the [official website](http://wkhtmltopdf.org/downloads.html).
|
24
26
|
|
25
27
|
After that, make sure you can execute the `wkhtmltopdf` command in your shell:
|
26
28
|
|
@@ -123,8 +125,8 @@ The syntax highlightning is powered by [coderay](https://github.com/rubychan/cod
|
|
123
125
|
|
124
126
|
### Table of Contents
|
125
127
|
|
126
|
-
For an automatic generated table of contents after the cover, just add the `-t` param:
|
128
|
+
For an automatic generated table of contents after the cover, just add the `-t` param and provide a headline for the table of contents:
|
127
129
|
|
128
130
|
```bash
|
129
|
-
$ riven -t -c documentation/cover.md -o doc.pdf documentation/
|
130
|
-
```
|
131
|
+
$ riven -t "Contents" -c documentation/cover.md -o doc.pdf documentation/
|
132
|
+
```
|
data/bin/riven
CHANGED
@@ -14,26 +14,51 @@ Riven::Wkhtmltopdf.check_installation
|
|
14
14
|
|
15
15
|
## Step 2: Parse command line options
|
16
16
|
options = Riven::OptParser.options
|
17
|
-
files = Riven::OptParser.files
|
17
|
+
files = Riven::OptParser.files(options)
|
18
18
|
|
19
19
|
|
20
|
-
## Step 3:
|
21
|
-
|
22
|
-
|
20
|
+
## Step 3: Change dir if directory is given to ensure the image pathes work
|
21
|
+
unless options[:dir_given] === false
|
22
|
+
working_dir = Dir.pwd
|
23
|
+
Dir.chdir options[:dir_given]
|
24
|
+
end
|
23
25
|
|
24
26
|
|
25
|
-
## Step 4:
|
27
|
+
## Step 4: Generate HTML for cover
|
28
|
+
unless options[:cover_file] === ''
|
29
|
+
cover_markup = Riven::MarkupFile.read_cover(options[:cover_file])
|
30
|
+
end
|
31
|
+
cover_generator = Riven::HTMLGenerator.new('_riven_cover_tmp_file.html', cover_markup || '')
|
32
|
+
|
33
|
+
|
34
|
+
## Step 5: Generate HTML for main document
|
35
|
+
markup = Riven::MarkupFile.read_all(files, options[:cover_file])
|
36
|
+
generator = Riven::HTMLGenerator.new('_riven_tmp_file.html', markup)
|
37
|
+
|
38
|
+
|
39
|
+
## Step 6: Determine PDF file name
|
26
40
|
# TODO auto generate output file name or take it from the options
|
27
41
|
output_file = 'test.pdf'
|
28
42
|
|
29
43
|
|
30
|
-
## Step
|
31
|
-
Riven::Wkhtmltopdf.generate_pdf(generator.html_file, output_file)
|
44
|
+
## Step 7: Generate the PDF file from HTML file
|
45
|
+
output = Riven::Wkhtmltopdf.generate_pdf(generator.html_file, cover_generator.html_file, output_file, options)
|
46
|
+
puts output if options[:verbose]
|
32
47
|
|
33
48
|
|
34
|
-
## Step
|
49
|
+
## Step 8: Close the generators
|
35
50
|
generator.close!
|
51
|
+
cover_generator.close!
|
52
|
+
|
53
|
+
|
54
|
+
## Step 9: Dump the HTML code if requested
|
55
|
+
puts generator.html if options[:dump_html]
|
56
|
+
puts cover_generator.html if options[:dump_cover_html]
|
36
57
|
|
37
58
|
|
38
|
-
## Step
|
39
|
-
|
59
|
+
## Step 10: If we changed the directory before, the PDF file is now located in the wrong directory,
|
60
|
+
## so wie have to move it
|
61
|
+
unless options[:dir_given] === false
|
62
|
+
require 'fileutils'
|
63
|
+
FileUtils.mv output_file, working_dir + '/' + output_file
|
64
|
+
end
|
data/css/style.css
CHANGED
@@ -40,10 +40,6 @@ hr {
|
|
40
40
|
height: 0;
|
41
41
|
}
|
42
42
|
|
43
|
-
pre {
|
44
|
-
overflow: auto;
|
45
|
-
}
|
46
|
-
|
47
43
|
code,
|
48
44
|
kbd,
|
49
45
|
pre {
|
@@ -265,6 +261,7 @@ h1 .anchor {
|
|
265
261
|
|
266
262
|
h2 {
|
267
263
|
padding-bottom: 0.3em;
|
264
|
+
margin-top: 2.5em;
|
268
265
|
line-height: 1.225;
|
269
266
|
border-bottom: 1px solid #eee;
|
270
267
|
}
|
@@ -274,6 +271,7 @@ h2 .anchor {
|
|
274
271
|
}
|
275
272
|
|
276
273
|
h3 {
|
274
|
+
margin-top: 1.7em;
|
277
275
|
line-height: 1.43;
|
278
276
|
}
|
279
277
|
|
@@ -418,7 +416,8 @@ pre>code {
|
|
418
416
|
margin: 0;
|
419
417
|
font-size: 100%;
|
420
418
|
word-break: normal;
|
421
|
-
white-space: pre;
|
419
|
+
white-space: pre-wrap;
|
420
|
+
word-wrap: break-word;
|
422
421
|
background: transparent;
|
423
422
|
border: 0;
|
424
423
|
}
|
@@ -442,10 +441,6 @@ pre {
|
|
442
441
|
word-break: normal;
|
443
442
|
}
|
444
443
|
|
445
|
-
pre {
|
446
|
-
word-wrap: normal;
|
447
|
-
}
|
448
|
-
|
449
444
|
pre code {
|
450
445
|
display: inline;
|
451
446
|
max-width: initial;
|
@@ -453,7 +448,8 @@ pre code {
|
|
453
448
|
margin: 0;
|
454
449
|
overflow: initial;
|
455
450
|
line-height: inherit;
|
456
|
-
|
451
|
+
white-space: pre-wrap;
|
452
|
+
word-wrap: break-word;
|
457
453
|
background-color: transparent;
|
458
454
|
border: 0;
|
459
455
|
}
|
@@ -636,7 +632,7 @@ kbd {
|
|
636
632
|
}
|
637
633
|
|
638
634
|
div.CodeRay { }
|
639
|
-
span.CodeRay { white-space: pre; border: 0px; padding: 2px }
|
635
|
+
span.CodeRay { white-space: pre-wrap; word-wrap: break-word; border: 0px; padding: 2px }
|
640
636
|
|
641
637
|
table.CodeRay { border-collapse: collapse; width: 100%; padding: 2px }
|
642
638
|
table.CodeRay td {
|
@@ -661,9 +657,8 @@ table.CodeRay td {
|
|
661
657
|
.CodeRay .code { width: 100% }
|
662
658
|
|
663
659
|
ol.CodeRay { font-size: 10pt }
|
664
|
-
ol.CodeRay li { white-space: pre }
|
660
|
+
ol.CodeRay li { white-space: pre-wrap; word-wrap: break-word; }
|
665
661
|
|
666
|
-
.CodeRay .code pre { overflow: auto }
|
667
662
|
.CodeRay .debug { color:white ! important; background:blue ! important; }
|
668
663
|
|
669
664
|
.CodeRay .annotation { color:#007 }
|
@@ -754,4 +749,26 @@ ol.CodeRay li { white-space: pre }
|
|
754
749
|
.CodeRay .insert .insert { color: #080; font-weight:bold }
|
755
750
|
.CodeRay .delete .delete { color: #800; font-weight:bold }
|
756
751
|
.CodeRay .change .change { color: #66f; }
|
757
|
-
.CodeRay .head .head { color: #f4f; }
|
752
|
+
.CodeRay .head .head { color: #f4f; }
|
753
|
+
|
754
|
+
|
755
|
+
|
756
|
+
|
757
|
+
.cover-page h1,
|
758
|
+
.cover-page h2,
|
759
|
+
.cover-page h3,
|
760
|
+
.cover-page img {
|
761
|
+
text-align: center;
|
762
|
+
border-bottom: none;
|
763
|
+
}
|
764
|
+
|
765
|
+
.cover-page h1 {
|
766
|
+
margin: 15px 0;
|
767
|
+
font-size: 60px;
|
768
|
+
page-break-before: avoid;
|
769
|
+
}
|
770
|
+
|
771
|
+
.cover-page h2 {
|
772
|
+
margin-top: 0.5em;
|
773
|
+
color: #666;
|
774
|
+
}
|
data/lib/riven/html_file.rb
CHANGED
data/lib/riven/html_generator.rb
CHANGED
@@ -7,8 +7,8 @@ module Riven
|
|
7
7
|
class HTMLGenerator
|
8
8
|
attr_accessor :html, :html_file
|
9
9
|
|
10
|
-
public def initialize(markup)
|
11
|
-
@html_file = Riven::HTMLFile.new(
|
10
|
+
public def initialize(tmp_file, markup)
|
11
|
+
@html_file = Riven::HTMLFile.new(tmp_file)
|
12
12
|
|
13
13
|
@markup = markup
|
14
14
|
|
@@ -35,7 +35,6 @@ module Riven
|
|
35
35
|
tables: true,
|
36
36
|
underline: true,
|
37
37
|
highlight: true,
|
38
|
-
filter_html: true,
|
39
38
|
with_toc_data: true,
|
40
39
|
lax_spacing: true,
|
41
40
|
xhtml: true,
|
@@ -47,6 +46,9 @@ module Riven
|
|
47
46
|
|
48
47
|
html = code.process(html)
|
49
48
|
|
49
|
+
html.gsub! '////[COVERSTART]////', '<div class="cover-page">'
|
50
|
+
html.gsub! '////[COVEREND]////', '</div>'
|
51
|
+
|
50
52
|
return html
|
51
53
|
end
|
52
54
|
|
data/lib/riven/markup_file.rb
CHANGED
@@ -26,15 +26,28 @@ module Riven
|
|
26
26
|
|
27
27
|
|
28
28
|
class << self
|
29
|
-
public def read_all(markup_files)
|
29
|
+
public def read_all(markup_files, except = [])
|
30
30
|
markup = ''
|
31
31
|
|
32
|
+
markup_files = [markup_files] unless markup_files.respond_to?(:each)
|
33
|
+
except = [except] unless except.respond_to?(:each)
|
34
|
+
|
32
35
|
markup_files.each do |file|
|
33
|
-
markup << "\n\n" + File.read(file.path)
|
36
|
+
markup << "\n\n" + File.read(file.path) unless exclude?(except, file)
|
34
37
|
end
|
35
38
|
|
36
39
|
return markup
|
37
40
|
end
|
41
|
+
|
42
|
+
public def read_cover(cover_file)
|
43
|
+
cover_markup = "\n////[COVERSTART]////\n"
|
44
|
+
cover_markup << Riven::MarkupFile.read_all(cover_file)
|
45
|
+
cover_markup << "\n////[COVEREND]////\n"
|
46
|
+
end
|
47
|
+
|
48
|
+
private def exclude?(except, file)
|
49
|
+
except.select { |f| f.path === file.path }.any?
|
50
|
+
end
|
38
51
|
end
|
39
52
|
end
|
40
53
|
end
|
data/lib/riven/opt_parser.rb
CHANGED
@@ -13,10 +13,11 @@ module Riven
|
|
13
13
|
# Returns an array of Riven::MarkupFile for each given markdown file
|
14
14
|
#
|
15
15
|
|
16
|
-
public def files
|
16
|
+
public def files(options)
|
17
17
|
file_names = ARGV
|
18
18
|
|
19
19
|
if file_names.size === 1 && File.directory?(file_names[0])
|
20
|
+
options[:dir_given] = file_names.first
|
20
21
|
file_names = Dir["#{file_names[0]}/*.md"].sort
|
21
22
|
end
|
22
23
|
|
@@ -34,7 +35,11 @@ module Riven
|
|
34
35
|
cover_file: '',
|
35
36
|
css_file: '',
|
36
37
|
toc: false,
|
37
|
-
|
38
|
+
toc_headline: 'Contents',
|
39
|
+
dump_html: false,
|
40
|
+
dump_cover_html: false,
|
41
|
+
verbose: false,
|
42
|
+
dir_given: false
|
38
43
|
}
|
39
44
|
|
40
45
|
opt_parser = OptionParser.new do |opts|
|
@@ -51,17 +56,26 @@ module Riven
|
|
51
56
|
end
|
52
57
|
|
53
58
|
opts.on("-c FILE", "--cover=FILE", "Path to the cover MD file") do |cover_file|
|
54
|
-
options[:cover_file] = cover_file
|
59
|
+
options[:cover_file] = Riven::MarkupFile.new(cover_file)
|
55
60
|
end
|
56
61
|
|
57
|
-
opts.on("-t", "--toc", "Enabled the table of contents auto generation") do
|
62
|
+
opts.on("-t HEADLINE", "--toc=HEADLINE", "Enabled the table of contents auto generation") do |headline|
|
58
63
|
options[:toc] = true
|
64
|
+
options[:toc_headline] = headline
|
59
65
|
end
|
60
66
|
|
61
|
-
opts.on("-d", "--dump-html", "Dumps the HTML file to STDOUT") do
|
67
|
+
opts.on("-d", "--dump-html", "Dumps the main HTML file to STDOUT") do
|
62
68
|
options[:dump_html] = true
|
63
69
|
end
|
64
70
|
|
71
|
+
opts.on("-D", "--dump-cover-html", "Dumps the cover HTML file to STDOUT") do
|
72
|
+
options[:dump_cover_html] = true
|
73
|
+
end
|
74
|
+
|
75
|
+
opts.on('-v', '--verbose', 'Print the output of wkhtmltopdf to STDOUT. Don\'t combine with -d') do
|
76
|
+
options[:verbose] = true
|
77
|
+
end
|
78
|
+
|
65
79
|
opts.on('-V', '--version', 'Displays the version') do
|
66
80
|
puts Riven::VERSION.to_s
|
67
81
|
exit
|
data/lib/riven/version.rb
CHANGED
@@ -1,3 +1,3 @@
|
|
1
1
|
class Riven
|
2
|
-
VERSION = '0.0
|
3
|
-
end
|
2
|
+
VERSION = '0.1.0'
|
3
|
+
end
|
data/lib/riven/wkhtmltopdf.rb
CHANGED
@@ -10,17 +10,38 @@ module Riven
|
|
10
10
|
end
|
11
11
|
end
|
12
12
|
|
13
|
-
public def generate_pdf(html_file, output_file)
|
13
|
+
public def generate_pdf(html_file, cover_html_file, output_file, options)
|
14
14
|
params = [
|
15
|
-
'--disable-smart-shrinking',
|
16
15
|
'--page-size A4',
|
17
16
|
'--margin-bottom 10mm',
|
18
17
|
'--margin-top 10mm',
|
19
|
-
'--margin-left
|
20
|
-
'--margin-right
|
18
|
+
'--margin-left 20mm',
|
19
|
+
'--margin-right 20mm',
|
20
|
+
'--footer-left "[section]"',
|
21
|
+
'--footer-right "[page] / [toPage]"',
|
22
|
+
'--footer-font-size 7',
|
23
|
+
'--footer-spacing 4'
|
21
24
|
]
|
22
25
|
|
23
|
-
|
26
|
+
unless options[:cover_file] === ''
|
27
|
+
params << "cover \"#{cover_html_file.file_name}\""
|
28
|
+
end
|
29
|
+
|
30
|
+
if options[:toc]
|
31
|
+
xsl = File.read(File.expand_path(File.dirname(__FILE__)) + '/../../toc.xsl')
|
32
|
+
xsl.gsub! '[[toc_headline]]', options[:toc_headline]
|
33
|
+
xsl_file_name = '_tmp_toc.xsl'
|
34
|
+
File.open(xsl_file_name, 'w') { |file| file.write(xsl) }
|
35
|
+
|
36
|
+
params << 'toc'
|
37
|
+
params << "--xsl-style-sheet \"#{xsl_file_name}\""
|
38
|
+
end
|
39
|
+
|
40
|
+
output = `wkhtmltopdf #{params.join(' ')} "#{html_file.file_name}" "#{output_file}" 2>&1`
|
41
|
+
|
42
|
+
File.delete xsl_file_name
|
43
|
+
|
44
|
+
return output
|
24
45
|
end
|
25
46
|
end
|
26
47
|
end
|
data/riven.gemspec
CHANGED
data/toc.xsl
ADDED
@@ -0,0 +1,72 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<xsl:stylesheet version="2.0"
|
3
|
+
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
4
|
+
xmlns:outline="http://wkhtmltopdf.org/outline"
|
5
|
+
xmlns="http://www.w3.org/1999/xhtml">
|
6
|
+
<xsl:output doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN"
|
7
|
+
doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
|
8
|
+
indent="yes" />
|
9
|
+
<xsl:template match="outline:outline">
|
10
|
+
<html>
|
11
|
+
<head>
|
12
|
+
<title>[[toc_headline]]</title>
|
13
|
+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
14
|
+
<style>
|
15
|
+
body {
|
16
|
+
color: #333;
|
17
|
+
font-family: "Helvetica Neue", Helvetica, "Segoe UI", Arial, freesans, sans-serif;
|
18
|
+
font-size: 14px;
|
19
|
+
line-height: 1.6;
|
20
|
+
}
|
21
|
+
a {
|
22
|
+
background: transparent;
|
23
|
+
}
|
24
|
+
|
25
|
+
a:active,
|
26
|
+
a:hover {
|
27
|
+
outline: 0;
|
28
|
+
}
|
29
|
+
h1 {
|
30
|
+
margin-top: 15px;
|
31
|
+
margin-bottom: 15px;
|
32
|
+
line-height: 1.2;
|
33
|
+
font-size: 24px;
|
34
|
+
page-break-inside: avoid;
|
35
|
+
border-bottom: 1px solid #eee;
|
36
|
+
}
|
37
|
+
div {border-bottom: 1px dashed #eee; margin: 0 0 5px 0;}
|
38
|
+
span {float: right;}
|
39
|
+
li {list-style: none; padding: 0; margin: 0;}
|
40
|
+
ul {padding: 0; margin: 0; font-size: 14px;}
|
41
|
+
ul ul {font-size: 85%; padding-left: 1em;}
|
42
|
+
</style>
|
43
|
+
</head>
|
44
|
+
<body>
|
45
|
+
<h1>[[toc_headline]]</h1>
|
46
|
+
<ul><xsl:apply-templates select="outline:item/outline:item"/></ul>
|
47
|
+
</body>
|
48
|
+
</html>
|
49
|
+
</xsl:template>
|
50
|
+
<xsl:template match="outline:item">
|
51
|
+
<li>
|
52
|
+
<xsl:if test="@title!=''">
|
53
|
+
<div>
|
54
|
+
<a>
|
55
|
+
<xsl:if test="@link">
|
56
|
+
<xsl:attribute name="href"><xsl:value-of select="@link"/></xsl:attribute>
|
57
|
+
</xsl:if>
|
58
|
+
<xsl:if test="@backLink">
|
59
|
+
<xsl:attribute name="name"><xsl:value-of select="@backLink"/></xsl:attribute>
|
60
|
+
</xsl:if>
|
61
|
+
<xsl:value-of select="@title" />
|
62
|
+
</a>
|
63
|
+
<span> <xsl:value-of select="@page" /> </span>
|
64
|
+
</div>
|
65
|
+
</xsl:if>
|
66
|
+
<ul>
|
67
|
+
<xsl:comment>added to prevent self-closing tags in QtXmlPatterns</xsl:comment>
|
68
|
+
<xsl:apply-templates select="outline:item"/>
|
69
|
+
</ul>
|
70
|
+
</li>
|
71
|
+
</xsl:template>
|
72
|
+
</xsl:stylesheet>
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: riven
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Benjamin Kammerl
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-02-
|
11
|
+
date: 2015-02-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -91,6 +91,7 @@ files:
|
|
91
91
|
- lib/riven/version.rb
|
92
92
|
- lib/riven/wkhtmltopdf.rb
|
93
93
|
- riven.gemspec
|
94
|
+
- toc.xsl
|
94
95
|
homepage: https://github.com/phortx/riven
|
95
96
|
licenses:
|
96
97
|
- MIT
|
@@ -111,8 +112,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
111
112
|
version: '0'
|
112
113
|
requirements: []
|
113
114
|
rubyforge_project:
|
114
|
-
rubygems_version: 2.
|
115
|
+
rubygems_version: 2.2.2
|
115
116
|
signing_key:
|
116
117
|
specification_version: 4
|
117
118
|
summary: Converts Markdown to PDF
|
118
119
|
test_files: []
|
120
|
+
has_rdoc:
|