hugolib: Allow forward slash in shortcode names
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Thu, 28 Jun 2018 14:06:16 +0000 (16:06 +0200)
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Thu, 28 Jun 2018 14:06:16 +0000 (16:06 +0200)
Fixes #4886

hugolib/shortcodeparser.go
hugolib/shortcodeparser_test.go

index c57ff9b3cf5dc4207e1203a93ef7d2e7d8cf0679..32aa8b47a5b189b2a9a58a72e771096095873045 100644 (file)
@@ -464,6 +464,8 @@ Loop:
        for {
                switch r := l.next(); {
                case isAlphaNumericOrHyphen(r):
+               // Allow forward slash inside names to make it possible to create namespaces.
+               case r == '/':
                default:
                        l.backup()
                        word := l.input[l.start:l.pos]
index 45cf69baadbea61a20361e93c8d41bc15d68137b..532c8e739f273ca1d87fea9a36d158891d29cc24 100644 (file)
@@ -33,6 +33,7 @@ var (
        tstSC1       = item{tScName, 0, "sc1"}
        tstSC2       = item{tScName, 0, "sc2"}
        tstSC3       = item{tScName, 0, "sc3"}
+       tstSCSlash   = item{tScName, 0, "sc/sub"}
        tstParam1    = item{tScParam, 0, "param1"}
        tstParam2    = item{tScParam, 0, "param2"}
        tstVal       = item{tScParamVal, 0, "Hello World"}
@@ -45,6 +46,8 @@ var shortCodeLexerTests = []shortCodeLexerTest{
        {"no markup", `{{< sc1 >}}`, []item{tstLeftNoMD, tstSC1, tstRightNoMD, tstEOF}},
        {"with EOL", "{{< sc1 \n >}}", []item{tstLeftNoMD, tstSC1, tstRightNoMD, tstEOF}},
 
+       {"forward slash inside name", `{{< sc/sub >}}`, []item{tstLeftNoMD, tstSCSlash, tstRightNoMD, tstEOF}},
+
        {"simple with markup", `{{% sc1 %}}`, []item{tstLeftMD, tstSC1, tstRightMD, tstEOF}},
        {"with spaces", `{{<     sc1     >}}`, []item{tstLeftNoMD, tstSC1, tstRightNoMD, tstEOF}},
        {"mismatched rightDelim", `{{< sc1 %}}`, []item{tstLeftNoMD, tstSC1,