Allow "*/" inside commented out shortcodes
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Wed, 11 Apr 2018 20:41:48 +0000 (22:41 +0200)
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Wed, 11 Apr 2018 20:41:48 +0000 (22:41 +0200)
Fixes #4608

hugolib/shortcodeparser.go
hugolib/shortcodeparser_test.go

index 18b1454cdb658a2e45ffe0bc0e95ffe8f5984707..c57ff9b3cf5dc4207e1203a93ef7d2e7d8cf0679 100644 (file)
@@ -312,7 +312,7 @@ func lexShortcodeLeftDelim(l *pagelexer) stateFunc {
 }
 
 func lexShortcodeComment(l *pagelexer) stateFunc {
-       posRightComment := strings.Index(l.input[l.pos:], rightComment)
+       posRightComment := strings.Index(l.input[l.pos:], rightComment+l.currentRightShortcodeDelim())
        if posRightComment <= 1 {
                return l.errorf("comment must be closed")
        }
@@ -324,9 +324,6 @@ func lexShortcodeComment(l *pagelexer) stateFunc {
        l.emit(tText)
        l.pos += pos(len(rightComment))
        l.ignore()
-       if !strings.HasPrefix(l.input[l.pos:], l.currentRightShortcodeDelim()) {
-               return l.errorf("comment ends before the right shortcode delimiter")
-       }
        l.pos += pos(len(l.currentRightShortcodeDelim()))
        l.emit(tText)
        return lexTextOutsideShortcodes
index 3103fd4de2de20ab2c9b944e0e62facb02917aa5..45cf69baadbea61a20361e93c8d41bc15d68137b 100644 (file)
@@ -145,10 +145,12 @@ var shortCodeLexerTests = []shortCodeLexerTest{
                {tError, 0, "got named parameter 'param2'. Cannot mix named and positional parameters"}}},
        {"commented out", `{{</* sc1 */>}}`, []item{
                {tText, 0, "{{<"}, {tText, 0, " sc1 "}, {tText, 0, ">}}"}, tstEOF}},
+       {"commented out, with asterisk inside", `{{</* sc1 "**/*.pdf" */>}}`, []item{
+               {tText, 0, "{{<"}, {tText, 0, " sc1 \"**/*.pdf\" "}, {tText, 0, ">}}"}, tstEOF}},
        {"commented out, missing close", `{{</* sc1 >}}`, []item{
                {tError, 0, "comment must be closed"}}},
        {"commented out, misplaced close", `{{</* sc1 >}}*/`, []item{
-               {tText, 0, "{{<"}, {tText, 0, " sc1 >}}"}, {tError, 0, "comment ends before the right shortcode delimiter"}}},
+               {tError, 0, "comment must be closed"}}},
 }
 
 func TestShortcodeLexer(t *testing.T) {