diff --git a/hugolib/shortcodeparser.go b/hugolib/shortcodeparser.go index c57ff9b3c..32aa8b47a 100644 --- a/hugolib/shortcodeparser.go +++ b/hugolib/shortcodeparser.go @@ -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] diff --git a/hugolib/shortcodeparser_test.go b/hugolib/shortcodeparser_test.go index 45cf69baa..532c8e739 100644 --- a/hugolib/shortcodeparser_test.go +++ b/hugolib/shortcodeparser_test.go @@ -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,