Skip to content

Commit f543d70

Browse files
committed
Slugify and add id to headings in pages content
1 parent 6cf81f2 commit f543d70

File tree

1 file changed

+15
-2
lines changed

1 file changed

+15
-2
lines changed

bolt-pages/bolt/pages/markdown.py

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,31 @@
33
from pygments.formatters import html
44
from pygments.lexers import get_lexer_by_name
55

6+
from bolt.utils.text import slugify
7+
8+
9+
class PagesRenderer(mistune.HTMLRenderer):
10+
def heading(self, text, level, **attrs):
11+
"""Automatically add an ID to headings if one is not provided."""
12+
13+
if "id" not in attrs:
14+
attrs["id"] = slugify(text)
15+
16+
return super().heading(text, level, **attrs)
617

7-
class HighlightRenderer(mistune.HTMLRenderer):
818
def block_code(self, code, info=None):
19+
"""Highlight code blocks using Pygments."""
20+
921
if info:
1022
lexer = get_lexer_by_name(info, stripall=True)
1123
formatter = html.HtmlFormatter()
1224
return highlight(code, lexer, formatter)
25+
1326
return "<pre><code>" + mistune.escape(code) + "</code></pre>"
1427

1528

1629
def render_markdown(content):
17-
renderer = HighlightRenderer(escape=False)
30+
renderer = PagesRenderer(escape=False)
1831
markdown = mistune.create_markdown(
1932
renderer=renderer, plugins=["strikethrough", "table"]
2033
)

0 commit comments

Comments
 (0)