madness 0.9.6 → 0.9.8
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +13 -11
- data/app/public/css/main.css +4 -0
- data/app/public/css/main.css.map +2 -2
- data/app/styles/_search.scss +4 -0
- data/bin/madness +10 -1
- data/lib/madness/breadcrumbs.rb +9 -8
- data/lib/madness/browser.rb +4 -4
- data/lib/madness/command_line.rb +9 -9
- data/lib/madness/directory.rb +5 -6
- data/lib/madness/docopt.txt +4 -0
- data/lib/madness/document.rb +24 -11
- data/lib/madness/item.rb +2 -2
- data/lib/madness/navigation.rb +2 -2
- data/lib/madness/refinements/hash_refinements.rb +1 -1
- data/lib/madness/refinements/string_refinements.rb +2 -2
- data/lib/madness/search.rb +8 -6
- data/lib/madness/server.rb +12 -13
- data/lib/madness/server_base.rb +1 -5
- data/lib/madness/server_helper.rb +6 -7
- data/lib/madness/settings.rb +25 -22
- data/lib/madness/static.rb +2 -3
- data/lib/madness/table_of_contents.rb +6 -5
- data/lib/madness/templates/madness.yml +3 -0
- data/lib/madness/theme.rb +1 -2
- data/lib/madness/version.rb +1 -1
- data/lib/madness.rb +0 -1
- metadata +34 -53
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 68505dca2eb6baa5db15f96986700a20e61b8f9df6eb67e53cfe457c8710dd65
|
4
|
+
data.tar.gz: 0e2619328fc2eb24607f13458ea858d9c99aef4d505200b9025326ffada6b9f6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d932ebc6aa366dc2c714f880a43bd2f2116db6e853cb0409b29c629aa36ee28740c0de25b88da9912e27142fa6f8d8e2cb4137331d007c7526f204482e77946c
|
7
|
+
data.tar.gz: 8b136b49572d6f1aeab9436baa9a675974bb345afe5232d32bb3c8a3c25c4c5af1e66139e8e1a0120562df7a564639ba4d3c118bd4244ec4ab7b0b77da6407f5
|
data/README.md
CHANGED
@@ -26,13 +26,13 @@
|
|
26
26
|
* [Search](#search)
|
27
27
|
* [Images and Static Files](#images-and-static-files)
|
28
28
|
* [Automatic H1](#automatic-h1)
|
29
|
+
* [Shortlinks](#shortlinks)
|
29
30
|
* [Table of Contents Generation](#table-of-contents-generation)
|
30
31
|
* [Hidden Directories](#hidden-directories)
|
31
32
|
* [Controlling Sort Order](#controlling-sort-order)
|
32
33
|
* [Displaying Additional File Types](#displaying-additional-file-types)
|
33
34
|
* [Basic Authentication](#basic-authentication)
|
34
35
|
* [Customizing Theme](#customizing-theme)
|
35
|
-
* [Forcing HTTPS Connection](#forcing-https-connection)
|
36
36
|
* [Docker Image](#docker-image)
|
37
37
|
|
38
38
|
## Install
|
@@ -71,6 +71,7 @@ searching for local, markdown based documentation directories.
|
|
71
71
|
- Automatic generation of navigation sidebar.
|
72
72
|
- Automatic generation of Table of Contents (site-wide and inline).
|
73
73
|
- Can optionally show additional file types in the navigation menu (e.g. PDF files).
|
74
|
+
- Optional support for `[[Short Link]]` syntax.
|
74
75
|
|
75
76
|
## Usage
|
76
77
|
|
@@ -152,6 +153,9 @@ line_numbers: true
|
|
152
153
|
# enable the copy to clipboard icon for code snippets
|
153
154
|
copy_code: true
|
154
155
|
|
156
|
+
# convert [[Links]] to [Links](Links)
|
157
|
+
shortlinks: false
|
158
|
+
|
155
159
|
# generate a table of contents file with this name, for example:
|
156
160
|
# toc: Table of Contents
|
157
161
|
toc: ~
|
@@ -217,6 +221,13 @@ the path relative to the homepage:
|
|
217
221
|
If your markdown document does not start with a level 1 heading, it
|
218
222
|
will be automatically added based on the file name.
|
219
223
|
|
224
|
+
## Shortlinks
|
225
|
+
|
226
|
+
When the `shortlinks` option is enabled, you may use a shorthand syntax for
|
227
|
+
specifying internal links, where `[[Anything]]` will be converted to
|
228
|
+
`[Anything](Anything)`, which will then be rendered as an internal link to a
|
229
|
+
file or a directory in the same directory as the file itself.
|
230
|
+
|
220
231
|
## Table of Contents Generation
|
221
232
|
|
222
233
|
### Site-wide
|
@@ -334,15 +345,6 @@ If you are looking to implement a smaller CSS change, follow these steps:
|
|
334
345
|
Note that this functionality is not guaranteed to stay as is in future
|
335
346
|
versions of madness.
|
336
347
|
|
337
|
-
## Forcing HTTPS Connection
|
338
|
-
|
339
|
-
To have Madness redirect HTTP traffic to HTTPS, set this environment
|
340
|
-
variable:
|
341
|
-
|
342
|
-
```shell
|
343
|
-
$ export MADNESS_FORCE_SSL=1
|
344
|
-
```
|
345
|
-
|
346
348
|
## Docker Image
|
347
349
|
|
348
350
|
Madness server is also available as a docker image.
|
@@ -358,7 +360,7 @@ You may create an alias for convenience:
|
|
358
360
|
|
359
361
|
```shell
|
360
362
|
$ alias madness='docker run --rm -it -v $PWD:/docs -p 3000:3000 dannyben/madness'
|
361
|
-
$
|
363
|
+
$ madness --help
|
362
364
|
```
|
363
365
|
|
364
366
|
For more information about the docker image, see:
|
data/app/public/css/main.css
CHANGED
data/app/public/css/main.css.map
CHANGED
@@ -33,12 +33,12 @@
|
|
33
33
|
"img {\n border-style: none;\n\n max-width: 100%;\n box-sizing: content-box;\n background-color: #fff;\n}\n",
|
34
34
|
"hr {\n box-sizing: content-box;\n // height: 0;\n overflow: visible;\n height: 0;\n // margin: 15px 0;\n overflow: hidden;\n // background: transparent;\n border: 0;\n border-bottom: 1px solid #ddd;\n\n height: 4px;\n padding: 0;\n margin: 16px 0;\n background-color: #e7e7e7;\n // border: 0 none;\n\n border-bottom-color: #eee;\n\n &::before {\n display: table;\n content: \"\";\n }\n &::after {\n display: table;\n clear: both;\n content: \"\";\n }\n}",
|
35
35
|
"kbd {\n display: inline-block;\n padding: 3px 5px;\n font-size: 11px;\n line-height: 10px;\n color: #555;\n vertical-align: middle;\n background-color: #fcfcfc;\n border: solid 1px #ccc;\n border-bottom-color: #bbb;\n border-radius: 3px;\n box-shadow: inset 0 -1px 0 #bbb;\n}\n\n",
|
36
|
-
"#mobile-search {\n @include desktop {\n display: none;\n }\n\n @include mobile {\n position: fixed;\n font-size: 30px;\n top: 0px;\n right: 10px;\n opacity: 0.5;\n }\n}\n\n.search-form {\n margin-bottom: 20px;\n margin-top: 20px;\n}\n\n.search-field {\n outline: none;\n padding: 8px 12px;\n font-size: 1.5em;\n width: 50%;\n min-width: 200px;\n width: 100%;\n\n border: #ccc 1px solid;\n border-radius: 3px;\n\n &:focus {\n border-color: #4078c0;\n }\n}\n",
|
36
|
+
"#mobile-search {\n @media print {\n display: none;\n }\n\n @include desktop {\n display: none;\n }\n\n @include mobile {\n position: fixed;\n font-size: 30px;\n top: 0px;\n right: 10px;\n opacity: 0.5;\n }\n}\n\n.search-form {\n margin-bottom: 20px;\n margin-top: 20px;\n}\n\n.search-field {\n outline: none;\n padding: 8px 12px;\n font-size: 1.5em;\n width: 50%;\n min-width: 200px;\n width: 100%;\n\n border: #ccc 1px solid;\n border-radius: 3px;\n\n &:focus {\n border-color: #4078c0;\n }\n}\n",
|
37
37
|
".breadcrumbs {\n margin-top: 6px;\n border-bottom: 1px solid #ccc;\n a {\n display: inline-block;\n padding: 7px 0;\n }\n}\n",
|
38
38
|
"nav {\n @media print {\n display: none;\n }\n\n @include mobile {\n display: none;\n }\n\n // background: #eee;\n // border-right: 1px solid #ccc;\n\n height: 100vh;\n width: 250px;\n overflow-y: auto;\n position: fixed;\n\n .icon-bar {\n border-bottom: 1px dotted #ddd;\n }\n\n a.document, span.document, .caption {\n border-bottom: 1px dotted #ddd;\n // &:hover {\n // background: #e4e4e4;\n // }\n\n display: block;\n padding: 5px 20px 5px 30px;\n }\n\n a.icon {\n display: inline-block;\n font-size: 1.5em;\n width: 50%;\n padding: 3px 20px 3px 30px;\n &.wide {\n width: 100%\n }\n // &:hover {\n // background: #e4e4e4;\n // }\n }\n\n\n &:after {\n content: \"\";\n height: 90px;\n display: block;\n }\n}\n\n\n// Nicer sidebar scrollbars\n::-webkit-scrollbar {\n width: 6px;\n}\n::-webkit-scrollbar-thumb {\n background: #ddd;\n -webkit-border-radius: 3px;\n}\n",
|
39
39
|
"@font-face {\n font-family: 'fontello';\n src: url('../fonts/fontello.eot?68354463');\n src: url('../fonts/fontello.eot?68354463#iefix') format('embedded-opentype'),\n url('../fonts/fontello.woff2?68354463') format('woff2'),\n url('../fonts/fontello.woff?68354463') format('woff'),\n url('../fonts/fontello.ttf?68354463') format('truetype'),\n url('../fonts/fontello.svg?68354463#fontello') format('svg');\n font-weight: normal;\n font-style: normal;\n}\n \n[class^=\"icon-\"]:before, [class*=\" icon-\"]:before {\n font-family: \"fontello\";\n font-style: normal;\n font-weight: normal;\n speak: none;\n \n display: inline-block;\n text-decoration: inherit;\n width: 1em;\n margin-right: .2em;\n text-align: center;\n /* opacity: .8; */\n \n /* For safety - reset parent styles, that can break glyph codes*/\n font-variant: normal;\n text-transform: none;\n \n /* fix buttons height, for twitter bootstrap */\n line-height: 1em;\n \n /* Animation center compensation - margins should be symmetric */\n /* remove if not needed */\n margin-left: .2em;\n \n /* you can be more comfortable with increased icons size */\n /* font-size: 120%; */\n \n /* Font smoothing. That was taken from TWBS */\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n \n /* Uncomment for 3D effect */\n /* text-shadow: 1px 1px 1px rgba(127, 127, 127, 0.3); */\n}\n \n.icon-export:before { content: '\\e800'; }\n.icon-home:before { content: '\\e801'; }\n.icon-search:before { content: '\\e802'; }\n",
|
40
40
|
"* {\n box-sizing: border-box;\n}\n\np {\n margin-top: 0;\n margin-bottom: 10px;\n}\n\nblockquote {\n margin: 0;\n padding: 0 15px;\n color: #777;\n border-left: 4px solid #ddd;\n\n &>:first-child {\n margin-top: 0;\n }\n\n &>:last-child {\n margin-bottom: 0;\n }\n}\n\np, blockquote, ul, ol, dl, table, pre {\n margin-top: 0;\n margin-bottom: 16px;\n}\n\n.quiet {\n color: #777;\n}\n"
|
41
41
|
],
|
42
42
|
"names": [],
|
43
|
-
"mappings": "AGAA,AAAA,IAAI,CAAC;EACH,oBAAoB,EAAE,IAAI;EAC1B,wBAAwB,EAAE,IAAI;EAC9B,KAAK,EAAE,IAAI;EAEX,WAAW,EAAE,mEAAmE;EAChF,SAAS,EAAE,IAAI;EACf,WAAW,EAAE,GAAG;EAChB,SAAS,EAAE,UAAU,GACtB;;AAED,AAAA,MAAM,EAAE,OAAO,CAAC;EACd,WAAW,EAAE,MAAM,GACpB;;AAED,AAAA,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;EACrB,UAAU,EAAE,GAAG;EACf,aAAa,EAAE,IAAI;EACnB,WAAW,EAAE,IAAI;EACjB,WAAW,EAAE,GAAG,GACjB;;AAED,AAAA,EAAE,CAAC;EACD,MAAM,EAAE,QAAQ;EAChB,cAAc,EAAE,KAAK;EACrB,SAAS,EAAE,MAAM;EACjB,WAAW,EAAE,GAAG;EAChB,aAAa,EAAE,cAAc,GAC9B;;AAED,AAAA,EAAE,CAAC;EACD,cAAc,EAAE,KAAK;EACrB,SAAS,EAAE,MAAM;EACjB,WAAW,EAAE,KAAK;EAClB,aAAa,EAAE,cAAc,GAC9B;;AAED,AAAA,EAAE,CAAC;EACD,SAAS,EAAE,KAAK;EAChB,WAAW,EAAE,IAAI,GAClB;;AAED,AAAA,EAAE,CAAC;EACD,SAAS,EAAE,MAAM,GAClB;;AAED,AAAA,EAAE,CAAC;EACD,SAAS,EAAE,GAAG,GACf;;AAED,AAAA,EAAE,CAAC;EACD,SAAS,EAAE,GAAG;EACd,KAAK,EAAE,IAAI,GACZ;;AAED,AAAA,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC;EACb,WAAW,EAAE,sDAAsD;EACnE,SAAS,EAAE,GAAG,GACf;;AC1DD,AAAA,KAAK,CAAC;EACJ,cAAc,EAAE,CAAC;EACjB,eAAe,EAAE,QAAQ;EAEzB,OAAO,EAAE,KAAK;EACd,KAAK,EAAE,IAAI;EACX,QAAQ,EAAE,IAAI;EACd,UAAU,EAAE,MAAM;EAClB,UAAU,EAAE,QAAQ,GAmBrB;EA3BD,AAUE,KAVG,CAUH,EAAE,CAAC;IACD,WAAW,EAAE,IAAI,GAClB;EAZH,AAcE,KAdG,CAcH,EAAE,EAdJ,KAAK,CAcC,EAAE,CAAC;IACL,OAAO,EAAE,QAAQ;IACjB,MAAM,EAAE,cAAc,GACvB;EAjBH,AAmBE,KAnBG,CAmBH,EAAE,CAAC;IACD,gBAAgB,EAAE,IAAI;IACtB,UAAU,EAAE,cAAc,GAC3B;EAtBH,AAwBE,KAxBG,CAwBH,EAAE,CAAC,SAAU,CAAA,EAAE,EAAE;IACf,gBAAgB,EAAE,OAAO,GAC1B;;AC1BH,AAAA,CAAC,CAAC;EACA,4BAA4B,EAAE,OAAO;EAErC,KAAK,EAAE,OAAO;EACd,eAAe,EAAE,IAAI,GAWtB;EAfD,AAME,CAND,CAMG,MAAM,EANV,CAAC,CAMa,KAAK,EANnB,CAAC,CAMsB,KAAK,CAAC;IACzB,aAAa,EAAE,CAAC;IAChB,eAAe,EAAE,SAAS,GAC3B;EATH,AAWE,CAXD,CAWE,GAAK,EAAA,AAAA,IAAC,AAAA,GAAO;IACZ,KAAK,EAAE,OAAO;IACd,eAAe,EAAE,IAAI,GACtB;;ACdH,AAAA,EAAE,EAAE,EAAE,CAAC;EACL,UAAU,EAAE,CAAC;EACb,aAAa,EAAE,CAAC;EAEhB,YAAY,EAAE,GAAG,GAClB;;AAED,AAAA,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;EACX,eAAe,EAAE,WAAW,GAC7B;;AAED,AAAA,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;EACrC,eAAe,EAAE,WAAW,GAC7B;;AAED,AAAA,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;EACzB,UAAU,EAAE,CAAC;EACb,aAAa,EAAE,CAAC,GACjB;;AAED,AAAA,EAAE,CAAC;EACD,WAAW,EAAE,CAAC,GACf;;AAED,AAAA,EAAE,CAAC;EACD,OAAO,EAAE,CAAC,GAcX;EAfD,AAGE,EAHA,CAGA,EAAE,CAAC;IACD,OAAO,EAAE,CAAC;IACV,UAAU,EAAE,IAAI;IAChB,SAAS,EAAE,GAAG;IACd,UAAU,EAAE,MAAM;IAClB,WAAW,EAAE,IAAI,GAClB;EATH,AAWE,EAXA,CAWA,EAAE,CAAC;IACD,OAAO,EAAE,MAAM;IACf,aAAa,EAAE,IAAI,GACpB;;AAGH,AAAA,EAAE,GAAC,CAAC,CAAC;EACH,UAAU,EAAE,IAAI,GACjB;;AC3CD,AAAA,IAAI,CAAC;EACH,OAAO,EAAE,CAAC;EACV,WAAW,EAAE,KAAK;EAClB,cAAc,EAAE,KAAK;EACrB,MAAM,EAAE,CAAC;EAET,gBAAgB,EAAE,IAAI;EACtB,aAAa,EAAE,GAAG,GAMnB;EAbD,AASE,IATE,CASA,MAAM,EATV,IAAI,CASU,KAAK,CAAC;IAChB,cAAc,EAAE,MAAM;IACtB,OAAO,EAAE,OAAO,GACjB;;AAGH,AAAA,GAAG,CAAC;EACF,WAAW,EAAE,IAAI;EAKjB,QAAQ,EAAE,IAAI;EAEd,WAAW,EAAE,IAAI;EAGjB,SAAS,EAAE,MAAM,GA2BlB;EAtCD,AAaE,GAbC,GAaC,IAAI,CAAC;IACL,OAAO,EAAE,CAAC;IACV,MAAM,EAAE,CAAC;IACT,SAAS,EAAE,IAAI;IACf,UAAU,EAAE,MAAM;IAClB,WAAW,EAAE,GAAG;IAChB,UAAU,EAAE,WAAW;IACvB,MAAM,EAAE,CAAC,GACV;EArBH,AAuBE,GAvBC,CAuBD,IAAI,CAAC;IACH,OAAO,EAAE,YAAY;IACrB,SAAS,EAAE,OAAO;IAElB,QAAQ,EAAE,OAAO;IACjB,WAAW,EAAE,OAAO;IACpB,SAAS,EAAE,MAAM;IACjB,MAAM,EAAE,CAAC,GAEV;EAhCH,AAkCE,GAlCC,CAkCD,IAAI,CAAC,MAAM;EAlCb,GAAG,CAmCD,IAAI,CAAC,KAAK,CAAC;IACT,OAAO,EAAE,MAAM,GAChB;;ACpDH,AAAA,iBAAiB,CAAC;EAChB,QAAQ,EAAE,QAAQ;EAClB,KAAK,EAAE,CAAC;EACR,SAAS,EAAE,MAAM;EACjB,OAAO,EAAE,GAAG;EACZ,UAAU,EAAE,YAAY,GACzB;;AAED,AAAA,KAAK,AAAA,QAAQ,CAAC,KAAK,CAAC,iBAAiB,CAAC;EACpC,OAAO,EAAE,CAAC;EACV,UAAU,EAAE,YAAY,GACzB;;AAED,AAAA,KAAK,AAAA,QAAQ,CAAC;EACZ,QAAQ,EAAE,QAAQ;EAClB,aAAa,EAAE,CAAC,GAqBjB;EAvBD,AAIE,KAJG,AAAA,QAAQ,CAIX,GAAG,CAAC;IACF,aAAa,EAAE,CAAC,GACjB;EANH,AAQE,KARG,AAAA,QAAQ,CAQX,EAAE,EARJ,KAAK,AAAA,QAAQ,CAQP,EAAE,CAAC;IACL,MAAM,EAAE,CAAC,GAIV;IAbH,AAUI,KAVC,AAAA,QAAQ,CAQX,EAAE,CAEA,GAAG,EAVP,KAAK,AAAA,QAAQ,CAQP,EAAE,CAEJ,GAAG,CAAC;MACF,WAAW,EAAE,CAAC,GACf;EAZL,AAeE,KAfG,AAAA,QAAQ,CAeX,EAAE,AAAA,aAAa,CAAC;IACd,UAAU,EAAE,IAAI;IAChB,OAAO,EAAE,GAAG,GACb;;AC/BH,AAAA,GAAG,CAAC;EACF,YAAY,EAAE,IAAI;EAElB,SAAS,EAAE,IAAI;EACf,UAAU,EAAE,WAAW;EACvB,gBAAgB,EAAE,IAAI,GACvB;;ACND,AAAA,EAAE,CAAC;EACD,UAAU,EAAE,WAAW;EAEvB,QAAQ,EAAE,OAAO;EACjB,MAAM,EAAE,CAAC;EAET,QAAQ,EAAE,MAAM;EAEhB,MAAM,EAAE,CAAC;EACT,aAAa,EAAE,cAAc;EAE7B,MAAM,EAAE,GAAG;EACX,OAAO,EAAE,CAAC;EACV,MAAM,EAAE,MAAM;EACd,gBAAgB,EAAE,OAAO;EAGzB,mBAAmB,EAAE,IAAI,GAW1B;EA5BD,AAmBE,EAnBA,EAmBG,MAAM,CAAC;IACR,OAAO,EAAE,KAAK;IACd,OAAO,EAAE,EAAE,GACZ;EAtBH,AAuBE,EAvBA,EAuBG,KAAK,CAAC;IACP,OAAO,EAAE,KAAK;IACd,KAAK,EAAE,IAAI;IACX,OAAO,EAAE,EAAE,GACZ;;AC3BH,AAAA,GAAG,CAAC;EACF,OAAO,EAAE,YAAY;EACrB,OAAO,EAAE,OAAO;EAChB,SAAS,EAAE,IAAI;EACf,WAAW,EAAE,IAAI;EACjB,KAAK,EAAE,IAAI;EACX,cAAc,EAAE,MAAM;EACtB,gBAAgB,EAAE,OAAO;EACzB,MAAM,EAAE,cAAc;EACtB,mBAAmB,EAAE,IAAI;EACzB,aAAa,EAAE,GAAG;EAClB,UAAU,EAAE,mBAAmB,GAChC;;
|
43
|
+
"mappings": "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"
|
44
44
|
}
|
data/app/styles/_search.scss
CHANGED
data/bin/madness
CHANGED
@@ -1,4 +1,13 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
3
|
require 'madness'
|
4
|
-
|
4
|
+
require 'colsole'
|
5
|
+
include Colsole
|
6
|
+
|
7
|
+
begin
|
8
|
+
Madness::CommandLine.instance.execute ARGV
|
9
|
+
rescue => e
|
10
|
+
puts e.backtrace.reverse if ENV['DEBUG']
|
11
|
+
say! "!undred!#{e.class}!txtrst!\n#{e.message}"
|
12
|
+
exit 1
|
13
|
+
end
|
data/lib/madness/breadcrumbs.rb
CHANGED
@@ -1,10 +1,9 @@
|
|
1
1
|
module Madness
|
2
|
-
|
3
2
|
# Handle breadcumbs generation by converting a path to an array
|
4
3
|
# of links
|
5
4
|
class Breadcrumbs
|
6
5
|
using StringRefinements
|
7
|
-
|
6
|
+
|
8
7
|
attr_reader :path
|
9
8
|
|
10
9
|
def initialize(path)
|
@@ -12,13 +11,13 @@ module Madness
|
|
12
11
|
end
|
13
12
|
|
14
13
|
def links
|
15
|
-
path ==
|
14
|
+
path == '' ? [] : breadcrumbs
|
16
15
|
end
|
17
16
|
|
18
17
|
private
|
19
18
|
|
20
|
-
def
|
21
|
-
home = OpenStruct.new({ label:
|
19
|
+
def breadcrumbs
|
20
|
+
home = OpenStruct.new({ label: 'Home', href: '/' })
|
22
21
|
result = breadcrumbs_maker(path).reverse.unshift home
|
23
22
|
result.last.last = true
|
24
23
|
result
|
@@ -26,9 +25,11 @@ module Madness
|
|
26
25
|
|
27
26
|
def breadcrumbs_maker(partial_path)
|
28
27
|
parent, basename = File.split partial_path
|
29
|
-
item = OpenStruct.new(
|
30
|
-
|
31
|
-
|
28
|
+
item = OpenStruct.new(
|
29
|
+
{
|
30
|
+
label: basename.to_label,
|
31
|
+
href: "/#{partial_path}",
|
32
|
+
}
|
32
33
|
)
|
33
34
|
result = [item]
|
34
35
|
result += breadcrumbs_maker parent unless parent == '.'
|
data/lib/madness/browser.rb
CHANGED
@@ -7,14 +7,14 @@ module Madness
|
|
7
7
|
attr_reader :host, :port
|
8
8
|
|
9
9
|
def initialize(host, port)
|
10
|
-
@host
|
10
|
+
@host = host
|
11
|
+
@port = port
|
11
12
|
end
|
12
13
|
|
13
14
|
# Returns a URL based on host, port and MADNESS_FORCE_SSL.
|
14
15
|
def server_url
|
15
|
-
scheme = ENV['MADNESS_FORCE_SSL'] ? 'https' : 'http'
|
16
16
|
url_host = ['0.0.0.0', '127.0.0.1'].include?(host) ? 'localhost' : host
|
17
|
-
"
|
17
|
+
"http://#{url_host}:#{port}"
|
18
18
|
end
|
19
19
|
|
20
20
|
# Returns true if the server is running. Will attempt to connect
|
@@ -52,7 +52,7 @@ module Madness
|
|
52
52
|
|
53
53
|
# Runs the appropriate command (based on OS) to open a browser.
|
54
54
|
def open!
|
55
|
-
system
|
55
|
+
system(*open_command, err: File::NULL, in: File::NULL, out: File::NULL)
|
56
56
|
end
|
57
57
|
|
58
58
|
# Returns the appropriate command (based on OS) to open a browser.
|
data/lib/madness/command_line.rb
CHANGED
@@ -4,16 +4,15 @@ require 'colsole'
|
|
4
4
|
require 'docopt'
|
5
5
|
|
6
6
|
module Madness
|
7
|
-
|
8
7
|
# Handle command line execution. Used by bin/madness.
|
9
8
|
class CommandLine
|
10
9
|
include Singleton
|
11
10
|
include Colsole
|
12
11
|
|
13
12
|
# Process ARGV by putting it through docopt
|
14
|
-
def execute(argv=[])
|
13
|
+
def execute(argv = [])
|
15
14
|
doc = File.read File.expand_path('docopt.txt', __dir__)
|
16
|
-
|
15
|
+
|
17
16
|
begin
|
18
17
|
args = Docopt.docopt(doc, argv: argv, version: VERSION)
|
19
18
|
handle args
|
@@ -49,7 +48,7 @@ module Madness
|
|
49
48
|
# and static files folder.
|
50
49
|
def launch_server
|
51
50
|
unless File.directory? config.path
|
52
|
-
|
51
|
+
$stderr.puts "Invalid path (#{config.path})"
|
53
52
|
return
|
54
53
|
end
|
55
54
|
|
@@ -61,7 +60,7 @@ module Madness
|
|
61
60
|
# Get the arguments as provided by docopt, and set them to our own
|
62
61
|
# config object.
|
63
62
|
def set_config(args)
|
64
|
-
config.path = args['PATH']
|
63
|
+
config.path = args['PATH'] if args['PATH']
|
65
64
|
config.port = args['--port'].to_i if args['--port']
|
66
65
|
config.bind = args['--bind'] if args['--bind']
|
67
66
|
config.toc = args['--toc'] if args['--toc']
|
@@ -74,14 +73,15 @@ module Madness
|
|
74
73
|
config.highlighter = false if args['--no-syntax']
|
75
74
|
config.line_numbers = false if args['--no-line-numbers']
|
76
75
|
config.copy_code = false if args['--no-copy-code']
|
76
|
+
config.shortlinks = true if args['--shortlinks']
|
77
77
|
config.open = true if args['--open']
|
78
|
-
|
78
|
+
|
79
79
|
config.theme = File.expand_path(args['--theme'], config.path) if args['--theme']
|
80
80
|
end
|
81
81
|
|
82
82
|
# Generate index and toc, if requested by the user.
|
83
83
|
def generate_stuff
|
84
|
-
build_toc
|
84
|
+
build_toc if config.toc
|
85
85
|
end
|
86
86
|
|
87
87
|
# Create config
|
@@ -104,7 +104,7 @@ module Madness
|
|
104
104
|
end
|
105
105
|
end
|
106
106
|
|
107
|
-
# Say hello to everybody when the server starts, showing the known
|
107
|
+
# Say hello to everybody when the server starts, showing the known
|
108
108
|
# config.
|
109
109
|
def show_status
|
110
110
|
say_status :start, 'the madness'
|
@@ -114,7 +114,7 @@ module Madness
|
|
114
114
|
say_status :use, config.filename if config.file_exist?
|
115
115
|
say_status :theme, config.theme, :txtblu if config.theme
|
116
116
|
|
117
|
-
say
|
117
|
+
say '-' * 60
|
118
118
|
end
|
119
119
|
|
120
120
|
# Generate the table of contents file
|
data/lib/madness/directory.rb
CHANGED
@@ -9,7 +9,7 @@ module Madness
|
|
9
9
|
def initialize(dir)
|
10
10
|
@dir = dir
|
11
11
|
end
|
12
|
-
|
12
|
+
|
13
13
|
def list
|
14
14
|
@list ||= (dirs + files)
|
15
15
|
end
|
@@ -18,9 +18,8 @@ module Madness
|
|
18
18
|
|
19
19
|
def files
|
20
20
|
result = Dir["#{dir}/#{config.dir_glob}"]
|
21
|
-
result.reject! do |f|
|
22
|
-
|
23
|
-
basename == 'README.md' or basename == 'index.md'
|
21
|
+
result.reject! do |f|
|
22
|
+
['README.md', 'index.md'].include? File.basename(f)
|
24
23
|
end
|
25
24
|
result.nat_sort.map { |path| Item.new path, :file }
|
26
25
|
end
|
@@ -33,9 +32,10 @@ module Madness
|
|
33
32
|
|
34
33
|
def exclude?(path)
|
35
34
|
return false unless config.exclude.is_a? Array
|
35
|
+
|
36
36
|
basename = File.basename path
|
37
37
|
config.exclude.each do |pattern|
|
38
|
-
return true if basename
|
38
|
+
return true if basename&.match?(Regexp.new(pattern))
|
39
39
|
end
|
40
40
|
false
|
41
41
|
end
|
@@ -43,6 +43,5 @@ module Madness
|
|
43
43
|
def config
|
44
44
|
@config ||= Settings.instance
|
45
45
|
end
|
46
|
-
|
47
46
|
end
|
48
47
|
end
|
data/lib/madness/docopt.txt
CHANGED
data/lib/madness/document.rb
CHANGED
@@ -2,7 +2,6 @@ require 'commonmarker'
|
|
2
2
|
require 'coderay'
|
3
3
|
|
4
4
|
module Madness
|
5
|
-
|
6
5
|
# Handle a single markdown document.
|
7
6
|
class Document
|
8
7
|
include ServerHelper
|
@@ -24,7 +23,7 @@ module Madness
|
|
24
23
|
|
25
24
|
# Return the HTML for that document, force re-read.
|
26
25
|
def content!
|
27
|
-
[
|
26
|
+
%i[empty missing].include?(type) ? "<h1>#{title}</h1>" : markdown_to_html
|
28
27
|
end
|
29
28
|
|
30
29
|
private
|
@@ -66,7 +65,13 @@ module Madness
|
|
66
65
|
end
|
67
66
|
|
68
67
|
def markdown
|
69
|
-
@markdown ||=
|
68
|
+
@markdown ||= pre_process_markdown
|
69
|
+
end
|
70
|
+
|
71
|
+
def pre_process_markdown
|
72
|
+
result = File.read file
|
73
|
+
result = evaluate_shortlinks result if config.shortlinks
|
74
|
+
result
|
70
75
|
end
|
71
76
|
|
72
77
|
def doc
|
@@ -93,7 +98,7 @@ module Madness
|
|
93
98
|
anchor = CommonMarker::Node.new(:inline_html)
|
94
99
|
|
95
100
|
next unless node.first_child.type == :text
|
96
|
-
|
101
|
+
|
97
102
|
anchor_id = node.first_child.string_content.to_slug
|
98
103
|
anchor.string_content = "<a id='#{anchor_id}'></a>"
|
99
104
|
node.prepend_child anchor
|
@@ -104,13 +109,18 @@ module Madness
|
|
104
109
|
# Replace <!-- TOC --> with a Table of Contents for the page
|
105
110
|
def replace_toc_marker
|
106
111
|
toc_marker = doc.find do |node|
|
107
|
-
node.type == :html and node.string_content.include?
|
112
|
+
node.type == :html and node.string_content.include? '<!-- TOC -->'
|
108
113
|
end
|
109
114
|
|
110
115
|
return unless toc_marker
|
111
116
|
|
112
117
|
toc_marker.insert_after document_toc
|
113
|
-
toc_marker.insert_after CommonMarker.render_doc(
|
118
|
+
toc_marker.insert_after CommonMarker.render_doc('## Table of Contents').first_child
|
119
|
+
end
|
120
|
+
|
121
|
+
# Replace [[link]] with [link](link)
|
122
|
+
def evaluate_shortlinks(raw)
|
123
|
+
raw.gsub(/\[\[([^\]]+)\]\]/) { "[#{$1}](#{$1.to_href})" }
|
114
124
|
end
|
115
125
|
|
116
126
|
# Returns a UL object containing the document table of contents
|
@@ -118,10 +128,12 @@ module Madness
|
|
118
128
|
toc = []
|
119
129
|
doc.walk do |node|
|
120
130
|
next unless node.type == :header
|
131
|
+
|
121
132
|
level = node.header_level
|
122
133
|
next unless level.between? 2, 3
|
134
|
+
|
123
135
|
text = node.first_child.string_content
|
124
|
-
spacer =
|
136
|
+
spacer = ' ' * (level - 1)
|
125
137
|
toc << "#{spacer}- [#{text}](##{text.to_slug})"
|
126
138
|
end
|
127
139
|
|
@@ -132,7 +144,8 @@ module Madness
|
|
132
144
|
# If the document does not start with an H1 tag, add it.
|
133
145
|
def prepend_h1
|
134
146
|
return unless doc.first_child
|
135
|
-
return if doc.first_child.type == :header
|
147
|
+
return if (doc.first_child.type == :header) && (doc.first_child.header_level == 1)
|
148
|
+
|
136
149
|
h1 = CommonMarker.render_doc("# #{title}").first_child
|
137
150
|
doc.first_child.insert_before h1
|
138
151
|
end
|
@@ -148,8 +161,9 @@ module Madness
|
|
148
161
|
def syntax_highlight(html)
|
149
162
|
line_numbers = config.line_numbers ? :table : nil
|
150
163
|
opts = { css: :style, wrap: nil, line_numbers: line_numbers }
|
151
|
-
html.gsub(
|
152
|
-
lang
|
164
|
+
html.gsub(%r{<code class="language-(.+?)">(.+?)</code>}m) do
|
165
|
+
lang = $1
|
166
|
+
code = $2
|
153
167
|
code = CGI.unescapeHTML code
|
154
168
|
CodeRay.scan(code, lang).html opts
|
155
169
|
end
|
@@ -164,4 +178,3 @@ module Madness
|
|
164
178
|
end
|
165
179
|
end
|
166
180
|
end
|
167
|
-
|
data/lib/madness/item.rb
CHANGED
data/lib/madness/navigation.rb
CHANGED
@@ -15,7 +15,7 @@ module Madness
|
|
15
15
|
end
|
16
16
|
|
17
17
|
def caption
|
18
|
-
@caption ||= (dir == docroot ?
|
18
|
+
@caption ||= (dir == docroot ? 'Index' : File.basename(dir).to_label)
|
19
19
|
end
|
20
20
|
|
21
21
|
def with_search?
|
@@ -28,4 +28,4 @@ module Madness
|
|
28
28
|
@directory ||= Directory.new(dir)
|
29
29
|
end
|
30
30
|
end
|
31
|
-
end
|
31
|
+
end
|
@@ -12,14 +12,14 @@ module Madness
|
|
12
12
|
end
|
13
13
|
|
14
14
|
def to_slug
|
15
|
-
downcase.strip.
|
15
|
+
downcase.strip.tr(' ', '-').remove(/[^\w-]/)
|
16
16
|
end
|
17
17
|
|
18
18
|
# This is here so we can have one place that defines how to convert
|
19
19
|
# a string (usually a filename without .md extension, or a folder name)
|
20
20
|
# to a label.
|
21
21
|
# It is used by different navigation elements in madness, and ucrrently
|
22
|
-
# just removes any numbers followed by a dot at the beginning of the
|
22
|
+
# just removes any numbers followed by a dot at the beginning of the
|
23
23
|
# string, in order to allow "The Invisible Sorting Hand".
|
24
24
|
def to_label
|
25
25
|
remove(/^\d+\.\s+/).remove(/\.md$/)
|
data/lib/madness/search.rb
CHANGED
@@ -5,7 +5,7 @@ module Madness
|
|
5
5
|
include ServerHelper
|
6
6
|
using StringRefinements
|
7
7
|
|
8
|
-
def initialize(path=nil)
|
8
|
+
def initialize(path = nil)
|
9
9
|
@path = path || docroot
|
10
10
|
end
|
11
11
|
|
@@ -27,7 +27,8 @@ module Madness
|
|
27
27
|
found = 0
|
28
28
|
words.each { |word| found += 1 if content.include? word }
|
29
29
|
next unless found == word_count
|
30
|
-
|
30
|
+
|
31
|
+
result[label] = url
|
31
32
|
end
|
32
33
|
|
33
34
|
result
|
@@ -40,6 +41,7 @@ module Madness
|
|
40
41
|
|
41
42
|
Dir["#{@path}/**/#{config.dir_glob}"].sort.each do |file|
|
42
43
|
next if skip_index? file
|
44
|
+
|
43
45
|
filename = file_url(file.sub("#{@path}/", '')).downcase
|
44
46
|
index_content = File.extname(file) == '.md'
|
45
47
|
content = index_content ? File.read(file).downcase : ''
|
@@ -49,7 +51,7 @@ module Madness
|
|
49
51
|
end
|
50
52
|
|
51
53
|
# We are going to avoid indexing of README.md when there is also an
|
52
|
-
# index.md in the same directory, to keep behavior consistent with the
|
54
|
+
# index.md in the same directory, to keep behavior consistent with the
|
53
55
|
# display logic
|
54
56
|
def skip_index?(file)
|
55
57
|
if file.end_with? 'README.md'
|
@@ -62,9 +64,9 @@ module Madness
|
|
62
64
|
|
63
65
|
def file_label(filename)
|
64
66
|
filename
|
65
|
-
.remove(
|
67
|
+
.remove(%r{/(index|README)$})
|
66
68
|
.split('/')
|
67
|
-
.map
|
69
|
+
.map(&:to_label)
|
68
70
|
.join(' / ')
|
69
71
|
end
|
70
72
|
|
@@ -73,7 +75,7 @@ module Madness
|
|
73
75
|
end
|
74
76
|
|
75
77
|
def file_url(filename)
|
76
|
-
filename.remove(
|
78
|
+
filename.remove(%r{/(index|README)$})
|
77
79
|
end
|
78
80
|
end
|
79
81
|
end
|
data/lib/madness/server.rb
CHANGED
@@ -1,7 +1,6 @@
|
|
1
1
|
require 'madness/server_base'
|
2
2
|
|
3
3
|
module Madness
|
4
|
-
|
5
4
|
# The Sinatra server
|
6
5
|
class Server < ServerBase
|
7
6
|
using StringRefinements
|
@@ -11,8 +10,8 @@ module Madness
|
|
11
10
|
results = query ? Search.new.search(query) : false
|
12
11
|
nav = Navigation.new docroot
|
13
12
|
slim :search, locals: {
|
14
|
-
nav:
|
15
|
-
results: results
|
13
|
+
nav: nav,
|
14
|
+
results: results,
|
16
15
|
}
|
17
16
|
end
|
18
17
|
|
@@ -23,27 +22,27 @@ module Madness
|
|
23
22
|
dir = doc.dir
|
24
23
|
content = doc.content
|
25
24
|
|
26
|
-
if doc.type == :readme
|
25
|
+
if (doc.type == :readme) && !path.empty? && (path[-1] != '/')
|
27
26
|
redirect "#{path.to_href}/"
|
28
27
|
end
|
29
28
|
|
30
29
|
nav = Navigation.new dir
|
31
30
|
breadcrumbs = Breadcrumbs.new(path).links
|
32
31
|
|
33
|
-
if nav.links.count == 1
|
32
|
+
if (nav.links.count == 1) && (doc.type == :empty)
|
34
33
|
redirect to(nav.links.first.href)
|
35
34
|
end
|
36
35
|
|
37
36
|
status 404 if doc.type == :missing
|
38
37
|
|
39
|
-
slim :document, locals: {
|
40
|
-
content:
|
41
|
-
type:
|
42
|
-
title:
|
43
|
-
file:
|
44
|
-
nav:
|
45
|
-
breadcrumbs: breadcrumbs
|
38
|
+
slim :document, locals: {
|
39
|
+
content: content,
|
40
|
+
type: doc.type,
|
41
|
+
title: doc.title,
|
42
|
+
file: doc.file,
|
43
|
+
nav: nav,
|
44
|
+
breadcrumbs: breadcrumbs,
|
46
45
|
}
|
47
46
|
end
|
48
47
|
end
|
49
|
-
end
|
48
|
+
end
|
data/lib/madness/server_base.rb
CHANGED
@@ -1,10 +1,8 @@
|
|
1
1
|
# require 'sinatra/reloader'
|
2
|
-
require 'rack/ssl'
|
3
2
|
require 'sinatra/base'
|
4
3
|
require 'slim'
|
5
4
|
|
6
5
|
module Madness
|
7
|
-
|
8
6
|
# The base class for the sinatra server.
|
9
7
|
# Initialize what we can here, but since there are values that will
|
10
8
|
# become known only later, the #prepare method is provided.
|
@@ -12,7 +10,6 @@ module Madness
|
|
12
10
|
helpers ServerHelper
|
13
11
|
|
14
12
|
Slim::Engine.set_options pretty: true
|
15
|
-
use Rack::SSL if ENV['MADNESS_FORCE_SSL']
|
16
13
|
set :root, File.expand_path('../../', __dir__)
|
17
14
|
set :environment, ENV['MADNESS_ENV'] || :production
|
18
15
|
set :server, :puma
|
@@ -33,7 +30,7 @@ module Madness
|
|
33
30
|
|
34
31
|
def self.set_tempalate_locations
|
35
32
|
theme = Theme.new config.theme
|
36
|
-
|
33
|
+
|
37
34
|
set :views, theme.views_path
|
38
35
|
set :public_folder, theme.public_path
|
39
36
|
end
|
@@ -48,5 +45,4 @@ module Madness
|
|
48
45
|
Settings.instance
|
49
46
|
end
|
50
47
|
end
|
51
|
-
|
52
48
|
end
|
@@ -1,9 +1,8 @@
|
|
1
1
|
module Madness
|
2
|
-
|
3
2
|
# All the methods that we may need inside of any server route.
|
4
3
|
# The module can also be included manually anywhere else.
|
5
4
|
module ServerHelper
|
6
|
-
def config
|
5
|
+
def config
|
7
6
|
@config ||= Settings.instance
|
8
7
|
end
|
9
8
|
|
@@ -12,11 +11,11 @@ module Madness
|
|
12
11
|
end
|
13
12
|
|
14
13
|
def log(obj)
|
15
|
-
|
16
|
-
open('madness.log', 'a')
|
14
|
+
# :nocov:
|
15
|
+
open('madness.log', 'a') do |f|
|
17
16
|
f.puts obj.inspect
|
18
|
-
|
19
|
-
|
17
|
+
end
|
18
|
+
# :nocov:
|
20
19
|
end
|
21
20
|
end
|
22
|
-
end
|
21
|
+
end
|
data/lib/madness/settings.rb
CHANGED
@@ -2,7 +2,6 @@ require 'singleton'
|
|
2
2
|
require 'extended_yaml'
|
3
3
|
|
4
4
|
module Madness
|
5
|
-
|
6
5
|
# Handle the configuration options
|
7
6
|
# Each configuration option has three sources
|
8
7
|
# 1. The default value
|
@@ -18,7 +17,7 @@ module Madness
|
|
18
17
|
|
19
18
|
def method_missing(name, *args, &_blk)
|
20
19
|
name_string = name.to_s
|
21
|
-
|
20
|
+
|
22
21
|
if name_string.end_with? '='
|
23
22
|
data[name_string.chop.to_sym] = args.first
|
24
23
|
else
|
@@ -26,7 +25,11 @@ module Madness
|
|
26
25
|
end
|
27
26
|
end
|
28
27
|
|
29
|
-
|
28
|
+
def respond_to_missing?(*_args)
|
29
|
+
true
|
30
|
+
end
|
31
|
+
|
32
|
+
# Force reload of the config file, set defaults, and then read from
|
30
33
|
# file.
|
31
34
|
def reset
|
32
35
|
@data = nil
|
@@ -41,29 +44,30 @@ module Madness
|
|
41
44
|
end
|
42
45
|
|
43
46
|
def dir_glob
|
44
|
-
data[:expose_extensions] ? "*.{md,#{data[:expose_extensions].delete(' ')}}" :
|
47
|
+
data[:expose_extensions] ? "*.{md,#{data[:expose_extensions].delete(' ')}}" : '*.md'
|
45
48
|
end
|
46
49
|
|
47
50
|
private
|
48
51
|
|
49
52
|
def defaults
|
50
53
|
{
|
51
|
-
path:
|
52
|
-
port:
|
53
|
-
bind:
|
54
|
-
sidebar:
|
55
|
-
auto_h1:
|
56
|
-
auto_nav:
|
57
|
-
highlighter:
|
58
|
-
line_numbers:
|
59
|
-
copy_code:
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
54
|
+
path: '.',
|
55
|
+
port: 3000,
|
56
|
+
bind: '0.0.0.0',
|
57
|
+
sidebar: true,
|
58
|
+
auto_h1: true,
|
59
|
+
auto_nav: true,
|
60
|
+
highlighter: true,
|
61
|
+
line_numbers: true,
|
62
|
+
copy_code: true,
|
63
|
+
shortlinks: false,
|
64
|
+
toc: nil,
|
65
|
+
theme: nil,
|
66
|
+
open: false,
|
67
|
+
auth: false,
|
68
|
+
auth_realm: 'Madness',
|
65
69
|
expose_extensions: nil,
|
66
|
-
exclude:
|
70
|
+
exclude: [/^[a-z_\-0-9]+$/],
|
67
71
|
}
|
68
72
|
end
|
69
73
|
|
@@ -77,9 +81,8 @@ module Madness
|
|
77
81
|
else
|
78
82
|
{}
|
79
83
|
end
|
80
|
-
|
84
|
+
|
81
85
|
result || {}
|
82
86
|
end
|
83
|
-
|
84
87
|
end
|
85
|
-
end
|
88
|
+
end
|
data/lib/madness/static.rb
CHANGED
@@ -1,6 +1,5 @@
|
|
1
1
|
module Madness
|
2
|
-
|
3
|
-
# The Madness::Static middleware delegates requests to
|
2
|
+
# The Madness::Static middleware delegates requests to
|
4
3
|
# Rack::Static middleware unless the request URI ends with .md
|
5
4
|
class Static
|
6
5
|
def initialize(app, options)
|
@@ -9,7 +8,7 @@ module Madness
|
|
9
8
|
end
|
10
9
|
|
11
10
|
def call(env)
|
12
|
-
if env['PATH_INFO'].end_with?
|
11
|
+
if env['PATH_INFO'].end_with? '.md'
|
13
12
|
@app.call env
|
14
13
|
else
|
15
14
|
@static.call env
|
@@ -10,7 +10,7 @@ module Madness
|
|
10
10
|
end
|
11
11
|
|
12
12
|
def build(file)
|
13
|
-
file +=
|
13
|
+
file += '.md' unless file.end_with? '.md'
|
14
14
|
File.write "#{dir}/#{file}", toc
|
15
15
|
end
|
16
16
|
|
@@ -25,10 +25,11 @@ module Madness
|
|
25
25
|
|
26
26
|
result = []
|
27
27
|
list.each do |item|
|
28
|
-
|
28
|
+
case item.type
|
29
|
+
when :dir
|
29
30
|
result.push "#{' ' * indent}1. #{make_link item}"
|
30
|
-
result += toc! item.path, indent+4
|
31
|
-
|
31
|
+
result += toc! item.path, indent + 4
|
32
|
+
when :file
|
32
33
|
result.push "#{' ' * indent}1. #{make_link item}"
|
33
34
|
end
|
34
35
|
end
|
@@ -39,4 +40,4 @@ module Madness
|
|
39
40
|
"[#{item.label}](#{item.href})"
|
40
41
|
end
|
41
42
|
end
|
42
|
-
end
|
43
|
+
end
|
@@ -29,6 +29,9 @@ line_numbers: true
|
|
29
29
|
# enable the copy to clipboard icon for code snippets
|
30
30
|
copy_code: true
|
31
31
|
|
32
|
+
# convert [[Links]] to [Links](Links)
|
33
|
+
shortlinks: false
|
34
|
+
|
32
35
|
# generate a table of contents file with this name, for example:
|
33
36
|
# toc: Table of Contents
|
34
37
|
toc: ~
|
data/lib/madness/theme.rb
CHANGED
data/lib/madness/version.rb
CHANGED
data/lib/madness.rb
CHANGED
metadata
CHANGED
@@ -1,15 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: madness
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.
|
4
|
+
version: 0.9.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Danny Ben Shitrit
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-12-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: addressable
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '2.7'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '2.7'
|
13
27
|
- !ruby/object:Gem::Dependency
|
14
28
|
name: coderay
|
15
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -73,61 +87,61 @@ dependencies:
|
|
73
87
|
- !ruby/object:Gem::Version
|
74
88
|
version: '0.6'
|
75
89
|
- !ruby/object:Gem::Dependency
|
76
|
-
name:
|
90
|
+
name: extended_yaml
|
77
91
|
requirement: !ruby/object:Gem::Requirement
|
78
92
|
requirements:
|
79
93
|
- - "~>"
|
80
94
|
- !ruby/object:Gem::Version
|
81
|
-
version: '
|
95
|
+
version: '0.2'
|
82
96
|
type: :runtime
|
83
97
|
prerelease: false
|
84
98
|
version_requirements: !ruby/object:Gem::Requirement
|
85
99
|
requirements:
|
86
100
|
- - "~>"
|
87
101
|
- !ruby/object:Gem::Version
|
88
|
-
version: '
|
102
|
+
version: '0.2'
|
89
103
|
- !ruby/object:Gem::Dependency
|
90
|
-
name:
|
104
|
+
name: naturally
|
91
105
|
requirement: !ruby/object:Gem::Requirement
|
92
106
|
requirements:
|
93
107
|
- - "~>"
|
94
108
|
- !ruby/object:Gem::Version
|
95
|
-
version: '
|
109
|
+
version: '2.2'
|
96
110
|
type: :runtime
|
97
111
|
prerelease: false
|
98
112
|
version_requirements: !ruby/object:Gem::Requirement
|
99
113
|
requirements:
|
100
114
|
- - "~>"
|
101
115
|
- !ruby/object:Gem::Version
|
102
|
-
version: '
|
116
|
+
version: '2.2'
|
103
117
|
- !ruby/object:Gem::Dependency
|
104
|
-
name:
|
118
|
+
name: os
|
105
119
|
requirement: !ruby/object:Gem::Requirement
|
106
120
|
requirements:
|
107
121
|
- - "~>"
|
108
122
|
- !ruby/object:Gem::Version
|
109
|
-
version: '
|
123
|
+
version: '1.0'
|
110
124
|
type: :runtime
|
111
125
|
prerelease: false
|
112
126
|
version_requirements: !ruby/object:Gem::Requirement
|
113
127
|
requirements:
|
114
128
|
- - "~>"
|
115
129
|
- !ruby/object:Gem::Version
|
116
|
-
version: '
|
130
|
+
version: '1.0'
|
117
131
|
- !ruby/object:Gem::Dependency
|
118
|
-
name:
|
132
|
+
name: puma
|
119
133
|
requirement: !ruby/object:Gem::Requirement
|
120
134
|
requirements:
|
121
|
-
- - "
|
135
|
+
- - ">="
|
122
136
|
- !ruby/object:Gem::Version
|
123
|
-
version: '1
|
137
|
+
version: '5.1'
|
124
138
|
type: :runtime
|
125
139
|
prerelease: false
|
126
140
|
version_requirements: !ruby/object:Gem::Requirement
|
127
141
|
requirements:
|
128
|
-
- - "
|
142
|
+
- - ">="
|
129
143
|
- !ruby/object:Gem::Version
|
130
|
-
version: '1
|
144
|
+
version: '5.1'
|
131
145
|
- !ruby/object:Gem::Dependency
|
132
146
|
name: requires
|
133
147
|
requirement: !ruby/object:Gem::Requirement
|
@@ -148,20 +162,14 @@ dependencies:
|
|
148
162
|
requirements:
|
149
163
|
- - "~>"
|
150
164
|
- !ruby/object:Gem::Version
|
151
|
-
version: '
|
152
|
-
- - ">="
|
153
|
-
- !ruby/object:Gem::Version
|
154
|
-
version: 2.0.5
|
165
|
+
version: '3.0'
|
155
166
|
type: :runtime
|
156
167
|
prerelease: false
|
157
168
|
version_requirements: !ruby/object:Gem::Requirement
|
158
169
|
requirements:
|
159
170
|
- - "~>"
|
160
171
|
- !ruby/object:Gem::Version
|
161
|
-
version: '
|
162
|
-
- - ">="
|
163
|
-
- !ruby/object:Gem::Version
|
164
|
-
version: 2.0.5
|
172
|
+
version: '3.0'
|
165
173
|
- !ruby/object:Gem::Dependency
|
166
174
|
name: slim
|
167
175
|
requirement: !ruby/object:Gem::Requirement
|
@@ -176,34 +184,6 @@ dependencies:
|
|
176
184
|
- - "~>"
|
177
185
|
- !ruby/object:Gem::Version
|
178
186
|
version: '4.0'
|
179
|
-
- !ruby/object:Gem::Dependency
|
180
|
-
name: extended_yaml
|
181
|
-
requirement: !ruby/object:Gem::Requirement
|
182
|
-
requirements:
|
183
|
-
- - "~>"
|
184
|
-
- !ruby/object:Gem::Version
|
185
|
-
version: '0.2'
|
186
|
-
type: :runtime
|
187
|
-
prerelease: false
|
188
|
-
version_requirements: !ruby/object:Gem::Requirement
|
189
|
-
requirements:
|
190
|
-
- - "~>"
|
191
|
-
- !ruby/object:Gem::Version
|
192
|
-
version: '0.2'
|
193
|
-
- !ruby/object:Gem::Dependency
|
194
|
-
name: addressable
|
195
|
-
requirement: !ruby/object:Gem::Requirement
|
196
|
-
requirements:
|
197
|
-
- - "~>"
|
198
|
-
- !ruby/object:Gem::Version
|
199
|
-
version: '2.7'
|
200
|
-
type: :runtime
|
201
|
-
prerelease: false
|
202
|
-
version_requirements: !ruby/object:Gem::Requirement
|
203
|
-
requirements:
|
204
|
-
- - "~>"
|
205
|
-
- !ruby/object:Gem::Version
|
206
|
-
version: '2.7'
|
207
187
|
description: Start a markdown server in any directory
|
208
188
|
email: db@dannyben.com
|
209
189
|
executables:
|
@@ -278,6 +258,7 @@ metadata:
|
|
278
258
|
changelog_uri: https://github.com/DannyBen/madness/blob/master/CHANGELOG.md
|
279
259
|
homepage_uri: https://madness.dannyb.co/
|
280
260
|
source_code_uri: https://github.com/DannyBen/madness
|
261
|
+
rubygems_mfa_required: 'true'
|
281
262
|
post_install_message:
|
282
263
|
rdoc_options: []
|
283
264
|
require_paths:
|
@@ -293,7 +274,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
293
274
|
- !ruby/object:Gem::Version
|
294
275
|
version: '0'
|
295
276
|
requirements: []
|
296
|
-
rubygems_version: 3.3.
|
277
|
+
rubygems_version: 3.3.26
|
297
278
|
signing_key:
|
298
279
|
specification_version: 4
|
299
280
|
summary: Instant Markdown Server
|