riven 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -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; }