Fix shortcode error when closing without .Inner

Fixes #10672
This commit is contained in:
Bjørn Erik Pedersen 2023-02-23 08:38:51 +01:00
parent 7d78a498e1
commit ae48507d66
2 changed files with 2 additions and 10 deletions

View file

@ -564,10 +564,6 @@ func (s *shortcodeHandler) extractShortcode(ordinal, level int, source []byte, p
closed := false closed := false
const errorPrefix = "failed to extract shortcode" const errorPrefix = "failed to extract shortcode"
fail := func(err error, i pageparser.Item) error {
return s.parseError(fmt.Errorf("%s: %w", errorPrefix, err), source, i.Pos())
}
Loop: Loop:
for { for {
currItem := pt.Next() currItem := pt.Next()
@ -607,10 +603,6 @@ Loop:
// we trust the template on this: // we trust the template on this:
// if there's no inner, we're done // if there's no inner, we're done
if !sc.isInline { if !sc.isInline {
if sc.info == nil {
// This should not happen.
return sc, fail(errors.New("BUG: template info not set"), currItem)
}
if !sc.info.ParseInfo().IsInner { if !sc.info.ParseInfo().IsInner {
return sc, nil return sc, nil
} }
@ -625,7 +617,7 @@ Loop:
// return that error, more specific // return that error, more specific
continue continue
} }
return sc, fail(fmt.Errorf("shortcode %q has no .Inner, yet a closing tag was provided", next.ValStr(source)), next) return nil, fmt.Errorf("%s: shortcode %q does not evaluate .Inner or .InnerDeindent, yet a closing tag was provided", errorPrefix, next.ValStr(source))
} }
} }
if next.IsRightShortcodeDelim() { if next.IsRightShortcodeDelim() {

View file

@ -875,7 +875,7 @@ title: "No Inner!"
"layouts/shortcodes/noinner.html", `No inner here.`) "layouts/shortcodes/noinner.html", `No inner here.`)
err := b.BuildE(BuildCfg{}) err := b.BuildE(BuildCfg{})
b.Assert(err.Error(), qt.Contains, filepath.FromSlash(`"content/mypage.md:4:21": failed to extract shortcode: shortcode "noinner" has no .Inner, yet a closing tag was provided`)) b.Assert(err.Error(), qt.Contains, filepath.FromSlash(`"content/mypage.md:4:16": failed to extract shortcode: shortcode "noinner" does not evaluate .Inner or .InnerDeindent, yet a closing tag was provided`))
} }
func TestShortcodeStableOutputFormatTemplates(t *testing.T) { func TestShortcodeStableOutputFormatTemplates(t *testing.T) {