madness 1.2.2 → 1.2.3
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 +26 -2
- data/lib/madness/inline_table_of_contents.rb +1 -3
- data/lib/madness/refinements/string_refinements.rb +8 -2
- data/lib/madness/rendering/pandoc.rb +7 -0
- data/lib/madness/rendering/redcarpet.rb +5 -1
- data/lib/madness/rendering/redcarpet_custom.rb +18 -0
- data/lib/madness/version.rb +1 -1
- metadata +4 -4
- data/lib/madness/rendering/redcarpet_highlighter.rb +0 -10
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e77780c419cafb7b6fe014a7005c042e2de0dbbb2c3841767366a143d9112f76
|
4
|
+
data.tar.gz: 13858b4be4a5aa42d30d0051b16a223bd7f7290156daed3ef7bebe0a515ec7c9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 99a6096ea3cc8e18182ea4b1a56148164b5efb10301d276ea2e45b3cf94bfb433514c153b23054f69af90129ae96879ce032b90b6e9d23aa9ee853c0cbc37986
|
7
|
+
data.tar.gz: 9508cdc8ec2f4821e9e1fca96570eaf53e10b7cfd3ef6580801f4f62cf12bb506a0cb0ab6c67256c3110aade725487592c8d1bc4f9bc360393f274b8dbc26433
|
data/README.md
CHANGED
@@ -267,8 +267,32 @@ file or a directory in the same directory as the file itself.
|
|
267
267
|
|
268
268
|
### Mermaid Diagrams and Charts
|
269
269
|
|
270
|
-
When the `mermaid` option is enabled, you
|
271
|
-
|
270
|
+
When the `mermaid` option is enabled, you can embed Mermaid diagrams in your
|
271
|
+
document using either of the following methods:
|
272
|
+
|
273
|
+
1. **Using a `<div>` block with `mermaid` class**:
|
274
|
+
|
275
|
+
```html
|
276
|
+
<div class="mermaid">
|
277
|
+
graph TD;
|
278
|
+
A-->B;
|
279
|
+
A-->C;
|
280
|
+
B-->D;
|
281
|
+
C-->D;
|
282
|
+
</div>
|
283
|
+
```
|
284
|
+
|
285
|
+
2. **Using a code fence with `mermaid` language specifier**:
|
286
|
+
|
287
|
+
````markdown
|
288
|
+
```mermaid
|
289
|
+
graph TD;
|
290
|
+
A-->B;
|
291
|
+
A-->C;
|
292
|
+
B-->D;
|
293
|
+
C-->D;
|
294
|
+
```
|
295
|
+
````
|
272
296
|
|
273
297
|
### Table of Contents Generation
|
274
298
|
|
@@ -36,10 +36,8 @@ module Madness
|
|
36
36
|
level = matches[:level].size - 2
|
37
37
|
|
38
38
|
spacer = ' ' * level
|
39
|
-
slug = text.to_slug
|
39
|
+
slug = text.to_slug config.renderer
|
40
40
|
|
41
|
-
# pandoc removes leading numbers and dots from header slugs, we do the same
|
42
|
-
slug = slug.remove(/^[\d\-]+/) if config.renderer == 'pandoc'
|
43
41
|
"#{spacer}- [#{text}](##{slug})"
|
44
42
|
end
|
45
43
|
|
@@ -11,8 +11,14 @@ module Madness
|
|
11
11
|
Addressable::URI.escape self
|
12
12
|
end
|
13
13
|
|
14
|
-
def to_slug
|
15
|
-
downcase.strip
|
14
|
+
def to_slug(renderer = nil)
|
15
|
+
result = downcase.strip
|
16
|
+
|
17
|
+
if renderer == 'pandoc'
|
18
|
+
result.remove(/[^a-z0-9 ]/).tr(' ', '-')
|
19
|
+
else
|
20
|
+
result.gsub(/[^[:alnum:]]/, '-').squeeze('-').remove(/(^-|-$)/)
|
21
|
+
end
|
16
22
|
end
|
17
23
|
|
18
24
|
# This is here so we can have one place that defines how to convert
|
@@ -6,6 +6,7 @@ module Madness
|
|
6
6
|
include ServerHelper
|
7
7
|
|
8
8
|
def render(text)
|
9
|
+
text = process_mermaid_blocks text if config.mermaid
|
9
10
|
PandocRuby.new(text, [{ from: :gfm, to: :html }], *options).convert
|
10
11
|
end
|
11
12
|
|
@@ -14,6 +15,12 @@ module Madness
|
|
14
15
|
def options
|
15
16
|
@options ||= config.highlighter ? [] : :no_highlight
|
16
17
|
end
|
18
|
+
|
19
|
+
def process_mermaid_blocks(text)
|
20
|
+
text.gsub(/```mermaid\s+(.+?)\s+```/m) do
|
21
|
+
"<div class='mermaid'>#{$1.strip}</div>"
|
22
|
+
end
|
23
|
+
end
|
17
24
|
end
|
18
25
|
end
|
19
26
|
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'redcarpet'
|
2
|
+
require 'rouge'
|
3
|
+
require 'rouge/plugins/redcarpet'
|
4
|
+
|
5
|
+
module Madness
|
6
|
+
# Renderer with syntax highlighting support
|
7
|
+
class CustomRenderer < Redcarpet::Render::HTML
|
8
|
+
include Rouge::Plugins::Redcarpet
|
9
|
+
|
10
|
+
def block_code(code, language)
|
11
|
+
if language == 'mermaid'
|
12
|
+
"<div class='mermaid'>#{code}</div>"
|
13
|
+
else
|
14
|
+
super
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
data/lib/madness/version.rb
CHANGED
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: madness
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.
|
4
|
+
version: 1.2.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Danny Ben Shitrit
|
8
8
|
bindir: bin
|
9
9
|
cert_chain: []
|
10
|
-
date: 2025-
|
10
|
+
date: 2025-03-21 00:00:00.000000000 Z
|
11
11
|
dependencies:
|
12
12
|
- !ruby/object:Gem::Dependency
|
13
13
|
name: addressable
|
@@ -294,7 +294,7 @@ files:
|
|
294
294
|
- lib/madness/rendering/handler.rb
|
295
295
|
- lib/madness/rendering/pandoc.rb
|
296
296
|
- lib/madness/rendering/redcarpet.rb
|
297
|
-
- lib/madness/rendering/
|
297
|
+
- lib/madness/rendering/redcarpet_custom.rb
|
298
298
|
- lib/madness/search.rb
|
299
299
|
- lib/madness/server.rb
|
300
300
|
- lib/madness/server_base.rb
|
@@ -327,7 +327,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
327
327
|
- !ruby/object:Gem::Version
|
328
328
|
version: '0'
|
329
329
|
requirements: []
|
330
|
-
rubygems_version: 3.6.
|
330
|
+
rubygems_version: 3.6.3
|
331
331
|
specification_version: 4
|
332
332
|
summary: Instant Markdown Server
|
333
333
|
test_files: []
|