From d16a7a33ff1f22b9fa357189a901a4f1de4e65e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B8rn=20Erik=20Pedersen?= Date: Mon, 5 Nov 2018 13:30:16 +0100 Subject: Fix shortcode directly following a shortcode delimiter Fixes #5402 --- parser/pageparser/pagelexer.go | 3 +++ parser/pageparser/pageparser_intro_test.go | 3 +++ 2 files changed, 6 insertions(+) (limited to 'parser') diff --git a/parser/pageparser/pagelexer.go b/parser/pageparser/pagelexer.go index 565be2994..fcea560c4 100644 --- a/parser/pageparser/pagelexer.go +++ b/parser/pageparser/pagelexer.go @@ -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 } } diff --git a/parser/pageparser/pageparser_intro_test.go b/parser/pageparser/pageparser_intro_test.go index 60c431c10..f818848bd 100644 --- a/parser/pageparser/pageparser_intro_test.go +++ b/parser/pageparser/pageparser_intro_test.go @@ -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\nSome text.\n", []Item{tstFrontMatterTOML, tstSomeText, tstSummaryDivider, nti(tText, "Some text.\n"), tstEOF}}, {"Summary divider same line", "+++\nfoo = \"bar\"\n+++\n\nSome text.Some text.\n", []Item{tstFrontMatterTOML, nti(tText, "\nSome text."), nti(TypeLeadSummaryDivider, ""), 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{{< sc1 >}}\nSome text.\n", []Item{tstFrontMatterTOML, tstSomeText, nti(TypeLeadSummaryDivider, ""), 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)) -- cgit v1.2.3