merodi
A markdown-based static site generator.
git clone https://git.pi66.xyz/merodi
About | Files | Commits | Refs | License
fix: preserve plain Markdown paragraphs
Author: pi66
Date: 2026-09-10 22:35
commit: 4990931f
Only clean paragraphs that contain a `{%` Jinja line. Leave normal Markdown untouched so inline Markdown and HTML are preserved correctly.
Stat
| M | src/core/build/compile/jinja.go | 18 | +11 | -7 |
Diff
diff --git a/src/core/build/compile/jinja.go b/src/core/build/compile/jinja.go
index 6859023..12731a3 100644
--- a/src/core/build/compile/jinja.go
+++ b/src/core/build/compile/jinja.go
@@ -32,26 +32,30 @@ func (self *JinjaEngine) CleanJinja(source []byte, doc ast.Node) ast.Node {
next := child.NextSibling()
if paragraph, ok := child.(*ast.Paragraph); ok {
lines := paragraph.Lines()
+ hasJinja := false
for i := 0; i < lines.Len(); i++ {
segment := lines.At(i)
if strings.HasPrefix(strings.ReplaceAll(string(segment.Value(source)), " ", ""), "{%") {
+ hasJinja = true
+ break
+ }
+ }
+
+ if hasJinja {
+ for i := 0; i < lines.Len(); i++ {
+ segment := lines.At(i)
...
Show all
Show less
diff --git a/src/core/build/compile/jinja.go b/src/core/build/compile/jinja.go
index 6859023..12731a3 100644
--- a/src/core/build/compile/jinja.go
+++ b/src/core/build/compile/jinja.go
@@ -32,26 +32,30 @@ func (self *JinjaEngine) CleanJinja(source []byte, doc ast.Node) ast.Node {
next := child.NextSibling()
if paragraph, ok := child.(*ast.Paragraph); ok {
lines := paragraph.Lines()
+ hasJinja := false
for i := 0; i < lines.Len(); i++ {
segment := lines.At(i)
if strings.HasPrefix(strings.ReplaceAll(string(segment.Value(source)), " ", ""), "{%") {
+ hasJinja = true
+ break
+ }
+ }
+
+ if hasJinja {
+ for i := 0; i < lines.Len(); i++ {
+ segment := lines.At(i)
...
diff --git a/src/core/build/compile/jinja.go b/src/core/build/compile/jinja.go
index 6859023..12731a3 100644
--- a/src/core/build/compile/jinja.go
+++ b/src/core/build/compile/jinja.go
@@ -32,26 +32,30 @@ func (self *JinjaEngine) CleanJinja(source []byte, doc ast.Node) ast.Node {
next := child.NextSibling()
if paragraph, ok := child.(*ast.Paragraph); ok {
lines := paragraph.Lines()
+ hasJinja := false
for i := 0; i < lines.Len(); i++ {
segment := lines.At(i)
if strings.HasPrefix(strings.ReplaceAll(string(segment.Value(source)), " ", ""), "{%") {
+ hasJinja = true
+ break
+ }
+ }
+
+ if hasJinja {
+ for i := 0; i < lines.Len(); i++ {
+ segment := lines.At(i)
raw := ast.NewRawHTML()
raw.Segments.Append(segment)
doc.InsertBefore(doc, child, raw)
- } else {
- t := ast.NewText()
- t.Segment = segment
- p := ast.NewParagraph()
- p.AppendChild(p, t)
- doc.InsertBefore(doc, child, p)
}
+ doc.RemoveChild(doc, child)
}
- doc.RemoveChild(doc, child)
}
child = next
}
return doc
}
+
func (self *JinjaEngine) JinjaHandler(html_content *string) error {
shiftedLoader, err := loaders.NewShiftedLoader("root", strings.NewReader(*html_content), self.Loader)
if err != nil {