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.
@@ -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
@@ -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
@@ -0,0 +1,3 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gemspec
@@ -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.
@@ -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
+ ```
@@ -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]
@@ -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; }