riven 0.0.1
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 +7 -0
- data/.gitignore +34 -0
- data/Gemfile +3 -0
- data/Gemfile.lock +21 -0
- data/LICENSE +20 -0
- data/README.md +130 -0
- data/bin/riven +39 -0
- data/css/style.css +757 -0
- data/lib/riven.rb +3 -0
- data/lib/riven/html_file.rb +17 -0
- data/lib/riven/html_generator.rb +57 -0
- data/lib/riven/markup/code.rb +44 -0
- data/lib/riven/markup/code_block.rb +27 -0
- data/lib/riven/markup_file.rb +40 -0
- data/lib/riven/opt_parser.rb +77 -0
- data/lib/riven/version.rb +3 -0
- data/lib/riven/wkhtmltopdf.rb +27 -0
- data/riven.gemspec +32 -0
- metadata +118 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: f1d15b3e000390101dcda3dca562e42a14713cfa
|
4
|
+
data.tar.gz: 2fcd70e0c9116075b2b65ea8046ceef03b08eeb5
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 45b1316495eff7da3960c231223e82ec12cec36c20638560a4a5945dffb57052ed537972adf74cf1bca10bec774d55c1fe9df51f78d5a3d7bf0026ae45a929c7
|
7
|
+
data.tar.gz: 163bcb01c7d628845ebcf775784bd5c700be3fff255879cb59720b31239b3aa16406816b9adfd09684cc511385ec0e7c4a347ed371549325955946e820626fac
|
data/.gitignore
ADDED
@@ -0,0 +1,34 @@
|
|
1
|
+
*.gem
|
2
|
+
*.rbc
|
3
|
+
/.config
|
4
|
+
/coverage/
|
5
|
+
/InstalledFiles
|
6
|
+
/pkg/
|
7
|
+
/spec/reports/
|
8
|
+
/test/tmp/
|
9
|
+
/test/version_tmp/
|
10
|
+
/tmp/
|
11
|
+
|
12
|
+
## Specific to RubyMotion:
|
13
|
+
.dat*
|
14
|
+
.repl_history
|
15
|
+
build/
|
16
|
+
|
17
|
+
## Documentation cache and generated files:
|
18
|
+
/.yardoc/
|
19
|
+
/_yardoc/
|
20
|
+
/doc/
|
21
|
+
/rdoc/
|
22
|
+
|
23
|
+
## Environment normalisation:
|
24
|
+
/.bundle/
|
25
|
+
/lib/bundler/man/
|
26
|
+
|
27
|
+
# for a library or gem, you might want to ignore these files since the code is
|
28
|
+
# intended to run in multiple environments; otherwise, check them in:
|
29
|
+
# Gemfile.lock
|
30
|
+
# .ruby-version
|
31
|
+
# .ruby-gemset
|
32
|
+
|
33
|
+
# unless supporting rvm < 1.11.0 or doing something fancy, ignore this:
|
34
|
+
.rvmrc
|
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
riven (0.0.1)
|
5
|
+
coderay (~> 1.1.0)
|
6
|
+
redcarpet (~> 3.2.2)
|
7
|
+
|
8
|
+
GEM
|
9
|
+
remote: https://rubygems.org/
|
10
|
+
specs:
|
11
|
+
coderay (1.1.0)
|
12
|
+
rake (10.4.2)
|
13
|
+
redcarpet (3.2.2)
|
14
|
+
|
15
|
+
PLATFORMS
|
16
|
+
ruby
|
17
|
+
|
18
|
+
DEPENDENCIES
|
19
|
+
bundler (~> 1.8)
|
20
|
+
rake (~> 10.4)
|
21
|
+
riven!
|
data/LICENSE
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
The MIT License (MIT)
|
2
|
+
|
3
|
+
Copyright (c) 2013 Benjamin Kammerl aka phortx
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
6
|
+
this software and associated documentation files (the "Software"), to deal in
|
7
|
+
the Software without restriction, including without limitation the rights to
|
8
|
+
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
9
|
+
the Software, and to permit persons to whom the Software is furnished to do so,
|
10
|
+
subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
13
|
+
copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
17
|
+
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
18
|
+
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
19
|
+
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
20
|
+
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,130 @@
|
|
1
|
+
# Riven
|
2
|
+
|
3
|
+
Converts GitHub Flavored Markdown files to PDFs! Feature highlights:
|
4
|
+
|
5
|
+
- Highly readable PDFs with GitHub like theme
|
6
|
+
- Syntax Highlighting with GitHub like theme
|
7
|
+
- Smart page breaks
|
8
|
+
- Smart directory based file merging
|
9
|
+
- Page numbers (not finised yet, sorry)
|
10
|
+
- ~~Custom CSS~~ (not finised yet, sorry)
|
11
|
+
- ~~Covers~~ (not finised yet, sorry)
|
12
|
+
- ~~Table of Contents~~ (not finised yet, sorry)
|
13
|
+
|
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
|
+
|
16
|
+
|
17
|
+
## Prerequisites
|
18
|
+
|
19
|
+
You need `wkhtmltopdf` in order to generate PDFs, since that's the PDF generator backend for riven:
|
20
|
+
|
21
|
+
- If you got a Linux Distribution or OSX and your package mangement offers `wkhtmltopdf` in a newer version than `0.9.9.3`, then install it via your package manager.
|
22
|
+
|
23
|
+
- If you there's no newer version, you should use the `wkhtmltopdf-binary` gem: `gem install wkhtmltopdf-binary`
|
24
|
+
|
25
|
+
After that, make sure you can execute the `wkhtmltopdf` command in your shell:
|
26
|
+
|
27
|
+
```bash
|
28
|
+
$ wkhtmltopdf -v
|
29
|
+
```
|
30
|
+
|
31
|
+
If it works, everything is nice and you may proceed with the next step. If not, please make sure, `wkhtmltopdf` is correctly installed and the executable is within your `PATH`.
|
32
|
+
|
33
|
+
|
34
|
+
## Installation
|
35
|
+
|
36
|
+
Simple as usual:
|
37
|
+
|
38
|
+
```bash
|
39
|
+
$ gem install riven
|
40
|
+
```
|
41
|
+
|
42
|
+
|
43
|
+
## Usage
|
44
|
+
|
45
|
+
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.
|
46
|
+
|
47
|
+
|
48
|
+
### Single file to PDF
|
49
|
+
|
50
|
+
This will take your `example.md` and generate a `example.pdf` in the same directory:
|
51
|
+
|
52
|
+
```bash
|
53
|
+
$ riven example.md
|
54
|
+
```
|
55
|
+
|
56
|
+
|
57
|
+
### Multiple files
|
58
|
+
|
59
|
+
This will take your `example-1.md` and `example-2.md` and generate a `awesome.pdf` in the same directory:
|
60
|
+
|
61
|
+
```bash
|
62
|
+
$ riven -o awesome.pdf example-1.md example-2.pdf
|
63
|
+
```
|
64
|
+
|
65
|
+
|
66
|
+
### A directory
|
67
|
+
|
68
|
+
This will take your `documentation` directory with all it's files and generate a `doc.pdf` in the same directory:
|
69
|
+
|
70
|
+
```bash
|
71
|
+
$ ls
|
72
|
+
documentation/
|
73
|
+
|
74
|
+
$ ls documentation/
|
75
|
+
chapter-1-preface.md
|
76
|
+
chapter-2-general.md
|
77
|
+
chapter-3-admin-gui.md
|
78
|
+
chapter-4-commandline-interface.md
|
79
|
+
chapter-5-api.md
|
80
|
+
|
81
|
+
$ riven -o doc.pdf documentation/
|
82
|
+
|
83
|
+
$ ls
|
84
|
+
doc.pdf
|
85
|
+
documentation/
|
86
|
+
```
|
87
|
+
|
88
|
+
|
89
|
+
## Additional Features
|
90
|
+
|
91
|
+
### Custom CSS
|
92
|
+
|
93
|
+
You may give riven an additional CSS file with the `-s` param:
|
94
|
+
|
95
|
+
```bash
|
96
|
+
$ riven -s doc.css -o doc.pdf documentation/
|
97
|
+
```
|
98
|
+
|
99
|
+
|
100
|
+
### Cover
|
101
|
+
|
102
|
+
You may give riven a cover MD file via the `-c` param, which will be prepended and not provided with a page number.
|
103
|
+
|
104
|
+
```bash
|
105
|
+
$ riven -c documentation/cover.md -o doc.pdf documentation/
|
106
|
+
```
|
107
|
+
|
108
|
+
|
109
|
+
### Syntax highlighting
|
110
|
+
|
111
|
+
Syntax highlighting just works as usual:
|
112
|
+
|
113
|
+
<pre lang="no-highlight">
|
114
|
+
```ruby
|
115
|
+
def foo
|
116
|
+
puts 'bar'
|
117
|
+
end
|
118
|
+
```
|
119
|
+
</pre>
|
120
|
+
|
121
|
+
The syntax highlightning is powered by [coderay](https://github.com/rubychan/coderay) and is using a [github theme](https://github.com/pie4dan/CodeRay-GitHub-Theme).
|
122
|
+
|
123
|
+
|
124
|
+
### Table of Contents
|
125
|
+
|
126
|
+
For an automatic generated table of contents after the cover, just add the `-t` param:
|
127
|
+
|
128
|
+
```bash
|
129
|
+
$ riven -t -c documentation/cover.md -o doc.pdf documentation/
|
130
|
+
```
|
data/bin/riven
ADDED
@@ -0,0 +1,39 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
$LOAD_PATH.unshift(File.expand_path(File.dirname(__FILE__)) + '/../lib/')
|
4
|
+
|
5
|
+
require 'rubygems'
|
6
|
+
require 'riven'
|
7
|
+
require 'riven/opt_parser'
|
8
|
+
require 'riven/wkhtmltopdf'
|
9
|
+
require 'riven/html_generator'
|
10
|
+
|
11
|
+
## Step 1: Check if wkhtmltopdf is set up correctly
|
12
|
+
Riven::Wkhtmltopdf.check_installation
|
13
|
+
|
14
|
+
|
15
|
+
## Step 2: Parse command line options
|
16
|
+
options = Riven::OptParser.options
|
17
|
+
files = Riven::OptParser.files
|
18
|
+
|
19
|
+
|
20
|
+
## Step 3: Generate HTML
|
21
|
+
markup = Riven::MarkupFile.read_all(files)
|
22
|
+
generator = Riven::HTMLGenerator.new(markup)
|
23
|
+
|
24
|
+
|
25
|
+
## Step 4: Determine PDF file name
|
26
|
+
# TODO auto generate output file name or take it from the options
|
27
|
+
output_file = 'test.pdf'
|
28
|
+
|
29
|
+
|
30
|
+
## Step 5: Generate the PDF file from HTML file
|
31
|
+
Riven::Wkhtmltopdf.generate_pdf(generator.html_file, output_file)
|
32
|
+
|
33
|
+
|
34
|
+
## Step 6: Close the generator
|
35
|
+
generator.close!
|
36
|
+
|
37
|
+
|
38
|
+
## Step 7: Dump the HTML code if requested
|
39
|
+
puts generator.html if options[:dump_html]
|
data/css/style.css
ADDED
@@ -0,0 +1,757 @@
|
|
1
|
+
html {
|
2
|
+
width: 1000px;
|
3
|
+
}
|
4
|
+
|
5
|
+
body {
|
6
|
+
-ms-text-size-adjust: 100%;
|
7
|
+
-webkit-text-size-adjust: 100%;
|
8
|
+
background-color: white;
|
9
|
+
color: #333;
|
10
|
+
font-family: "Helvetica Neue", Helvetica, "Segoe UI", Arial, freesans, sans-serif;
|
11
|
+
font-size: 20px;
|
12
|
+
line-height: 1.6;
|
13
|
+
word-wrap: break-word;
|
14
|
+
}
|
15
|
+
|
16
|
+
a {
|
17
|
+
background: transparent;
|
18
|
+
}
|
19
|
+
|
20
|
+
a:active,
|
21
|
+
a:hover {
|
22
|
+
outline: 0;
|
23
|
+
}
|
24
|
+
|
25
|
+
strong {
|
26
|
+
font-weight: bold;
|
27
|
+
}
|
28
|
+
|
29
|
+
h1 {
|
30
|
+
margin: 0.67em 0;
|
31
|
+
}
|
32
|
+
|
33
|
+
img {
|
34
|
+
border: 0;
|
35
|
+
}
|
36
|
+
|
37
|
+
hr {
|
38
|
+
-moz-box-sizing: content-box;
|
39
|
+
box-sizing: content-box;
|
40
|
+
height: 0;
|
41
|
+
}
|
42
|
+
|
43
|
+
pre {
|
44
|
+
overflow: auto;
|
45
|
+
}
|
46
|
+
|
47
|
+
code,
|
48
|
+
kbd,
|
49
|
+
pre {
|
50
|
+
font-family: monospace, monospace;
|
51
|
+
font-size: 1em;
|
52
|
+
}
|
53
|
+
|
54
|
+
input {
|
55
|
+
color: inherit;
|
56
|
+
font: inherit;
|
57
|
+
margin: 0;
|
58
|
+
}
|
59
|
+
|
60
|
+
html input[disabled] {
|
61
|
+
cursor: default;
|
62
|
+
}
|
63
|
+
|
64
|
+
input {
|
65
|
+
line-height: normal;
|
66
|
+
}
|
67
|
+
|
68
|
+
input[type="checkbox"] {
|
69
|
+
-moz-box-sizing: border-box;
|
70
|
+
box-sizing: border-box;
|
71
|
+
padding: 0;
|
72
|
+
}
|
73
|
+
|
74
|
+
table {
|
75
|
+
border-collapse: collapse;
|
76
|
+
border-spacing: 0;
|
77
|
+
}
|
78
|
+
|
79
|
+
td,
|
80
|
+
th {
|
81
|
+
padding: 0;
|
82
|
+
}
|
83
|
+
|
84
|
+
* {
|
85
|
+
-moz-box-sizing: border-box;
|
86
|
+
box-sizing: border-box;
|
87
|
+
}
|
88
|
+
|
89
|
+
input {
|
90
|
+
font: 13px/1.4 Helvetica, arial, freesans, clean, sans-serif, "Segoe UI Emoji", "Segoe UI Symbol";
|
91
|
+
}
|
92
|
+
|
93
|
+
a {
|
94
|
+
color: #4183c4;
|
95
|
+
text-decoration: none;
|
96
|
+
}
|
97
|
+
|
98
|
+
a:hover,
|
99
|
+
a:active {
|
100
|
+
text-decoration: underline;
|
101
|
+
}
|
102
|
+
|
103
|
+
hr {
|
104
|
+
height: 0;
|
105
|
+
margin: 15px 0;
|
106
|
+
overflow: hidden;
|
107
|
+
background: transparent;
|
108
|
+
border: 0;
|
109
|
+
border-bottom: 1px solid #ddd;
|
110
|
+
}
|
111
|
+
|
112
|
+
hr:before {
|
113
|
+
display: table;
|
114
|
+
content: "";
|
115
|
+
}
|
116
|
+
|
117
|
+
hr:after {
|
118
|
+
display: table;
|
119
|
+
clear: both;
|
120
|
+
content: "";
|
121
|
+
}
|
122
|
+
|
123
|
+
h1,
|
124
|
+
h2,
|
125
|
+
h3,
|
126
|
+
h4,
|
127
|
+
h5,
|
128
|
+
h6 {
|
129
|
+
margin-top: 15px;
|
130
|
+
margin-bottom: 15px;
|
131
|
+
line-height: 1.1;
|
132
|
+
}
|
133
|
+
|
134
|
+
h1 {
|
135
|
+
font-size: 40px;
|
136
|
+
page-break-before: always;
|
137
|
+
page-break-inside: avoid;
|
138
|
+
}
|
139
|
+
|
140
|
+
h1:first-child {
|
141
|
+
page-break-before: avoid;
|
142
|
+
margin-top: 0;
|
143
|
+
}
|
144
|
+
|
145
|
+
h2 {
|
146
|
+
font-size: 30px;
|
147
|
+
page-break-inside: avoid;
|
148
|
+
}
|
149
|
+
|
150
|
+
h3 {
|
151
|
+
font-size: 24px;
|
152
|
+
page-break-inside: avoid;
|
153
|
+
}
|
154
|
+
|
155
|
+
h4 {
|
156
|
+
font-size: 18px;
|
157
|
+
page-break-inside: avoid;
|
158
|
+
}
|
159
|
+
|
160
|
+
h5 {
|
161
|
+
font-size: 15px;
|
162
|
+
page-break-inside: avoid;
|
163
|
+
}
|
164
|
+
|
165
|
+
h6 {
|
166
|
+
font-size: 14px;
|
167
|
+
page-break-inside: avoid;
|
168
|
+
}
|
169
|
+
|
170
|
+
blockquote {
|
171
|
+
margin: 0;
|
172
|
+
page-break-inside: avoid;
|
173
|
+
}
|
174
|
+
|
175
|
+
ul,
|
176
|
+
ol {
|
177
|
+
padding: 0;
|
178
|
+
margin-top: 0;
|
179
|
+
margin-bottom: 0;
|
180
|
+
}
|
181
|
+
|
182
|
+
ol ol,
|
183
|
+
ul ol {
|
184
|
+
list-style-type: lower-roman;
|
185
|
+
}
|
186
|
+
|
187
|
+
ul ul ol,
|
188
|
+
ul ol ol,
|
189
|
+
ol ul ol,
|
190
|
+
ol ol ol {
|
191
|
+
list-style-type: lower-alpha;
|
192
|
+
}
|
193
|
+
|
194
|
+
dd {
|
195
|
+
margin-left: 0;
|
196
|
+
}
|
197
|
+
|
198
|
+
code {
|
199
|
+
font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace;
|
200
|
+
font-size: 12px;
|
201
|
+
}
|
202
|
+
|
203
|
+
pre {
|
204
|
+
margin-top: 0;
|
205
|
+
margin-bottom: 0;
|
206
|
+
font: 12px Consolas, "Liberation Mono", Menlo, Courier, monospace;
|
207
|
+
page-break-inside: avoid;
|
208
|
+
}
|
209
|
+
|
210
|
+
.markdown-body>*:first-child {
|
211
|
+
margin-top: 0 !important;
|
212
|
+
}
|
213
|
+
|
214
|
+
.markdown-body>*:last-child {
|
215
|
+
margin-bottom: 0 !important;
|
216
|
+
}
|
217
|
+
|
218
|
+
.anchor {
|
219
|
+
position: absolute;
|
220
|
+
top: 0;
|
221
|
+
left: 0;
|
222
|
+
display: block;
|
223
|
+
padding-right: 6px;
|
224
|
+
padding-left: 30px;
|
225
|
+
margin-left: -30px;
|
226
|
+
}
|
227
|
+
|
228
|
+
.anchor:focus {
|
229
|
+
outline: none;
|
230
|
+
}
|
231
|
+
|
232
|
+
h1,
|
233
|
+
h2,
|
234
|
+
h3,
|
235
|
+
h4,
|
236
|
+
h5,
|
237
|
+
h6 {
|
238
|
+
position: relative;
|
239
|
+
margin-top: 1em;
|
240
|
+
margin-bottom: 16px;
|
241
|
+
font-weight: bold;
|
242
|
+
line-height: 1.4;
|
243
|
+
}
|
244
|
+
|
245
|
+
h1:hover .anchor,
|
246
|
+
h2:hover .anchor,
|
247
|
+
h3:hover .anchor,
|
248
|
+
h4:hover .anchor,
|
249
|
+
h5:hover .anchor,
|
250
|
+
h6:hover .anchor {
|
251
|
+
padding-left: 8px;
|
252
|
+
margin-left: -30px;
|
253
|
+
text-decoration: none;
|
254
|
+
}
|
255
|
+
|
256
|
+
h1 {
|
257
|
+
padding-bottom: 0.3em;
|
258
|
+
line-height: 1.2;
|
259
|
+
border-bottom: 1px solid #eee;
|
260
|
+
}
|
261
|
+
|
262
|
+
h1 .anchor {
|
263
|
+
line-height: 1;
|
264
|
+
}
|
265
|
+
|
266
|
+
h2 {
|
267
|
+
padding-bottom: 0.3em;
|
268
|
+
line-height: 1.225;
|
269
|
+
border-bottom: 1px solid #eee;
|
270
|
+
}
|
271
|
+
|
272
|
+
h2 .anchor {
|
273
|
+
line-height: 1;
|
274
|
+
}
|
275
|
+
|
276
|
+
h3 {
|
277
|
+
line-height: 1.43;
|
278
|
+
}
|
279
|
+
|
280
|
+
h3 .anchor {
|
281
|
+
line-height: 1.2;
|
282
|
+
}
|
283
|
+
|
284
|
+
h4 .anchor {
|
285
|
+
line-height: 1.2;
|
286
|
+
}
|
287
|
+
|
288
|
+
h5 .anchor {
|
289
|
+
line-height: 1.1;
|
290
|
+
}
|
291
|
+
|
292
|
+
h6 {
|
293
|
+
color: #777;
|
294
|
+
}
|
295
|
+
|
296
|
+
h6 .anchor {
|
297
|
+
line-height: 1.1;
|
298
|
+
}
|
299
|
+
|
300
|
+
p,
|
301
|
+
blockquote,
|
302
|
+
ul,
|
303
|
+
ol,
|
304
|
+
dl,
|
305
|
+
table,
|
306
|
+
pre {
|
307
|
+
margin-top: 0;
|
308
|
+
margin-bottom: 16px;
|
309
|
+
}
|
310
|
+
|
311
|
+
hr {
|
312
|
+
height: 4px;
|
313
|
+
padding: 0;
|
314
|
+
margin: 16px 0;
|
315
|
+
background-color: #eee;
|
316
|
+
border: 0 none;
|
317
|
+
}
|
318
|
+
|
319
|
+
ul,
|
320
|
+
ol {
|
321
|
+
padding-left: 2em;
|
322
|
+
}
|
323
|
+
|
324
|
+
ul ul,
|
325
|
+
ul ol,
|
326
|
+
ol ol,
|
327
|
+
ol ul {
|
328
|
+
margin-top: 0;
|
329
|
+
margin-bottom: 0;
|
330
|
+
}
|
331
|
+
|
332
|
+
li>p {
|
333
|
+
margin-top: 16px;
|
334
|
+
}
|
335
|
+
|
336
|
+
dl {
|
337
|
+
padding: 0;
|
338
|
+
}
|
339
|
+
|
340
|
+
dl dt {
|
341
|
+
padding: 0;
|
342
|
+
margin-top: 16px;
|
343
|
+
font-size: 1em;
|
344
|
+
font-style: italic;
|
345
|
+
font-weight: bold;
|
346
|
+
}
|
347
|
+
|
348
|
+
dl dd {
|
349
|
+
padding: 0 16px;
|
350
|
+
margin-bottom: 16px;
|
351
|
+
}
|
352
|
+
|
353
|
+
blockquote {
|
354
|
+
padding: 0 15px;
|
355
|
+
color: #777;
|
356
|
+
border-left: 4px solid #ddd;
|
357
|
+
}
|
358
|
+
|
359
|
+
blockquote>:first-child {
|
360
|
+
margin-top: 0;
|
361
|
+
}
|
362
|
+
|
363
|
+
blockquote>:last-child {
|
364
|
+
margin-bottom: 0;
|
365
|
+
}
|
366
|
+
|
367
|
+
table {
|
368
|
+
display: block;
|
369
|
+
width: 100%;
|
370
|
+
overflow: auto;
|
371
|
+
word-break: normal;
|
372
|
+
word-break: keep-all;
|
373
|
+
}
|
374
|
+
|
375
|
+
table th {
|
376
|
+
font-weight: bold;
|
377
|
+
}
|
378
|
+
|
379
|
+
table th,
|
380
|
+
table td {
|
381
|
+
padding: 6px 13px;
|
382
|
+
border: 1px solid #ddd;
|
383
|
+
}
|
384
|
+
|
385
|
+
table tr {
|
386
|
+
background-color: #fff;
|
387
|
+
border-top: 1px solid #ccc;
|
388
|
+
}
|
389
|
+
|
390
|
+
table tr:nth-child(2n) {
|
391
|
+
background-color: #f8f8f8;
|
392
|
+
}
|
393
|
+
|
394
|
+
img {
|
395
|
+
max-width: 100%;
|
396
|
+
-moz-box-sizing: border-box;
|
397
|
+
box-sizing: border-box;
|
398
|
+
}
|
399
|
+
|
400
|
+
code {
|
401
|
+
padding: 0;
|
402
|
+
padding-top: 0.2em;
|
403
|
+
padding-bottom: 0.2em;
|
404
|
+
margin: 0;
|
405
|
+
font-size: 85%;
|
406
|
+
background-color: #eee;
|
407
|
+
border-radius: 3px;
|
408
|
+
}
|
409
|
+
|
410
|
+
code:before,
|
411
|
+
code:after {
|
412
|
+
letter-spacing: -0.2em;
|
413
|
+
content: "\00a0";
|
414
|
+
}
|
415
|
+
|
416
|
+
pre>code {
|
417
|
+
padding: 0;
|
418
|
+
margin: 0;
|
419
|
+
font-size: 100%;
|
420
|
+
word-break: normal;
|
421
|
+
white-space: pre;
|
422
|
+
background: transparent;
|
423
|
+
border: 0;
|
424
|
+
}
|
425
|
+
|
426
|
+
.highlight {
|
427
|
+
margin-bottom: 16px;
|
428
|
+
}
|
429
|
+
|
430
|
+
.highlight pre,
|
431
|
+
pre {
|
432
|
+
padding: 16px;
|
433
|
+
overflow: auto;
|
434
|
+
font-size: 85%;
|
435
|
+
line-height: 1.45;
|
436
|
+
background-color: #eee;
|
437
|
+
border-radius: 3px;
|
438
|
+
}
|
439
|
+
|
440
|
+
.highlight pre {
|
441
|
+
margin-bottom: 0;
|
442
|
+
word-break: normal;
|
443
|
+
}
|
444
|
+
|
445
|
+
pre {
|
446
|
+
word-wrap: normal;
|
447
|
+
}
|
448
|
+
|
449
|
+
pre code {
|
450
|
+
display: inline;
|
451
|
+
max-width: initial;
|
452
|
+
padding: 0;
|
453
|
+
margin: 0;
|
454
|
+
overflow: initial;
|
455
|
+
line-height: inherit;
|
456
|
+
word-wrap: normal;
|
457
|
+
background-color: transparent;
|
458
|
+
border: 0;
|
459
|
+
}
|
460
|
+
|
461
|
+
pre code:before,
|
462
|
+
pre code:after {
|
463
|
+
content: normal;
|
464
|
+
}
|
465
|
+
|
466
|
+
kbd {
|
467
|
+
display: inline-block;
|
468
|
+
padding: 3px 5px;
|
469
|
+
font-size: 11px;
|
470
|
+
line-height: 10px;
|
471
|
+
color: #555;
|
472
|
+
vertical-align: middle;
|
473
|
+
background-color: #fcfcfc;
|
474
|
+
border: solid 1px #ccc;
|
475
|
+
border-bottom-color: #bbb;
|
476
|
+
border-radius: 3px;
|
477
|
+
box-shadow: inset 0 -1px 0 #bbb;
|
478
|
+
}
|
479
|
+
|
480
|
+
.pl-c {
|
481
|
+
color: #969896;
|
482
|
+
}
|
483
|
+
|
484
|
+
.pl-c1,
|
485
|
+
.pl-mdh,
|
486
|
+
.pl-mm,
|
487
|
+
.pl-mp,
|
488
|
+
.pl-mr,
|
489
|
+
.pl-s1 .pl-v,
|
490
|
+
.pl-s3,
|
491
|
+
.pl-sc,
|
492
|
+
.pl-sv {
|
493
|
+
color: #0086b3;
|
494
|
+
}
|
495
|
+
|
496
|
+
.pl-e,
|
497
|
+
.pl-en {
|
498
|
+
color: #795da3;
|
499
|
+
}
|
500
|
+
|
501
|
+
.pl-s1 .pl-s2,
|
502
|
+
.pl-smi,
|
503
|
+
.pl-smp,
|
504
|
+
.pl-stj,
|
505
|
+
.pl-vo,
|
506
|
+
.pl-vpf {
|
507
|
+
color: #333;
|
508
|
+
}
|
509
|
+
|
510
|
+
.pl-ent {
|
511
|
+
color: #63a35c;
|
512
|
+
}
|
513
|
+
|
514
|
+
.pl-k,
|
515
|
+
.pl-s,
|
516
|
+
.pl-st {
|
517
|
+
color: #a71d5d;
|
518
|
+
}
|
519
|
+
|
520
|
+
.pl-pds,
|
521
|
+
.pl-s1,
|
522
|
+
.pl-s1 .pl-pse .pl-s2,
|
523
|
+
.pl-sr,
|
524
|
+
.pl-sr .pl-cce,
|
525
|
+
.pl-sr .pl-sra,
|
526
|
+
.pl-sr .pl-sre,
|
527
|
+
.pl-src {
|
528
|
+
color: #df5000;
|
529
|
+
}
|
530
|
+
|
531
|
+
.pl-mo,
|
532
|
+
.pl-v {
|
533
|
+
color: #1d3e81;
|
534
|
+
}
|
535
|
+
|
536
|
+
.pl-id {
|
537
|
+
color: #b52a1d;
|
538
|
+
}
|
539
|
+
|
540
|
+
.pl-ii {
|
541
|
+
background-color: #b52a1d;
|
542
|
+
color: #f8f8f8;
|
543
|
+
}
|
544
|
+
|
545
|
+
.pl-sr .pl-cce {
|
546
|
+
color: #63a35c;
|
547
|
+
font-weight: bold;
|
548
|
+
}
|
549
|
+
|
550
|
+
.pl-ml {
|
551
|
+
color: #693a17;
|
552
|
+
}
|
553
|
+
|
554
|
+
.pl-mh,
|
555
|
+
.pl-mh .pl-en,
|
556
|
+
.pl-ms {
|
557
|
+
color: #1d3e81;
|
558
|
+
font-weight: bold;
|
559
|
+
}
|
560
|
+
|
561
|
+
.pl-mq {
|
562
|
+
color: #008080;
|
563
|
+
}
|
564
|
+
|
565
|
+
.pl-mi {
|
566
|
+
color: #333;
|
567
|
+
font-style: italic;
|
568
|
+
}
|
569
|
+
|
570
|
+
.pl-mb {
|
571
|
+
color: #333;
|
572
|
+
font-weight: bold;
|
573
|
+
}
|
574
|
+
|
575
|
+
.pl-md,
|
576
|
+
.pl-mdhf {
|
577
|
+
background-color: #ffecec;
|
578
|
+
color: #bd2c00;
|
579
|
+
}
|
580
|
+
|
581
|
+
.pl-mdht,
|
582
|
+
.pl-mi1 {
|
583
|
+
background-color: #eaffea;
|
584
|
+
color: #55a532;
|
585
|
+
}
|
586
|
+
|
587
|
+
.pl-mdr {
|
588
|
+
color: #795da3;
|
589
|
+
font-weight: bold;
|
590
|
+
}
|
591
|
+
|
592
|
+
kbd {
|
593
|
+
display: inline-block;
|
594
|
+
padding: 3px 5px;
|
595
|
+
font: 11px Consolas, "Liberation Mono", Menlo, Courier, monospace;
|
596
|
+
line-height: 10px;
|
597
|
+
color: #555;
|
598
|
+
vertical-align: middle;
|
599
|
+
background-color: #fcfcfc;
|
600
|
+
border: solid 1px #ccc;
|
601
|
+
border-bottom-color: #bbb;
|
602
|
+
border-radius: 3px;
|
603
|
+
box-shadow: inset 0 -1px 0 #bbb;
|
604
|
+
}
|
605
|
+
|
606
|
+
.task-list-item {
|
607
|
+
list-style-type: none;
|
608
|
+
}
|
609
|
+
|
610
|
+
.task-list-item+.task-list-item {
|
611
|
+
margin-top: 3px;
|
612
|
+
}
|
613
|
+
|
614
|
+
.task-list-item input {
|
615
|
+
float: left;
|
616
|
+
margin: 0.3em 0 0.25em -1.6em;
|
617
|
+
vertical-align: middle;
|
618
|
+
}
|
619
|
+
|
620
|
+
:checked+.radio-label {
|
621
|
+
z-index: 1;
|
622
|
+
position: relative;
|
623
|
+
border-color: #4183c4;
|
624
|
+
}
|
625
|
+
|
626
|
+
|
627
|
+
|
628
|
+
.CodeRay {
|
629
|
+
background-color: #FFF;
|
630
|
+
font-family: Monaco, "Courier New", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", monospace;
|
631
|
+
color: #000;
|
632
|
+
}
|
633
|
+
|
634
|
+
.CodeRay pre {
|
635
|
+
margin: 0px;
|
636
|
+
}
|
637
|
+
|
638
|
+
div.CodeRay { }
|
639
|
+
span.CodeRay { white-space: pre; border: 0px; padding: 2px }
|
640
|
+
|
641
|
+
table.CodeRay { border-collapse: collapse; width: 100%; padding: 2px }
|
642
|
+
table.CodeRay td {
|
643
|
+
padding: 1em 0.5em;
|
644
|
+
vertical-align: top;
|
645
|
+
}
|
646
|
+
|
647
|
+
.CodeRay .line-numbers, .CodeRay .no {
|
648
|
+
background-color: #ECECEC;
|
649
|
+
color: #AAA;
|
650
|
+
text-align: right;
|
651
|
+
}
|
652
|
+
|
653
|
+
.CodeRay .line-numbers a {
|
654
|
+
color: #AAA;
|
655
|
+
}
|
656
|
+
|
657
|
+
.CodeRay .line-numbers tt { font-weight: bold }
|
658
|
+
.CodeRay .line-numbers .highlighted { color: red }
|
659
|
+
.CodeRay .line { display: block; float: left; width: 100%; }
|
660
|
+
.CodeRay span.line-numbers { padding: 0px 4px }
|
661
|
+
.CodeRay .code { width: 100% }
|
662
|
+
|
663
|
+
ol.CodeRay { font-size: 10pt }
|
664
|
+
ol.CodeRay li { white-space: pre }
|
665
|
+
|
666
|
+
.CodeRay .code pre { overflow: auto }
|
667
|
+
.CodeRay .debug { color:white ! important; background:blue ! important; }
|
668
|
+
|
669
|
+
.CodeRay .annotation { color:#007 }
|
670
|
+
.CodeRay .attribute-name { color:#f08 }
|
671
|
+
.CodeRay .attribute-value { color:#700 }
|
672
|
+
.CodeRay .binary { color:#509; font-weight:bold }
|
673
|
+
.CodeRay .comment { color:#998; font-style: italic;}
|
674
|
+
.CodeRay .char { color:#04D }
|
675
|
+
.CodeRay .char .content { color:#04D }
|
676
|
+
.CodeRay .char .delimiter { color:#039 }
|
677
|
+
.CodeRay .class { color:#458; font-weight:bold }
|
678
|
+
.CodeRay .complex { color:#A08; font-weight:bold }
|
679
|
+
.CodeRay .constant { color:teal; }
|
680
|
+
.CodeRay .color { color:#0A0 }
|
681
|
+
.CodeRay .class-variable { color:#369 }
|
682
|
+
.CodeRay .decorator { color:#B0B; }
|
683
|
+
.CodeRay .definition { color:#099; font-weight:bold }
|
684
|
+
.CodeRay .directive { color:#088; font-weight:bold }
|
685
|
+
.CodeRay .delimiter { color:black }
|
686
|
+
.CodeRay .doc { color:#970 }
|
687
|
+
.CodeRay .doctype { color:#34b }
|
688
|
+
.CodeRay .doc-string { color:#D42; font-weight:bold }
|
689
|
+
.CodeRay .escape { color:#666; font-weight:bold }
|
690
|
+
.CodeRay .entity { color:#800; font-weight:bold }
|
691
|
+
.CodeRay .error { color:#F00; background-color:#FAA }
|
692
|
+
.CodeRay .exception { color:#C00; font-weight:bold }
|
693
|
+
.CodeRay .filename { color:#099; }
|
694
|
+
.CodeRay .function { color:#900; font-weight:bold }
|
695
|
+
.CodeRay .global-variable { color:teal; font-weight:bold }
|
696
|
+
.CodeRay .hex { color:#058; font-weight:bold }
|
697
|
+
.CodeRay .integer { color:#099; }
|
698
|
+
.CodeRay .include { color:#B44; font-weight:bold }
|
699
|
+
.CodeRay .inline { color: black }
|
700
|
+
.CodeRay .inline .inline { background: #ccc }
|
701
|
+
.CodeRay .inline .inline .inline { background: #bbb }
|
702
|
+
.CodeRay .inline .inline-delimiter { color: #D14; }
|
703
|
+
.CodeRay .inline-delimiter { color: #D14; }
|
704
|
+
.CodeRay .important { color:#f00; }
|
705
|
+
.CodeRay .interpreted { color:#B2B; font-weight:bold }
|
706
|
+
.CodeRay .instance-variable { color:teal }
|
707
|
+
.CodeRay .label { color:#970; font-weight:bold }
|
708
|
+
.CodeRay .local-variable { color:#963 }
|
709
|
+
.CodeRay .octal { color:#40E; font-weight:bold }
|
710
|
+
.CodeRay .operator { }
|
711
|
+
.CodeRay .predefined-constant { font-weight:bold }
|
712
|
+
.CodeRay .predefined { color:#369; font-weight:bold }
|
713
|
+
.CodeRay .preprocessor { color:#579; }
|
714
|
+
.CodeRay .pseudo-class { color:#00C; font-weight:bold }
|
715
|
+
.CodeRay .predefined-type { color:#074; font-weight:bold }
|
716
|
+
.CodeRay .reserved, .keyword { color:#000; font-weight:bold }
|
717
|
+
|
718
|
+
.CodeRay .key { color: #808; }
|
719
|
+
.CodeRay .key .delimiter { color: #606; }
|
720
|
+
.CodeRay .key .char { color: #80f; }
|
721
|
+
.CodeRay .value { color: #088; }
|
722
|
+
|
723
|
+
.CodeRay .regexp { background-color:#fff0ff }
|
724
|
+
.CodeRay .regexp .content { color:#808 }
|
725
|
+
.CodeRay .regexp .delimiter { color:#404 }
|
726
|
+
.CodeRay .regexp .modifier { color:#C2C }
|
727
|
+
.CodeRay .regexp .function { color:#404; font-weight: bold }
|
728
|
+
|
729
|
+
.CodeRay .string { color: #D20; }
|
730
|
+
.CodeRay .string .string { }
|
731
|
+
.CodeRay .string .string .string { background-color:#ffd0d0 }
|
732
|
+
.CodeRay .string .content { color: #D14; }
|
733
|
+
.CodeRay .string .char { color: #D14; }
|
734
|
+
.CodeRay .string .delimiter { color: #D14; }
|
735
|
+
|
736
|
+
.CodeRay .shell { color:#D14 }
|
737
|
+
.CodeRay .shell .content { }
|
738
|
+
.CodeRay .shell .delimiter { color:#D14 }
|
739
|
+
|
740
|
+
.CodeRay .symbol { color:#990073 }
|
741
|
+
.CodeRay .symbol .content { color:#A60 }
|
742
|
+
.CodeRay .symbol .delimiter { color:#630 }
|
743
|
+
|
744
|
+
.CodeRay .tag { color:#070 }
|
745
|
+
.CodeRay .tag-special { color:#D70; font-weight:bold }
|
746
|
+
.CodeRay .type { color:#339; font-weight:bold }
|
747
|
+
.CodeRay .variable { color:#036 }
|
748
|
+
|
749
|
+
.CodeRay .insert { background: #afa; }
|
750
|
+
.CodeRay .delete { background: #faa; }
|
751
|
+
.CodeRay .change { color: #aaf; background: #007; }
|
752
|
+
.CodeRay .head { color: #f8f; background: #505 }
|
753
|
+
|
754
|
+
.CodeRay .insert .insert { color: #080; font-weight:bold }
|
755
|
+
.CodeRay .delete .delete { color: #800; font-weight:bold }
|
756
|
+
.CodeRay .change .change { color: #66f; }
|
757
|
+
.CodeRay .head .head { color: #f4f; }
|