diff --git a/hugolib/page_test.go b/hugolib/page_test.go index b421a1b40..f9c26754b 100644 --- a/hugolib/page_test.go +++ b/hugolib/page_test.go @@ -1508,6 +1508,15 @@ title: "Hugo" This is a {{< sc >}}. Content. +`) + + // https://github.com/gohugoio/hugo/issues/5464 + b.WithContent("page-md-only-shortcode.md", `--- +title: "Hugo" +--- +{{< sc >}} + +{{< sc >}} `) b.WithContent("page-md-shortcode-same-line.md", `--- @@ -1570,6 +1579,11 @@ CONTENT:{{ .Content }} "SUMMARY:

Summary.

:END", "CONTENT:

Summary.

\n\n

Content.\t

\n", ) + + b.AssertFileContent("public/page-md-only-shortcode/index.html", + "SUMMARY:a shortcode:END", + "CONTENT:a shortcode\n\na shortcode\n", + ) } // TODO(bep) this may be useful for other tests. diff --git a/parser/pageparser/pagelexer.go b/parser/pageparser/pagelexer.go index fcea560c4..8106758a9 100644 --- a/parser/pageparser/pagelexer.go +++ b/parser/pageparser/pagelexer.go @@ -216,7 +216,7 @@ func lexMainSection(l *pageLexer) stateFunc { } l2 = l.index(leftDelimSc) - skip := minPositiveIndex(l1, l2) + skip := minIndex(l1, l2) if skip > 0 { l.pos += skip @@ -730,12 +730,12 @@ func (l *pageLexer) currentRightShortcodeDelim() []byte { // helper functions -// returns the min index > 0 -func minPositiveIndex(indices ...int) int { +// returns the min index >= 0 +func minIndex(indices ...int) int { min := -1 for _, j := range indices { - if j <= 0 { + if j < 0 { continue } if min == -1 { diff --git a/parser/pageparser/pagelexer_test.go b/parser/pageparser/pagelexer_test.go index 5c85df017..70def3091 100644 --- a/parser/pageparser/pagelexer_test.go +++ b/parser/pageparser/pagelexer_test.go @@ -19,11 +19,11 @@ import ( "github.com/stretchr/testify/require" ) -func TestMinPositiveIndex(t *testing.T) { +func TestMinIndex(t *testing.T) { assert := require.New(t) - assert.Equal(1, minPositiveIndex(4, 1, 2, 3)) - assert.Equal(2, minPositiveIndex(4, 0, -2, 2, 5)) - assert.Equal(-1, minPositiveIndex()) - assert.Equal(-1, minPositiveIndex(-2, -3)) + assert.Equal(1, minIndex(4, 1, 2, 3)) + assert.Equal(0, minIndex(4, 0, -2, 2, 5)) + assert.Equal(-1, minIndex()) + assert.Equal(-1, minIndex(-2, -3)) } diff --git a/parser/pageparser/pageparser_intro_test.go b/parser/pageparser/pageparser_intro_test.go index f818848bd..ba48a3ee3 100644 --- a/parser/pageparser/pageparser_intro_test.go +++ b/parser/pageparser/pageparser_intro_test.go @@ -39,6 +39,7 @@ var ( tstSomeText = nti(tText, "\nSome text.\n") tstSummaryDivider = nti(TypeLeadSummaryDivider, "\n") tstHtmlStart = nti(TypeHTMLStart, "<") + tstNewline = nti(tText, "\n") tstORG = ` #+TITLE: T1 @@ -70,6 +71,8 @@ var frontMatterTests = []lexerTest{ {"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}}, + // https://github.com/gohugoio/hugo/issues/5464 + {"Summary and shortcode only", "+++\nfoo = \"bar\"\n+++\n{{< sc1 >}}\n\n{{< sc2 >}}", []Item{tstFrontMatterTOML, tstLeftNoMD, tstSC1, tstRightNoMD, tstNewline, tstSummaryDivider, tstLeftNoMD, tstSC2, tstRightNoMD, tstEOF}}, } func TestFrontMatter(t *testing.T) {