mirror of
https://github.com/gohugoio/hugo.git
synced 2026-08-24 15:28:54 +00:00
parser/pagerparser: Fix closing shortcode error handling when repeated
This commit is contained in:
@@ -255,16 +255,18 @@ Loop:
|
||||
default:
|
||||
l.backup()
|
||||
word := string(l.input[l.start:l.pos])
|
||||
if l.closingState > 0 && !l.openShortcodes[word] {
|
||||
return l.errorf("closing tag for shortcode '%s' does not match start tag", word)
|
||||
} else if l.closingState > 0 {
|
||||
if l.closingState > 0 {
|
||||
if !l.openShortcodes[word] {
|
||||
return l.errorf("closing tag for shortcode '%s' does not match start tag", word)
|
||||
}
|
||||
l.openShortcodes[word] = false
|
||||
lookForEnd = true
|
||||
} else {
|
||||
l.openShortcodes[word] = true
|
||||
}
|
||||
|
||||
l.closingState = 0
|
||||
l.currShortcodeName = word
|
||||
l.openShortcodes[word] = true
|
||||
l.elementStepNum++
|
||||
if l.isInline {
|
||||
l.emit(tScNameInline)
|
||||
|
||||
@@ -27,6 +27,7 @@ var (
|
||||
tstRightMD = nti(tRightDelimScWithMarkup, "%}}")
|
||||
tstSCClose = nti(tScClose, "/")
|
||||
tstSC1 = nti(tScName, "sc1")
|
||||
tstSCAnother = nti(tScName, "another")
|
||||
tstSC1Inline = nti(tScNameInline, "sc1.inline")
|
||||
tstSC2Inline = nti(tScNameInline, "sc2.inline")
|
||||
tstSC2 = nti(tScName, "sc2")
|
||||
@@ -74,6 +75,10 @@ var shortCodeLexerTests = []lexerTest{
|
||||
tstLeftNoMD, tstSC1, tstRightNoMD, tstLeftNoMD, tstSCClose,
|
||||
nti(tError, "closing tag for shortcode 'another' does not match start tag"),
|
||||
}, nil},
|
||||
{"close wrong, repeated", `{{< sc1 >}}{{< another >}}{{< /another >}}{{< /another >}}`, []typeText{
|
||||
tstLeftNoMD, tstSC1, tstRightNoMD, tstLeftNoMD, tstSCAnother, tstRightNoMD, tstLeftNoMD, tstSCClose, tstSCAnother, tstRightNoMD, tstLeftNoMD, tstSCClose,
|
||||
nti(tError, "closing tag for shortcode 'another' does not match start tag"),
|
||||
}, nil},
|
||||
{"close, but no open, more", `{{< sc1 >}}{{< /sc1 >}}{{< /another >}}`, []typeText{
|
||||
tstLeftNoMD, tstSC1, tstRightNoMD, tstLeftNoMD, tstSCClose, tstSC1, tstRightNoMD, tstLeftNoMD, tstSCClose,
|
||||
nti(tError, "closing tag for shortcode 'another' does not match start tag"),
|
||||
|
||||
Reference in New Issue
Block a user