Fix shortcode directly following a shortcode delimiter
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Mon, 5 Nov 2018 12:30:16 +0000 (13:30 +0100)
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Mon, 5 Nov 2018 13:14:28 +0000 (14:14 +0100)
Fixes #5402

hugolib/page_test.go
parser/pageparser/pagelexer.go
parser/pageparser/pageparser_intro_test.go

index 18be64ceeee158f48dd70f0a77fa829437924ac7..b421a1b403aa30b779983a512599a99586e15c5b 100644 (file)
@@ -1513,7 +1513,13 @@ Content.
        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
@@ -1547,8 +1553,13 @@ CONTENT:{{ .Content }}
        )
 
        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",
index 565be2994c3c8d27bb842411d9e452c35055dd60..fcea560c4ec9c163deda74e3873d7c7f2e173574 100644 (file)
@@ -247,6 +247,9 @@ func lexMainSection(l *pageLexer) stateFunc {
                                // This makes it a little easier to reason about later.
                                l.consumeSpace()
                                l.emit(TypeLeadSummaryDivider)
+
+                               // We have already moved to the next.
+                               continue
                        }
                }
 
index 60c431c10c7b28454018f19615d48e3ead8891ed..f818848bd55054c7887c1f9e8290f85cae3b6326 100644 (file)
@@ -68,11 +68,14 @@ var frontMatterTests = []lexerTest{
        {"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))