madman 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: f748ad843c81bcf4868ed28e89bdf8ed7d8250a489a7d25ad1fd972241a95bfc
4
+ data.tar.gz: 6e9fd6730d73a92ff64f7df7bc021c6776e5a6c1cf38d2908d0c737d59629385
5
+ SHA512:
6
+ metadata.gz: 2101b953c8eb179a4e943e548868fafb544d3a6aed1205590ae665b8df8dcc0e251008d4f849c442a8830d98a361c1d7eb17f1b9c0cb88cec0cc0d2da68d54d3
7
+ data.tar.gz: fab4a22e03dc6af9c5886983260541d1335204f3cc60f146e87ae92253a3f6fa8b399383f6307c83f99d43a52f5b7c11f650ed337737e4b9da0ebe1d2dba9f3d
data/README.md ADDED
@@ -0,0 +1,20 @@
1
+ Madman
2
+ ==================================================
3
+
4
+ ---
5
+
6
+ The Markdown Swiss Armi Knife
7
+
8
+ ---
9
+
10
+ Installation
11
+ --------------------------------------------------
12
+
13
+ $ gem install madman
14
+
15
+
16
+
17
+ Usage
18
+ --------------------------------------------------
19
+
20
+ TODO
data/bin/madman ADDED
@@ -0,0 +1,15 @@
1
+ #!/usr/bin/env ruby
2
+ require 'mister_bin'
3
+ require 'madman/version'
4
+
5
+ runner = MisterBin::Runner.new 'madman', basedir: __dir__,
6
+ header: "Madman #{Madman::VERSION}"
7
+
8
+
9
+ begin
10
+ exit runner.run ARGV
11
+ rescue => e
12
+ puts e.backtrace.reverse if ENV['DEBUG']
13
+ say! "!txtred!#{e.class}: #{e.message}"
14
+ exit 1
15
+ end
@@ -0,0 +1,26 @@
1
+ require 'madman'
2
+ require 'madman/version'
3
+
4
+ version Madman::VERSION
5
+
6
+ help "Render markdown to HTML"
7
+
8
+ usage "madman render INFILE [OUTFILE] [--rtl]"
9
+ usage "madman render (-h|--help|--version)"
10
+
11
+ option "--rtl", "Render text Right-to-Left"
12
+
13
+ param "INFILE", "The input markdown file"
14
+ param "OUTFILE", "The output HTML file. If not provided, the input filename will be used with .html extension"
15
+
16
+ example "madman render README.md"
17
+ example "madman render README.md out.html --rtl"
18
+
19
+ action do |args|
20
+ infile = args['INFILE']
21
+ outfile = args['OUTFILE'] || "#{infile}.html"
22
+ doc = Madman::Document.from_file infile, rtl: args['--rtl']
23
+ doc.render outfile
24
+ say "Saved !txtgrn!#{outfile}"
25
+ end
26
+
@@ -0,0 +1,31 @@
1
+ require 'madman'
2
+ require 'madman/version'
3
+
4
+ version Madman::VERSION
5
+
6
+ help "Run a webserver and serve the markdown file as HTML"
7
+
8
+ usage "madman serve INFILE [--port N --bind ADDRESS --rtl]"
9
+ usage "madman serve (-h|--help|--version)"
10
+
11
+ option " --rtl", "Render text Right-to-Left"
12
+ option "-p --port N", "Set server port [default: 3000]"
13
+ option "-b --bind ADDRESS", "Set server listen address [default: 0.0.0.0]"
14
+
15
+ param "INFILE", "The input markdown file"
16
+
17
+ example "madman serve README.md"
18
+ example "madman serve README.md -p4000 --rtl"
19
+
20
+ action do |args|
21
+ opts = {
22
+ file: args['INFILE'],
23
+ port: args['--port'],
24
+ bind: args['--bind'],
25
+ rtl: args['--rtl']
26
+ }
27
+
28
+ Madman::Server.options opts
29
+ Madman::Server.run!
30
+ end
31
+
@@ -0,0 +1,49 @@
1
+ module Madman
2
+ class Document
3
+ attr_reader :text, :opts
4
+
5
+ def self.from_file(file, opts={})
6
+ new File.read(file), opts.merge({ filename: file })
7
+ end
8
+
9
+ def initialize(text, opts)
10
+ @text, @opts = text, opts
11
+ end
12
+
13
+ def render(outfile)
14
+ File.write outfile, to_html
15
+ end
16
+
17
+ def to_html
18
+ html = template
19
+ content = CommonMarker.render_html text, :DEFAULT, [:table]
20
+
21
+ replacements = {
22
+ content: content,
23
+ inline_css: css,
24
+ body_attributes: ''
25
+ }
26
+ replacements[:body_attributes] = "dir='rtl'" if opts[:rtl]
27
+
28
+ html %= replacements
29
+ end
30
+
31
+ private
32
+
33
+ def template
34
+ @template ||= File.read template_file
35
+ end
36
+
37
+ def css
38
+ @css ||= File.read css_file
39
+ end
40
+
41
+ def template_file
42
+ @template_file ||= File.expand_path('../templates/template.html', __dir__)
43
+ end
44
+
45
+ def css_file
46
+ @css_file ||= File.expand_path('../templates/css.css', __dir__)
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,19 @@
1
+ module Madman
2
+ class Server < Sinatra::Base
3
+ @@options = {}
4
+
5
+ def self.options(opts)
6
+ @@options = opts
7
+ set :bind, @@options[:bind]
8
+ set :port, @@options[:port]
9
+ end
10
+
11
+ def doc
12
+ Madman::Document.from_file @@options[:file], rtl: @@options[:rtl]
13
+ end
14
+
15
+ get '/' do
16
+ doc.to_html
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,3 @@
1
+ module Madman
2
+ VERSION = "0.0.1"
3
+ end
data/lib/madman.rb ADDED
@@ -0,0 +1,5 @@
1
+ require 'commonmarker'
2
+ require 'sinatra/base'
3
+
4
+ require 'madman/document'
5
+ require 'madman/server'
@@ -0,0 +1,695 @@
1
+ @font-face {
2
+ font-family: octicons-link;
3
+ src: url(data:font/woff;charset=utf-8;base64,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) format('woff');
4
+ }
5
+
6
+ .markdown-body {
7
+ -ms-text-size-adjust: 100%;
8
+ -webkit-text-size-adjust: 100%;
9
+ line-height: 1.5;
10
+ color: #24292e;
11
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
12
+ font-size: 16px;
13
+ line-height: 1.5;
14
+ word-wrap: break-word;
15
+ }
16
+
17
+ .markdown-body .pl-c {
18
+ color: #6a737d;
19
+ }
20
+
21
+ .markdown-body .pl-c1,
22
+ .markdown-body .pl-s .pl-v {
23
+ color: #005cc5;
24
+ }
25
+
26
+ .markdown-body .pl-e,
27
+ .markdown-body .pl-en {
28
+ color: #6f42c1;
29
+ }
30
+
31
+ .markdown-body .pl-smi,
32
+ .markdown-body .pl-s .pl-s1 {
33
+ color: #24292e;
34
+ }
35
+
36
+ .markdown-body .pl-ent {
37
+ color: #22863a;
38
+ }
39
+
40
+ .markdown-body .pl-k {
41
+ color: #d73a49;
42
+ }
43
+
44
+ .markdown-body .pl-s,
45
+ .markdown-body .pl-pds,
46
+ .markdown-body .pl-s .pl-pse .pl-s1,
47
+ .markdown-body .pl-sr,
48
+ .markdown-body .pl-sr .pl-cce,
49
+ .markdown-body .pl-sr .pl-sre,
50
+ .markdown-body .pl-sr .pl-sra {
51
+ color: #032f62;
52
+ }
53
+
54
+ .markdown-body .pl-v,
55
+ .markdown-body .pl-smw {
56
+ color: #e36209;
57
+ }
58
+
59
+ .markdown-body .pl-bu {
60
+ color: #b31d28;
61
+ }
62
+
63
+ .markdown-body .pl-ii {
64
+ color: #fafbfc;
65
+ background-color: #b31d28;
66
+ }
67
+
68
+ .markdown-body .pl-c2 {
69
+ color: #fafbfc;
70
+ background-color: #d73a49;
71
+ }
72
+
73
+ .markdown-body .pl-c2::before {
74
+ content: "^M";
75
+ }
76
+
77
+ .markdown-body .pl-sr .pl-cce {
78
+ font-weight: bold;
79
+ color: #22863a;
80
+ }
81
+
82
+ .markdown-body .pl-ml {
83
+ color: #735c0f;
84
+ }
85
+
86
+ .markdown-body .pl-mh,
87
+ .markdown-body .pl-mh .pl-en,
88
+ .markdown-body .pl-ms {
89
+ font-weight: bold;
90
+ color: #005cc5;
91
+ }
92
+
93
+ .markdown-body .pl-mi {
94
+ font-style: italic;
95
+ color: #24292e;
96
+ }
97
+
98
+ .markdown-body .pl-mb {
99
+ font-weight: bold;
100
+ color: #24292e;
101
+ }
102
+
103
+ .markdown-body .pl-md {
104
+ color: #b31d28;
105
+ background-color: #ffeef0;
106
+ }
107
+
108
+ .markdown-body .pl-mi1 {
109
+ color: #22863a;
110
+ background-color: #f0fff4;
111
+ }
112
+
113
+ .markdown-body .pl-mc {
114
+ color: #e36209;
115
+ background-color: #ffebda;
116
+ }
117
+
118
+ .markdown-body .pl-mi2 {
119
+ color: #f6f8fa;
120
+ background-color: #005cc5;
121
+ }
122
+
123
+ .markdown-body .pl-mdr {
124
+ font-weight: bold;
125
+ color: #6f42c1;
126
+ }
127
+
128
+ .markdown-body .pl-ba {
129
+ color: #586069;
130
+ }
131
+
132
+ .markdown-body .pl-sg {
133
+ color: #959da5;
134
+ }
135
+
136
+ .markdown-body .pl-corl {
137
+ text-decoration: underline;
138
+ color: #032f62;
139
+ }
140
+
141
+ .markdown-body .octicon {
142
+ display: inline-block;
143
+ vertical-align: text-top;
144
+ fill: currentColor;
145
+ }
146
+
147
+ .markdown-body a {
148
+ background-color: transparent;
149
+ }
150
+
151
+ .markdown-body a:active,
152
+ .markdown-body a:hover {
153
+ outline-width: 0;
154
+ }
155
+
156
+ .markdown-body strong {
157
+ font-weight: inherit;
158
+ }
159
+
160
+ .markdown-body strong {
161
+ font-weight: bolder;
162
+ }
163
+
164
+ .markdown-body h1 {
165
+ font-size: 2em;
166
+ margin: 0.67em 0;
167
+ }
168
+
169
+ .markdown-body img {
170
+ border-style: none;
171
+ }
172
+
173
+ .markdown-body code,
174
+ .markdown-body kbd,
175
+ .markdown-body pre {
176
+ font-family: monospace, monospace;
177
+ font-size: 1em;
178
+ }
179
+
180
+ .markdown-body hr {
181
+ box-sizing: content-box;
182
+ height: 0;
183
+ overflow: visible;
184
+ }
185
+
186
+ .markdown-body input {
187
+ font: inherit;
188
+ margin: 0;
189
+ }
190
+
191
+ .markdown-body input {
192
+ overflow: visible;
193
+ }
194
+
195
+ .markdown-body [type="checkbox"] {
196
+ box-sizing: border-box;
197
+ padding: 0;
198
+ }
199
+
200
+ .markdown-body * {
201
+ box-sizing: border-box;
202
+ }
203
+
204
+ .markdown-body input {
205
+ font-family: inherit;
206
+ font-size: inherit;
207
+ line-height: inherit;
208
+ }
209
+
210
+ .markdown-body a {
211
+ color: #0366d6;
212
+ text-decoration: none;
213
+ }
214
+
215
+ .markdown-body a:hover {
216
+ text-decoration: underline;
217
+ }
218
+
219
+ .markdown-body strong {
220
+ font-weight: 600;
221
+ }
222
+
223
+ .markdown-body hr {
224
+ height: 0;
225
+ margin: 15px 0;
226
+ overflow: hidden;
227
+ background: transparent;
228
+ border: 0;
229
+ border-bottom: 1px solid #dfe2e5;
230
+ }
231
+
232
+ .markdown-body hr::before {
233
+ display: table;
234
+ content: "";
235
+ }
236
+
237
+ .markdown-body hr::after {
238
+ display: table;
239
+ clear: both;
240
+ content: "";
241
+ }
242
+
243
+ .markdown-body table {
244
+ border-spacing: 0;
245
+ border-collapse: collapse;
246
+ }
247
+
248
+ .markdown-body td,
249
+ .markdown-body th {
250
+ padding: 0;
251
+ }
252
+
253
+ .markdown-body h1,
254
+ .markdown-body h2,
255
+ .markdown-body h3,
256
+ .markdown-body h4,
257
+ .markdown-body h5,
258
+ .markdown-body h6 {
259
+ margin-top: 0;
260
+ margin-bottom: 0;
261
+ }
262
+
263
+ .markdown-body h1 {
264
+ font-size: 32px;
265
+ font-weight: 600;
266
+ }
267
+
268
+ .markdown-body h2 {
269
+ font-size: 24px;
270
+ font-weight: 600;
271
+ }
272
+
273
+ .markdown-body h3 {
274
+ font-size: 20px;
275
+ font-weight: 600;
276
+ }
277
+
278
+ .markdown-body h4 {
279
+ font-size: 16px;
280
+ font-weight: 600;
281
+ }
282
+
283
+ .markdown-body h5 {
284
+ font-size: 14px;
285
+ font-weight: 600;
286
+ }
287
+
288
+ .markdown-body h6 {
289
+ font-size: 12px;
290
+ font-weight: 600;
291
+ }
292
+
293
+ .markdown-body p {
294
+ margin-top: 0;
295
+ margin-bottom: 10px;
296
+ }
297
+
298
+ .markdown-body blockquote {
299
+ margin: 0;
300
+ }
301
+
302
+ .markdown-body ul,
303
+ .markdown-body ol {
304
+ padding-left: 0;
305
+ margin-top: 0;
306
+ margin-bottom: 0;
307
+ }
308
+
309
+ .markdown-body ol ol,
310
+ .markdown-body ul ol {
311
+ list-style-type: lower-roman;
312
+ }
313
+
314
+ .markdown-body ul ul ol,
315
+ .markdown-body ul ol ol,
316
+ .markdown-body ol ul ol,
317
+ .markdown-body ol ol ol {
318
+ list-style-type: lower-alpha;
319
+ }
320
+
321
+ .markdown-body dd {
322
+ margin-left: 0;
323
+ }
324
+
325
+ .markdown-body code {
326
+ font-family: "SFMono-Regular", Consolas, "Liberation Mono", Menlo, Courier, monospace;
327
+ font-size: 12px;
328
+ }
329
+
330
+ .markdown-body pre {
331
+ margin-top: 0;
332
+ margin-bottom: 0;
333
+ font-family: "SFMono-Regular", Consolas, "Liberation Mono", Menlo, Courier, monospace;
334
+ font-size: 12px;
335
+ }
336
+
337
+ .markdown-body .octicon {
338
+ vertical-align: text-bottom;
339
+ }
340
+
341
+ .markdown-body .pl-0 {
342
+ padding-left: 0 !important;
343
+ }
344
+
345
+ .markdown-body .pl-1 {
346
+ padding-left: 4px !important;
347
+ }
348
+
349
+ .markdown-body .pl-2 {
350
+ padding-left: 8px !important;
351
+ }
352
+
353
+ .markdown-body .pl-3 {
354
+ padding-left: 16px !important;
355
+ }
356
+
357
+ .markdown-body .pl-4 {
358
+ padding-left: 24px !important;
359
+ }
360
+
361
+ .markdown-body .pl-5 {
362
+ padding-left: 32px !important;
363
+ }
364
+
365
+ .markdown-body .pl-6 {
366
+ padding-left: 40px !important;
367
+ }
368
+
369
+ .markdown-body::before {
370
+ display: table;
371
+ content: "";
372
+ }
373
+
374
+ .markdown-body::after {
375
+ display: table;
376
+ clear: both;
377
+ content: "";
378
+ }
379
+
380
+ .markdown-body>*:first-child {
381
+ margin-top: 0 !important;
382
+ }
383
+
384
+ .markdown-body>*:last-child {
385
+ margin-bottom: 0 !important;
386
+ }
387
+
388
+ .markdown-body a:not([href]) {
389
+ color: inherit;
390
+ text-decoration: none;
391
+ }
392
+
393
+ .markdown-body .anchor {
394
+ float: left;
395
+ padding-right: 4px;
396
+ margin-left: -20px;
397
+ line-height: 1;
398
+ }
399
+
400
+ .markdown-body .anchor:focus {
401
+ outline: none;
402
+ }
403
+
404
+ .markdown-body p,
405
+ .markdown-body blockquote,
406
+ .markdown-body ul,
407
+ .markdown-body ol,
408
+ .markdown-body dl,
409
+ .markdown-body table,
410
+ .markdown-body pre {
411
+ margin-top: 0;
412
+ margin-bottom: 16px;
413
+ }
414
+
415
+ .markdown-body hr {
416
+ height: 0.25em;
417
+ padding: 0;
418
+ margin: 24px 0;
419
+ background-color: #e1e4e8;
420
+ border: 0;
421
+ }
422
+
423
+ .markdown-body blockquote {
424
+ padding: 0 1em;
425
+ color: #6a737d;
426
+ border-left: 0.25em solid #dfe2e5;
427
+ }
428
+
429
+ .markdown-body blockquote>:first-child {
430
+ margin-top: 0;
431
+ }
432
+
433
+ .markdown-body blockquote>:last-child {
434
+ margin-bottom: 0;
435
+ }
436
+
437
+ .markdown-body kbd {
438
+ display: inline-block;
439
+ padding: 3px 5px;
440
+ font-size: 11px;
441
+ line-height: 10px;
442
+ color: #444d56;
443
+ vertical-align: middle;
444
+ background-color: #fafbfc;
445
+ border: solid 1px #c6cbd1;
446
+ border-bottom-color: #959da5;
447
+ border-radius: 3px;
448
+ box-shadow: inset 0 -1px 0 #959da5;
449
+ }
450
+
451
+ .markdown-body h1,
452
+ .markdown-body h2,
453
+ .markdown-body h3,
454
+ .markdown-body h4,
455
+ .markdown-body h5,
456
+ .markdown-body h6 {
457
+ margin-top: 24px;
458
+ margin-bottom: 16px;
459
+ font-weight: 600;
460
+ line-height: 1.25;
461
+ }
462
+
463
+ .markdown-body h1 .octicon-link,
464
+ .markdown-body h2 .octicon-link,
465
+ .markdown-body h3 .octicon-link,
466
+ .markdown-body h4 .octicon-link,
467
+ .markdown-body h5 .octicon-link,
468
+ .markdown-body h6 .octicon-link {
469
+ color: #1b1f23;
470
+ vertical-align: middle;
471
+ visibility: hidden;
472
+ }
473
+
474
+ .markdown-body h1:hover .anchor,
475
+ .markdown-body h2:hover .anchor,
476
+ .markdown-body h3:hover .anchor,
477
+ .markdown-body h4:hover .anchor,
478
+ .markdown-body h5:hover .anchor,
479
+ .markdown-body h6:hover .anchor {
480
+ text-decoration: none;
481
+ }
482
+
483
+ .markdown-body h1:hover .anchor .octicon-link,
484
+ .markdown-body h2:hover .anchor .octicon-link,
485
+ .markdown-body h3:hover .anchor .octicon-link,
486
+ .markdown-body h4:hover .anchor .octicon-link,
487
+ .markdown-body h5:hover .anchor .octicon-link,
488
+ .markdown-body h6:hover .anchor .octicon-link {
489
+ visibility: visible;
490
+ }
491
+
492
+ .markdown-body h1 {
493
+ padding-bottom: 0.3em;
494
+ font-size: 2em;
495
+ border-bottom: 1px solid #eaecef;
496
+ }
497
+
498
+ .markdown-body h2 {
499
+ padding-bottom: 0.3em;
500
+ font-size: 1.5em;
501
+ border-bottom: 1px solid #eaecef;
502
+ }
503
+
504
+ .markdown-body h3 {
505
+ font-size: 1.25em;
506
+ }
507
+
508
+ .markdown-body h4 {
509
+ font-size: 1em;
510
+ }
511
+
512
+ .markdown-body h5 {
513
+ font-size: 0.875em;
514
+ }
515
+
516
+ .markdown-body h6 {
517
+ font-size: 0.85em;
518
+ color: #6a737d;
519
+ }
520
+
521
+ .markdown-body ul,
522
+ .markdown-body ol {
523
+ padding-left: 2em;
524
+ }
525
+
526
+ .markdown-body ul ul,
527
+ .markdown-body ul ol,
528
+ .markdown-body ol ol,
529
+ .markdown-body ol ul {
530
+ margin-top: 0;
531
+ margin-bottom: 0;
532
+ }
533
+
534
+ .markdown-body li {
535
+ word-wrap: break-all;
536
+ }
537
+
538
+ .markdown-body li>p {
539
+ margin-top: 16px;
540
+ }
541
+
542
+ .markdown-body li+li {
543
+ margin-top: 0.25em;
544
+ }
545
+
546
+ .markdown-body dl {
547
+ padding: 0;
548
+ }
549
+
550
+ .markdown-body dl dt {
551
+ padding: 0;
552
+ margin-top: 16px;
553
+ font-size: 1em;
554
+ font-style: italic;
555
+ font-weight: 600;
556
+ }
557
+
558
+ .markdown-body dl dd {
559
+ padding: 0 16px;
560
+ margin-bottom: 16px;
561
+ }
562
+
563
+ .markdown-body table {
564
+ display: block;
565
+ width: 100%;
566
+ overflow: auto;
567
+ }
568
+
569
+ .markdown-body table th {
570
+ font-weight: 600;
571
+ }
572
+
573
+ .markdown-body table th,
574
+ .markdown-body table td {
575
+ padding: 6px 13px;
576
+ border: 1px solid #dfe2e5;
577
+ }
578
+
579
+ .markdown-body table tr {
580
+ background-color: #fff;
581
+ border-top: 1px solid #c6cbd1;
582
+ }
583
+
584
+ .markdown-body table tr:nth-child(2n) {
585
+ background-color: #f6f8fa;
586
+ }
587
+
588
+ .markdown-body img {
589
+ max-width: 100%;
590
+ box-sizing: content-box;
591
+ background-color: #fff;
592
+ }
593
+
594
+ .markdown-body img[align=right] {
595
+ padding-left: 20px;
596
+ }
597
+
598
+ .markdown-body img[align=left] {
599
+ padding-right: 20px;
600
+ }
601
+
602
+ .markdown-body code {
603
+ padding: 0.2em 0.4em;
604
+ margin: 0;
605
+ font-size: 85%;
606
+ background-color: rgba(27,31,35,0.05);
607
+ border-radius: 3px;
608
+ }
609
+
610
+ .markdown-body pre {
611
+ word-wrap: normal;
612
+ }
613
+
614
+ .markdown-body pre>code {
615
+ padding: 0;
616
+ margin: 0;
617
+ font-size: 100%;
618
+ word-break: normal;
619
+ white-space: pre;
620
+ background: transparent;
621
+ border: 0;
622
+ }
623
+
624
+ .markdown-body .highlight {
625
+ margin-bottom: 16px;
626
+ }
627
+
628
+ .markdown-body .highlight pre {
629
+ margin-bottom: 0;
630
+ word-break: normal;
631
+ }
632
+
633
+ .markdown-body .highlight pre,
634
+ .markdown-body pre {
635
+ padding: 16px;
636
+ overflow: auto;
637
+ font-size: 85%;
638
+ line-height: 1.45;
639
+ background-color: #f6f8fa;
640
+ border-radius: 3px;
641
+ }
642
+
643
+ .markdown-body pre code {
644
+ display: inline;
645
+ max-width: auto;
646
+ padding: 0;
647
+ margin: 0;
648
+ overflow: visible;
649
+ line-height: inherit;
650
+ word-wrap: normal;
651
+ background-color: transparent;
652
+ border: 0;
653
+ }
654
+
655
+ .markdown-body .full-commit .btn-outline:not(:disabled):hover {
656
+ color: #005cc5;
657
+ border-color: #005cc5;
658
+ }
659
+
660
+ .markdown-body kbd {
661
+ display: inline-block;
662
+ padding: 3px 5px;
663
+ font: 11px "SFMono-Regular", Consolas, "Liberation Mono", Menlo, Courier, monospace;
664
+ line-height: 10px;
665
+ color: #444d56;
666
+ vertical-align: middle;
667
+ background-color: #fafbfc;
668
+ border: solid 1px #d1d5da;
669
+ border-bottom-color: #c6cbd1;
670
+ border-radius: 3px;
671
+ box-shadow: inset 0 -1px 0 #c6cbd1;
672
+ }
673
+
674
+ .markdown-body :checked+.radio-label {
675
+ position: relative;
676
+ z-index: 1;
677
+ border-color: #0366d6;
678
+ }
679
+
680
+ .markdown-body .task-list-item {
681
+ list-style-type: none;
682
+ }
683
+
684
+ .markdown-body .task-list-item+.task-list-item {
685
+ margin-top: 3px;
686
+ }
687
+
688
+ .markdown-body .task-list-item input {
689
+ margin: 0 0.2em 0.25em -1.6em;
690
+ vertical-align: middle;
691
+ }
692
+
693
+ .markdown-body hr {
694
+ border-bottom-color: #eee;
695
+ }
@@ -0,0 +1,31 @@
1
+ <!doctype html>
2
+ <html>
3
+ <head>
4
+ <meta name="viewport" content="width=device-width, initial-scale=1">
5
+ </head>
6
+ <body>
7
+ <style>
8
+ %{inline_css}
9
+ </style>
10
+ <style>
11
+ .markdown-body {
12
+ box-sizing: border-box;
13
+ min-width: 200px;
14
+ max-width: 980px;
15
+ margin: 0 auto;
16
+ padding: 45px;
17
+ }
18
+
19
+ @media (max-width: 767px) {
20
+ .markdown-body {
21
+ padding: 15px;
22
+ }
23
+ }
24
+ </style>
25
+
26
+ <article class="markdown-body" %{body_attributes}>
27
+ %{content}
28
+ </article>
29
+
30
+ </body>
31
+ </html>
metadata ADDED
@@ -0,0 +1,266 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: madman
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Danny Ben Shitrit
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2018-05-18 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: mister_bin
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '0.2'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '0.2'
27
+ - !ruby/object:Gem::Dependency
28
+ name: sinatra
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '2.0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '2.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: commonmarker
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '0.17'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '0.17'
55
+ - !ruby/object:Gem::Dependency
56
+ name: puma
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '3.11'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '3.11'
69
+ - !ruby/object:Gem::Dependency
70
+ name: byebug
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '10.0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '10.0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: github_changelog_generator
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '1.14'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '1.14'
97
+ - !ruby/object:Gem::Dependency
98
+ name: rack-test
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '1.0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '1.0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: rdoc
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: '6.0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: '6.0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: rspec
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: '3.6'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: '3.6'
139
+ - !ruby/object:Gem::Dependency
140
+ name: rspec-html-matchers
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - "~>"
144
+ - !ruby/object:Gem::Version
145
+ version: '0.9'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - "~>"
151
+ - !ruby/object:Gem::Version
152
+ version: '0.9'
153
+ - !ruby/object:Gem::Dependency
154
+ name: rspec_fixtures
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - "~>"
158
+ - !ruby/object:Gem::Version
159
+ version: '0.3'
160
+ type: :development
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - "~>"
165
+ - !ruby/object:Gem::Version
166
+ version: '0.3'
167
+ - !ruby/object:Gem::Dependency
168
+ name: runfile
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - "~>"
172
+ - !ruby/object:Gem::Version
173
+ version: '0.10'
174
+ type: :development
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - "~>"
179
+ - !ruby/object:Gem::Version
180
+ version: '0.10'
181
+ - !ruby/object:Gem::Dependency
182
+ name: runfile-tasks
183
+ requirement: !ruby/object:Gem::Requirement
184
+ requirements:
185
+ - - "~>"
186
+ - !ruby/object:Gem::Version
187
+ version: '0.4'
188
+ type: :development
189
+ prerelease: false
190
+ version_requirements: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - "~>"
193
+ - !ruby/object:Gem::Version
194
+ version: '0.4'
195
+ - !ruby/object:Gem::Dependency
196
+ name: simplecov
197
+ requirement: !ruby/object:Gem::Requirement
198
+ requirements:
199
+ - - "~>"
200
+ - !ruby/object:Gem::Version
201
+ version: '0.15'
202
+ type: :development
203
+ prerelease: false
204
+ version_requirements: !ruby/object:Gem::Requirement
205
+ requirements:
206
+ - - "~>"
207
+ - !ruby/object:Gem::Version
208
+ version: '0.15'
209
+ - !ruby/object:Gem::Dependency
210
+ name: yard
211
+ requirement: !ruby/object:Gem::Requirement
212
+ requirements:
213
+ - - "~>"
214
+ - !ruby/object:Gem::Version
215
+ version: '0.9'
216
+ type: :development
217
+ prerelease: false
218
+ version_requirements: !ruby/object:Gem::Requirement
219
+ requirements:
220
+ - - "~>"
221
+ - !ruby/object:Gem::Version
222
+ version: '0.9'
223
+ description: A command line utility for markdown fun
224
+ email: db@dannyben.com
225
+ executables:
226
+ - madman
227
+ - madman-render.rb
228
+ - madman-serve.rb
229
+ extensions: []
230
+ extra_rdoc_files: []
231
+ files:
232
+ - README.md
233
+ - bin/madman
234
+ - bin/madman-render.rb
235
+ - bin/madman-serve.rb
236
+ - lib/madman.rb
237
+ - lib/madman/document.rb
238
+ - lib/madman/server.rb
239
+ - lib/madman/version.rb
240
+ - lib/templates/css.css
241
+ - lib/templates/template.html
242
+ homepage: https://github.com/dannyben/madman
243
+ licenses:
244
+ - MIT
245
+ metadata: {}
246
+ post_install_message:
247
+ rdoc_options: []
248
+ require_paths:
249
+ - lib
250
+ required_ruby_version: !ruby/object:Gem::Requirement
251
+ requirements:
252
+ - - ">="
253
+ - !ruby/object:Gem::Version
254
+ version: 2.4.0
255
+ required_rubygems_version: !ruby/object:Gem::Requirement
256
+ requirements:
257
+ - - ">="
258
+ - !ruby/object:Gem::Version
259
+ version: '0'
260
+ requirements: []
261
+ rubyforge_project:
262
+ rubygems_version: 2.7.6
263
+ signing_key:
264
+ specification_version: 4
265
+ summary: The Markdown Swiss Armi Knife
266
+ test_files: []