Pi66

merodi
A markdown-based static site generator.
git clone https://git.pi66.xyz/merodi

← back to log

fix: escape code blocks with raw tags instead of manual char replacement

author: pi66
date: 2026-06-27 18:23
hash: 2dc00ecbc22df248d60f92f06e52bb2c75696040

Diffstat:

M

src/build.py
7 +++++++++++++++++++++---------
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
diff --git a/src/build.py b/src/build.py
index 108a34f..995d79b 100644
--- a/src/build.py
+++ b/src/build.py
@@ -72,8 +72,11 @@ def jinja_handler(file, html_content, config=None):

 def escape_code_blocks(md_content: str) -> str:
     def wrap(m):
-        return m.group(0).replace("{", "{{ '{' }}")
-    return re.sub(r'`+[\s\S]*?`+', wrap, md_content)
+        return "\n{% raw %}\n" + m.group(0) + "\n{% endraw %}\n"
+
+    md_content = re.sub(r'`{3}[\s\S]*?`{3}', wrap, md_content)  # fenced ```
+    md_content = re.sub(r'`[^`\n]+`', wrap, md_content)          # inline `
+    return md_content

 def save_html(html_content:str, html_dest:str):
     makedirs( dirname( abspath(html_dest)), exist_ok=True )