Pi66

Home | Repos | About | Blog | Gaza

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
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 {

// Created by Pi66

// Copyright ©Pi66 2026