Fix half-broken self-closing shortcodes

Fixes #2498
This commit is contained in:
Bjørn Erik Pedersen 2016-09-27 21:11:34 +02:00 committed by GitHub
parent 8b0d16b8d9
commit 59df7db764
2 changed files with 15 additions and 3 deletions

View file

@ -345,6 +345,7 @@ func lexShortcodeComment(l *pagelexer) stateFunc {
}
func lexShortcodeRightDelim(l *pagelexer) stateFunc {
l.closingState = 0
l.pos += pos(len(l.currentRightShortcodeDelim()))
l.emit(l.currentRightShortcodeDelimItem())
return lexTextOutsideShortcodes

View file

@ -81,6 +81,18 @@ var shortCodeLexerTests = []shortCodeLexerTest{
// issue #934
{"self-closing", `{{< sc1 />}}`, []item{
tstLeftNoMD, tstSC1, tstSCClose, tstRightNoMD, tstEOF}},
// Issue 2498
{"multiple self-closing", `{{< sc1 />}}{{< sc1 />}}`, []item{
tstLeftNoMD, tstSC1, tstSCClose, tstRightNoMD,
tstLeftNoMD, tstSC1, tstSCClose, tstRightNoMD, tstEOF}},
{"self-closing with param", `{{< sc1 param1 />}}`, []item{
tstLeftNoMD, tstSC1, tstParam1, tstSCClose, tstRightNoMD, tstEOF}},
{"multiple self-closing with param", `{{< sc1 param1 />}}{{< sc1 param1 />}}`, []item{
tstLeftNoMD, tstSC1, tstParam1, tstSCClose, tstRightNoMD,
tstLeftNoMD, tstSC1, tstParam1, tstSCClose, tstRightNoMD, tstEOF}},
{"multiple different self-closing with param", `{{< sc1 param1 />}}{{< sc2 param1 />}}`, []item{
tstLeftNoMD, tstSC1, tstParam1, tstSCClose, tstRightNoMD,
tstLeftNoMD, tstSC2, tstParam1, tstSCClose, tstRightNoMD, tstEOF}},
{"nested simple", `{{< sc1 >}}{{< sc2 >}}{{< /sc1 >}}`, []item{
tstLeftNoMD, tstSC1, tstRightNoMD,
tstLeftNoMD, tstSC2, tstRightNoMD,
@ -140,11 +152,10 @@ var shortCodeLexerTests = []shortCodeLexerTest{
}
func TestShortcodeLexer(t *testing.T) {
for _, test := range shortCodeLexerTests {
for i, test := range shortCodeLexerTests {
items := collect(&test)
if !equal(items, test.items) {
t.Errorf("%s: got\n\t%v\nexpected\n\t%v", test.name, items, test.items)
t.Errorf("[%d] %s: got\n\t%v\nexpected\n\t%v", i, test.name, items, test.items)
}
}
}