riven 1.0.5 → 1.1.2
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/.gitignore +0 -1
- data/Gemfile.lock +1 -1
- data/README.md +73 -21
- data/doc/chapters/1-what-is-riven/index.md +15 -0
- data/doc/chapters/2-setup/index.md +0 -0
- data/doc/chapters/3-basics/index.md +0 -0
- data/doc/chapters/4-advanced-usage/index.md +0 -0
- data/doc/cover.md +39 -0
- data/doc/img/cover.png +0 -0
- data/doc/index.md +4 -0
- data/doc/riven.pdf +0 -0
- data/lib/riven/markup_file.rb +51 -3
- data/lib/riven/version.rb +1 -1
- metadata +10 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 831577b3a79f946e421a4710dfe66a73dd6b2afd
|
4
|
+
data.tar.gz: b4f642c8fc4bc5b83927798ef4603bb95e26108e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b49782dbf7139d91c61e55996bf75eaa02df06c196ef22096606852d93f73f505774ecbddf05d66a91397f5a360ce278c2c5dd201fd3ee1001ffb0bc44a7a8a4
|
7
|
+
data.tar.gz: 6becb3aa12e1f2e1fd90d297a0f8536081cfeea329ee6d89668068cf25e476e5080ffdc10f358e46638075d7491849223d790f63fb3e5b3f531dd56d0ece1f13
|
data/.gitignore
CHANGED
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -1,38 +1,46 @@
|
|
1
1
|
# Riven
|
2
2
|
|
3
|
-
|
3
|
+
Riven converts Markdown files to PDFs! Write documentations, books, reports and documents with your editor.
|
4
|
+
Publish them as PDF! It's that simple and even more powerful.
|
4
5
|
|
5
|
-
|
6
|
+
|
7
|
+
Feature highlights:
|
8
|
+
|
9
|
+
- Riven Extended Markdown (it's GitHub Flavored Markdown but with more features!)
|
10
|
+
- Includes: Structure you work!
|
11
|
+
- Generates well readable, optimized, beautiful looking PDFs
|
12
|
+
- Style your PDF via CSS
|
13
|
+
- Define a special and nice looking cover page
|
14
|
+
- Auto generated table of contents
|
6
15
|
- Syntax Highlighting with GitHub like theme
|
7
|
-
-
|
8
|
-
- Smart directory based file merging
|
9
|
-
- Smart output file naming
|
10
|
-
- Page numbers (see *Prerequisites* section)
|
11
|
-
- Custom CSS
|
12
|
-
- Covers (see *Prerequisites* section)
|
13
|
-
- Table of Contents (see *Prerequisites* section)
|
16
|
+
- Page numbers
|
17
|
+
- Smart directory based file merging and output file naming
|
14
18
|
|
15
19
|
|
16
20
|
## Prerequisites
|
17
21
|
|
18
|
-
You need `wkhtmltopdf` in order to generate PDFs, since that's the PDF generator backend for riven. You should use the
|
22
|
+
You need `wkhtmltopdf` in order to generate PDFs, since that's the PDF generator backend for riven. You should use the
|
23
|
+
QT patched version of `wkhtmltopdf` to get all the features of riven. You may also use the version without patched qt,
|
24
|
+
but that will disable the following features of riven: Page numbers, table of contents, covers.
|
19
25
|
|
20
26
|
- If you got Arch Linux, you can just install the packages `wkhtmltopdf-static`and `icu48` from the AUR.
|
21
27
|
|
22
|
-
- If you got another Linux Distribution (like Ubuntu) or OSX you have compile `wkhtmltopdf` from the sources. See http://natepinchot.com/2014/01/31/building-static-wkhtmltopdf/. This may take some time: On my i7, 16GB RAM, SSD
|
28
|
+
- If you got another Linux Distribution (like Ubuntu) or OSX you have compile `wkhtmltopdf` from the sources. See http://natepinchot.com/2014/01/31/building-static-wkhtmltopdf/. This may take some time: On my i7, 16GB RAM, SSD
|
29
|
+
Notebook it took about 20 minutes.
|
23
30
|
|
24
31
|
- Otherwise, you should download `wkhtmltopdf` from the [official website](http://wkhtmltopdf.org/downloads.html).
|
25
32
|
|
26
33
|
After that, make sure you can execute the `wkhtmltopdf` command in your shell:
|
27
34
|
|
28
35
|
```bash
|
29
|
-
$ wkhtmltopdf -
|
36
|
+
$ wkhtmltopdf -V
|
30
37
|
```
|
31
38
|
|
32
|
-
If it works, everything is nice and you may proceed with the next step. If not, please make sure, `wkhtmltopdf` is
|
39
|
+
If it works, everything is nice and you may proceed with the next step. If not, please make sure, `wkhtmltopdf` is
|
40
|
+
correctly installed and the executable is within your `PATH`.
|
33
41
|
|
34
42
|
|
35
|
-
##
|
43
|
+
## Getting started right now
|
36
44
|
|
37
45
|
Simple as usual:
|
38
46
|
|
@@ -41,19 +49,33 @@ $ gem install riven
|
|
41
49
|
```
|
42
50
|
|
43
51
|
|
44
|
-
##
|
45
|
-
|
46
|
-
Riven is designed to create documents out of a bunch of markdown files. So it may take a single markdown file or a directory with some markdown files inside. Consider that the files are merged in alphabetical order if you provide a folder. Just take a look at the following examples.
|
47
|
-
|
52
|
+
## How to use it?
|
48
53
|
|
49
|
-
|
54
|
+
Riven is designed to create documents out of a bunch of markdown files. So it may take a single markdown file or a
|
55
|
+
directory with some markdown files inside.
|
50
56
|
|
51
|
-
This will take your `example.md` and generate a `example.pdf` in the
|
57
|
+
However the basic usage is very simple. This example will take your `example.md` and generate a `example.pdf` in the
|
58
|
+
same directory:
|
52
59
|
|
53
60
|
```bash
|
54
61
|
$ riven example.md
|
55
62
|
```
|
56
63
|
|
64
|
+
Couldn't be easier!
|
65
|
+
|
66
|
+
|
67
|
+
## Looking for an example?
|
68
|
+
|
69
|
+
You'll find a considerable example of a markdown based documentation in the doc directory of riven itself. And **here**
|
70
|
+
you finde the resulting PDF with the documentation of riven.
|
71
|
+
|
72
|
+
|
73
|
+
|
74
|
+
|
75
|
+
### Single file to PDF
|
76
|
+
|
77
|
+
|
78
|
+
|
57
79
|
|
58
80
|
### Multiple files
|
59
81
|
|
@@ -66,7 +88,9 @@ $ riven -o awesome.pdf example-1.md example-2.pdf
|
|
66
88
|
|
67
89
|
### A directory
|
68
90
|
|
69
|
-
This will take your `documentation` directory with all it's files and generate a `documentation.pdf` (the name is
|
91
|
+
This will take your `documentation` directory with all it's files and generate a `documentation.pdf` (the name is
|
92
|
+
guessed from the directory name, but you may also specify a output file name via the `-o` param) in the same
|
93
|
+
directory:
|
70
94
|
|
71
95
|
```bash
|
72
96
|
$ ls
|
@@ -87,6 +111,34 @@ documentation/
|
|
87
111
|
```
|
88
112
|
|
89
113
|
|
114
|
+
### Structure via includes
|
115
|
+
|
116
|
+
You may also structure your document via includes. Just define a main file and you may define as many include directives
|
117
|
+
within that file and any other files (even in subdirectories) as you want.
|
118
|
+
|
119
|
+
**index.md**
|
120
|
+
|
121
|
+
```md
|
122
|
+
## Just a example
|
123
|
+
|
124
|
+
This is a include:
|
125
|
+
|
126
|
+
<<[ another_file.md ]
|
127
|
+
```
|
128
|
+
|
129
|
+
**another_file.md**
|
130
|
+
|
131
|
+
```md
|
132
|
+
More **content** in this file.
|
133
|
+
```
|
134
|
+
|
135
|
+
Generate the PDF via:
|
136
|
+
|
137
|
+
```bash
|
138
|
+
$ riven -o awesome.pdf index.md
|
139
|
+
```
|
140
|
+
|
141
|
+
|
90
142
|
## Additional Features
|
91
143
|
|
92
144
|
### Custom CSS
|
@@ -0,0 +1,15 @@
|
|
1
|
+
## 1. What is Riven?
|
2
|
+
|
3
|
+
In one sentence: Riven is a command line tool, which converts a bunch of markdown files into a PDF file.
|
4
|
+
|
5
|
+
**The question is: Why would you do that?**
|
6
|
+
|
7
|
+
There are several scenarios where the usage off a tool like riven would make a lot of sense for you. Let's take a look
|
8
|
+
at some of them:
|
9
|
+
|
10
|
+
<<[ 1-scenario-a.md ]
|
11
|
+
<<[ 2-scenario-b.md ]
|
12
|
+
|
13
|
+
<<[ 3-what-is-riven-not.md ]
|
14
|
+
<<[ 4-why-was-riven-created.md ]
|
15
|
+
<<[ 5-how-can-i-support-riven.md ]
|
File without changes
|
File without changes
|
File without changes
|
data/doc/cover.md
ADDED
@@ -0,0 +1,39 @@
|
|
1
|
+
<br />
|
2
|
+
<br />
|
3
|
+
<br />
|
4
|
+
<br />
|
5
|
+
<br />
|
6
|
+
<br />
|
7
|
+
|
8
|
+

|
9
|
+
|
10
|
+
<br />
|
11
|
+
<br />
|
12
|
+
<br />
|
13
|
+
<br />
|
14
|
+
<br />
|
15
|
+
<br />
|
16
|
+
<br />
|
17
|
+
<br />
|
18
|
+
|
19
|
+
# Official Riven Manual
|
20
|
+
## Write Markdown. Get a nice PDF. Have fun.
|
21
|
+
|
22
|
+
|
23
|
+
<br />
|
24
|
+
<br />
|
25
|
+
<br />
|
26
|
+
<br />
|
27
|
+
<br />
|
28
|
+
<br />
|
29
|
+
<br />
|
30
|
+
<br />
|
31
|
+
<br />
|
32
|
+
<br />
|
33
|
+
<br />
|
34
|
+
<br />
|
35
|
+
|
36
|
+
|
37
|
+
-----
|
38
|
+
|
39
|
+
powered by Benjamin Kammerl | visit *[github.com/phortx/riven](https://github.com/phortx/riven)* | MIT license
|
data/doc/img/cover.png
ADDED
Binary file
|
data/doc/index.md
ADDED
data/doc/riven.pdf
ADDED
Binary file
|
data/lib/riven/markup_file.rb
CHANGED
@@ -1,10 +1,12 @@
|
|
1
|
+
require 'pathname'
|
2
|
+
|
1
3
|
module Riven
|
2
4
|
#
|
3
5
|
# Represents a MD File
|
4
6
|
#
|
5
7
|
|
6
8
|
class MarkupFile
|
7
|
-
|
9
|
+
attr_reader :path, :dirname, :markup
|
8
10
|
|
9
11
|
|
10
12
|
#
|
@@ -14,6 +16,7 @@ module Riven
|
|
14
16
|
|
15
17
|
public def initialize(path)
|
16
18
|
@path = File.expand_path(path)
|
19
|
+
@dirname = Pathname.new(path).dirname
|
17
20
|
|
18
21
|
unless File.exists?(@path)
|
19
22
|
raise "File '#{path}' doesn't exist"
|
@@ -22,6 +25,49 @@ module Riven
|
|
22
25
|
if File.directory?(@path)
|
23
26
|
raise "Mixing files and directories is not allowed, sorry"
|
24
27
|
end
|
28
|
+
|
29
|
+
puts "Loading file: " + path
|
30
|
+
@markup = "\n" + File.read(@path)
|
31
|
+
rewrite_paths
|
32
|
+
resolve_includes
|
33
|
+
end
|
34
|
+
|
35
|
+
|
36
|
+
#
|
37
|
+
# Recursive replace all includes with their respective file content
|
38
|
+
#
|
39
|
+
|
40
|
+
public def resolve_includes
|
41
|
+
loop do
|
42
|
+
non_found = true
|
43
|
+
|
44
|
+
@markup.gsub!(/<<\[\s*([^\]\s]+)\s*\]/) do |inc|
|
45
|
+
non_found = false
|
46
|
+
MarkupFile.new(@dirname.to_s + '/' + $1).markup
|
47
|
+
end
|
48
|
+
|
49
|
+
break if non_found
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
|
54
|
+
#
|
55
|
+
# Prefixes all paths with the file basedir in order to make everything working across includes over different
|
56
|
+
# directories
|
57
|
+
#
|
58
|
+
|
59
|
+
public def rewrite_paths
|
60
|
+
@markup.gsub!(/\[([^\]]+)\]\(([^\)]+)\)/) do |ref|
|
61
|
+
label = $1
|
62
|
+
ref = $2
|
63
|
+
|
64
|
+
if $2 =~ /^http(s)?/
|
65
|
+
"[#{label}](#{ref})"
|
66
|
+
else
|
67
|
+
puts " - Rewriting ref '#{ref}' to '#{@dirname}/#{ref}'"
|
68
|
+
"[#{label}](#{@dirname}/#{ref})"
|
69
|
+
end
|
70
|
+
end
|
25
71
|
end
|
26
72
|
|
27
73
|
|
@@ -33,7 +79,9 @@ module Riven
|
|
33
79
|
except = [except] unless except.respond_to?(:each)
|
34
80
|
|
35
81
|
markup_files.each do |file|
|
36
|
-
|
82
|
+
unless exclude?(except, file)
|
83
|
+
markup << "\n" + file.markup
|
84
|
+
end
|
37
85
|
end
|
38
86
|
|
39
87
|
return markup
|
@@ -50,4 +98,4 @@ module Riven
|
|
50
98
|
end
|
51
99
|
end
|
52
100
|
end
|
53
|
-
end
|
101
|
+
end
|
data/lib/riven/version.rb
CHANGED
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: 1.
|
4
|
+
version: 1.1.2
|
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-
|
11
|
+
date: 2015-10-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -81,6 +81,14 @@ files:
|
|
81
81
|
- README.md
|
82
82
|
- bin/riven
|
83
83
|
- css/style.css
|
84
|
+
- doc/chapters/1-what-is-riven/index.md
|
85
|
+
- doc/chapters/2-setup/index.md
|
86
|
+
- doc/chapters/3-basics/index.md
|
87
|
+
- doc/chapters/4-advanced-usage/index.md
|
88
|
+
- doc/cover.md
|
89
|
+
- doc/img/cover.png
|
90
|
+
- doc/index.md
|
91
|
+
- doc/riven.pdf
|
84
92
|
- lib/riven.rb
|
85
93
|
- lib/riven/html_file.rb
|
86
94
|
- lib/riven/html_generator.rb
|