commit 2c7dce3db9efad2b13095820575af97c99fdbe05
parent 1b0d19f4294c76a2cb232b7be3fbc774076d7758
Author: Yongbin Kim <iam@yongbin.kim>
Date: Thu, 21 Apr 2022 07:30:30 +0900
fix: Fixed to have more than one linebreak applied
Signed-off-by: Yongbin Kim <iam@yongbin.kim>
Diffstat:
3 files changed, 16 insertions(+), 5 deletions(-)
diff --git a/examples/plaintext/templates/template.html.go b/examples/plaintext/templates/template.html.go
@@ -12,11 +12,14 @@ type Page interface {
func Render(w tpls.Writer, p Page) {
w.WriteRaw(`
Company Name
+
`)
p.Body(w)
w.WriteRaw(`
+
문의사항이 있으시다면 아래 이메일 주소로 연락해주세요.
email@domain.tld
+
감사합니다.
`)
}
diff --git a/tplc/builtin_template.go b/tplc/builtin_template.go
@@ -20,7 +20,7 @@ var regexTemplateClassParser = regexp.MustCompile(
`^\s*(\((?:[^\s)]+[ \t]+)?[^\s)]+\)[ \t]+)?([^\s(]+)\(([^)]+)?\)\s*$`)
var regexTemplatePlainTextLineParser = regexp.MustCompile(
- `(?:[\t\f\v ]*([\r\n])|^)\s*([^\n\r]*)`)
+ `^(?:[\t ]*([\r\n])[\t ]*)?([^\n\r]*)`)
func TagTemplate(b *Builder, w *Writer, t *htmlx.Tokenizer) error {
attrs := getAttrs(t)
@@ -173,11 +173,18 @@ loop:
// Plain Text Mode
// In this mode, only the prefix 'space' character on each line
// is removed. space characters do not include line breaks.
+ var src = txt
+ var caps [][]byte
+ for len(src) > 0 {
+ caps = regexTemplatePlainTextLineParser.FindSubmatch(src)
+ if caps == nil {
+ break
+ }
- lines := regexTemplatePlainTextLineParser.FindAllSubmatch(txt, -1)
- for _, caps := range lines {
buf.B = append(buf.B, caps[1]...)
buf.B = append(buf.B, caps[2]...)
+
+ src = src[len(caps[0]):]
}
} else {
// Smart Indent Mode
diff --git a/tplc/builtin_template_test.go b/tplc/builtin_template_test.go
@@ -87,14 +87,15 @@ func Test_renderTag(t *testing.T) {
"plain text",
`
Hello, World!
- And this is second line.
+
+ And this is second paragraph.
</template>`,
true,
"template",
nil,
false,
false,
- "w.WriteRaw(`\nHello, World!\nAnd this is second line.\n`)\n",
+ "w.WriteRaw(`\nHello, World!\n\nAnd this is second paragraph.\n`)\n",
},
{
"plain text with tag",