shithub: hugo

Download patch

ref: d16a7a33ff1f22b9fa357189a901a4f1de4e65e7
parent: 5b1edd281a493bdb27af4dc3c8fae7e10dd54830
author: Bjørn Erik Pedersen <[email protected]>
date: Mon Nov 5 08:30:16 EST 2018

Fix shortcode directly following a shortcode delimiter

Fixes #5402

--- a/hugolib/page_test.go
+++ b/hugolib/page_test.go
@@ -1513,9 +1513,15 @@
 	b.WithContent("page-md-shortcode-same-line.md", `---
 title: "Hugo"
 ---
-This is a {{< sc >}}.<!--more-->Same line.
+This is a {{< sc >}}<!--more-->Same line.
 `)
 
+	b.WithContent("page-md-shortcode-same-line-after.md", `---
+title: "Hugo"
+---
+Summary<!--more-->{{< sc >}}
+`)
+
 	b.WithContent("page-org-shortcode.org", `#+TITLE: T1
 #+AUTHOR: A1
 #+DESCRIPTION: D1
@@ -1547,8 +1553,13 @@
 	)
 
 	b.AssertFileContent("public/page-md-shortcode-same-line/index.html",
-		"SUMMARY:<p>This is a a shortcode.</p>:END",
-		"CONTENT:<p>This is a a shortcode.</p>\n\n<p>Same line.</p>\n",
+		"SUMMARY:<p>This is a a shortcode</p>:END",
+		"CONTENT:<p>This is a a shortcode</p>\n\n<p>Same line.</p>\n",
+	)
+
+	b.AssertFileContent("public/page-md-shortcode-same-line-after/index.html",
+		"SUMMARY:<p>Summary</p>:END",
+		"CONTENT:<p>Summary</p>\n\na shortcode",
 	)
 
 	b.AssertFileContent("public/page-org-shortcode/index.html",
--- a/parser/pageparser/pagelexer.go
+++ b/parser/pageparser/pagelexer.go
@@ -247,6 +247,9 @@
 				// This makes it a little easier to reason about later.
 				l.consumeSpace()
 				l.emit(TypeLeadSummaryDivider)
+
+				// We have already moved to the next.
+				continue
 			}
 		}
 
--- a/parser/pageparser/pageparser_intro_test.go
+++ b/parser/pageparser/pageparser_intro_test.go
@@ -68,11 +68,14 @@
 	{"Summary divider ORG", tstORG + "\nSome text.\n# more\nSome text.\n", []Item{tstFrontMatterORG, tstSomeText, nti(TypeLeadSummaryDivider, "# more\n"), nti(tText, "Some text.\n"), tstEOF}},
 	{"Summary divider", "+++\nfoo = \"bar\"\n+++\n\nSome text.\n<!--more-->\nSome text.\n", []Item{tstFrontMatterTOML, tstSomeText, tstSummaryDivider, nti(tText, "Some text.\n"), tstEOF}},
 	{"Summary divider same line", "+++\nfoo = \"bar\"\n+++\n\nSome text.<!--more-->Some text.\n", []Item{tstFrontMatterTOML, nti(tText, "\nSome text."), nti(TypeLeadSummaryDivider, "<!--more-->"), nti(tText, "Some text.\n"), tstEOF}},
+	// https://github.com/gohugoio/hugo/issues/5402
+	{"Summary and shortcode, no space", "+++\nfoo = \"bar\"\n+++\n\nSome text.\n<!--more-->{{< sc1 >}}\nSome text.\n", []Item{tstFrontMatterTOML, tstSomeText, nti(TypeLeadSummaryDivider, "<!--more-->"), tstLeftNoMD, tstSC1, tstRightNoMD, tstSomeText, tstEOF}},
 }
 
 func TestFrontMatter(t *testing.T) {
 	t.Parallel()
 	for i, test := range frontMatterTests {
+
 		items := collect([]byte(test.input), false, lexIntroSection)
 		if !equal(items, test.items) {
 			got := crLfReplacer.Replace(fmt.Sprint(items))