CheckShortCodeMatch(t, "{{%/* movie 47238zzb */%}}", "{{% movie 47238zzb %}}", tem)
}
+// Issue #929
+func TestHyphenatedSC(t *testing.T) {
+ tem := tpl.New()
+ tem.AddInternalShortcode("hyphenated-video.html", `Playing Video {{ .Get 0 }}`)
+
+ CheckShortCodeMatch(t, "{{< hyphenated-video 47238zzb >}}", "Playing Video 47238zzb", tem)
+}
+
func TestPositionalParamSC(t *testing.T) {
tem := tpl.New()
tem.AddInternalShortcode("video.html", `Playing Video {{ .Get 0 }}`)
break
}
- if !isValidParamRune(r) {
+ if !isAlphaNumericOrHyphen(r) {
l.backup()
break
}
Loop:
for {
switch r := l.next(); {
- case isAlphaNumeric(r):
+ case isAlphaNumericOrHyphen(r):
default:
l.backup()
word := l.input[l.start:l.pos]
if l.peek() == '"' {
return lexShortcodeParam(l, true)
}
- case l.elementStepNum > 0 && (isValidParamRune(r) || r == '"'): // positional params can have quotes
+ case l.elementStepNum > 0 && (isAlphaNumericOrHyphen(r) || r == '"'): // positional params can have quotes
l.backup()
return lexShortcodeParam(l, false)
case isAlphaNumeric(r):
return r == ' ' || r == '\t'
}
-func isValidParamRune(r rune) bool {
+func isAlphaNumericOrHyphen(r rune) bool {
// let unquoted YouTube ids as positional params slip through (they contain hyphens)
return isAlphaNumeric(r) || r == '-'
}