madness 0.9.6 → 0.9.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +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": "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
|
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
|