aboutsummaryrefslogtreecommitdiffhomepage
path: root/hugolib/shortcode.go
diff options
context:
space:
mode:
Diffstat (limited to 'hugolib/shortcode.go')
-rw-r--r--hugolib/shortcode.go31
1 files changed, 18 insertions, 13 deletions
diff --git a/hugolib/shortcode.go b/hugolib/shortcode.go
index ac9e4a699..42877b537 100644
--- a/hugolib/shortcode.go
+++ b/hugolib/shortcode.go
@@ -27,8 +27,9 @@ import (
"github.com/gohugoio/hugo/helpers"
+ "errors"
+
"github.com/gohugoio/hugo/common/herrors"
- "github.com/pkg/errors"
"github.com/gohugoio/hugo/parser/pageparser"
"github.com/gohugoio/hugo/resources/page"
@@ -269,6 +270,7 @@ const (
innerNewlineRegexp = "\n"
innerCleanupRegexp = `\A<p>(.*)</p>\n\z`
innerCleanupExpand = "$1"
+ pageFileErrorName = "page.md"
)
func renderShortcode(
@@ -297,9 +299,10 @@ func renderShortcode(
var err error
tmpl, err = s.TextTmpl().Parse(templName, templStr)
if err != nil {
- fe := herrors.ToFileError("html", err)
- l1, l2 := p.posOffset(sc.pos).LineNumber, fe.Position().LineNumber
- fe = herrors.ToFileErrorWithLineNumber(fe, l1+l2-1)
+ fe := herrors.NewFileError(pageFileErrorName, err)
+ pos := fe.Position()
+ pos.LineNumber += p.posOffset(sc.pos).LineNumber
+ fe = fe.UpdatePosition(pos)
return "", false, p.wrapError(fe)
}
@@ -308,7 +311,7 @@ func renderShortcode(
var found bool
tmpl, found = s.TextTmpl().Lookup(templName)
if !found {
- return "", false, errors.Errorf("no earlier definition of shortcode %q found", sc.name)
+ return "", false, fmt.Errorf("no earlier definition of shortcode %q found", sc.name)
}
}
} else {
@@ -389,9 +392,10 @@ func renderShortcode(
result, err := renderShortcodeWithPage(s.Tmpl(), tmpl, data)
if err != nil && sc.isInline {
- fe := herrors.ToFileError("html", err)
- l1, l2 := p.posFromPage(sc.pos).LineNumber, fe.Position().LineNumber
- fe = herrors.ToFileErrorWithLineNumber(fe, l1+l2-1)
+ fe := herrors.NewFileError("shortcode.md", err)
+ pos := fe.Position()
+ pos.LineNumber += p.posOffset(sc.pos).LineNumber
+ fe = fe.UpdatePosition(pos)
return "", false, fe
}
@@ -415,7 +419,7 @@ func (s *shortcodeHandler) renderShortcodesForPage(p *pageState, f output.Format
for _, v := range s.shortcodes {
s, more, err := renderShortcode(0, s.s, tplVariants, v, nil, p)
if err != nil {
- err = p.parseError(errors.Wrapf(err, "failed to render shortcode %q", v.name), p.source.parsed.Input(), v.pos)
+ err = p.parseError(fmt.Errorf("failed to render shortcode %q: %w", v.name, err), p.source.parsed.Input(), v.pos)
return nil, false, err
}
hasVariants = hasVariants || more
@@ -447,9 +451,10 @@ func (s *shortcodeHandler) extractShortcode(ordinal, level int, pt *pageparser.I
cnt := 0
nestedOrdinal := 0
nextLevel := level + 1
+ const errorPrefix = "failed to extract shortcode"
fail := func(err error, i pageparser.Item) error {
- return s.parseError(err, pt.Input(), i.Pos)
+ return s.parseError(fmt.Errorf("%s: %w", errorPrefix, err), pt.Input(), i.Pos)
}
Loop:
@@ -508,7 +513,7 @@ Loop:
// return that error, more specific
continue
}
- return sc, fail(errors.Errorf("shortcode %q has no .Inner, yet a closing tag was provided", next.Val), next)
+ return sc, fail(fmt.Errorf("shortcode %q has no .Inner, yet a closing tag was provided", next.Val), next)
}
}
if next.IsRightShortcodeDelim() {
@@ -538,7 +543,7 @@ Loop:
// Used to check if the template expects inner content.
templs := s.s.Tmpl().LookupVariants(sc.name)
if templs == nil {
- return nil, errors.Errorf("template for shortcode %q not found", sc.name)
+ return nil, fmt.Errorf("%s: template for shortcode %q not found", errorPrefix, sc.name)
}
sc.info = templs[0].(tpl.Info)
@@ -639,7 +644,7 @@ func renderShortcodeWithPage(h tpl.TemplateHandler, tmpl tpl.Template, data *Sho
err := h.Execute(tmpl, buffer, data)
if err != nil {
- return "", errors.Wrap(err, "failed to process shortcode")
+ return "", fmt.Errorf("failed to process shortcode: %w", err)
}
return buffer.String(), nil
}