Skip to content

Commit

Permalink
parser/pageparser: Fix when only shortcode and then summary
Browse files Browse the repository at this point in the history
Fixes #5464
  • Loading branch information
bep committed Nov 24, 2018
1 parent dcfeed3 commit 94ab125
Show file tree
Hide file tree
Showing 4 changed files with 26 additions and 9 deletions.
14 changes: 14 additions & 0 deletions hugolib/page_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -1508,6 +1508,15 @@ title: "Hugo"
This is a {{< sc >}}.
<!--more-->
Content.
`)

// https://github.com/gohugoio/hugo/issues/5464
b.WithContent("page-md-only-shortcode.md", `---
title: "Hugo"
---
{{< sc >}}
<!--more-->
{{< sc >}}
`)

b.WithContent("page-md-shortcode-same-line.md", `---
Expand Down Expand Up @@ -1570,6 +1579,11 @@ CONTENT:{{ .Content }}
"SUMMARY:<p>Summary.</p>:END",
"CONTENT:<p>Summary.</p>\n\n<p>Content.\t</p>\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.
Expand Down
8 changes: 4 additions & 4 deletions parser/pageparser/pagelexer.go
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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 {
Expand Down
10 changes: 5 additions & 5 deletions parser/pageparser/pagelexer_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -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))

}
3 changes: 3 additions & 0 deletions parser/pageparser/pageparser_intro_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ var (
tstSomeText = nti(tText, "\nSome text.\n")
tstSummaryDivider = nti(TypeLeadSummaryDivider, "<!--more-->\n")
tstHtmlStart = nti(TypeHTMLStart, "<")
tstNewline = nti(tText, "\n")

tstORG = `
#+TITLE: T1
Expand Down Expand Up @@ -70,6 +71,8 @@ var frontMatterTests = []lexerTest{
{"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}},
// https://github.com/gohugoio/hugo/issues/5464
{"Summary and shortcode only", "+++\nfoo = \"bar\"\n+++\n{{< sc1 >}}\n<!--more-->\n{{< sc2 >}}", []Item{tstFrontMatterTOML, tstLeftNoMD, tstSC1, tstRightNoMD, tstNewline, tstSummaryDivider, tstLeftNoMD, tstSC2, tstRightNoMD, tstEOF}},
}

func TestFrontMatter(t *testing.T) {
Expand Down

0 comments on commit 94ab125

Please sign in to comment.