Add file (line/col) info to ref/relref errors

See #5371
This commit is contained in:
Bjørn Erik Pedersen
2018-11-01 11:28:30 +01:00
parent 33a7b36fd4
commit 1d18eb0574
22 changed files with 412 additions and 297 deletions

View File

@@ -165,14 +165,14 @@ func (t *TemplateAdapter) addFileContext(name string, inerr error) error {
// Since this can be a composite of multiple template files (single.html + baseof.html etc.)
// we potentially need to look in both -- and cannot rely on line number alone.
lineMatcher := func(m herrors.LineMatcher) bool {
if m.FileError.LineNumber() != m.LineNumber {
if m.Position.LineNumber != m.LineNumber {
return false
}
if !hasMaster {
return true
}
identifiers := t.extractIdentifiers(m.FileError.Error())
identifiers := t.extractIdentifiers(m.Error.Error())
for _, id := range identifiers {
if strings.Contains(m.Line, id) {

View File

@@ -398,8 +398,8 @@ if (!doNotTrack) {
</style>
{{ end }}
{{ end }}`},
{`shortcodes/ref.html`, `{{ ref .Page .Params }}`},
{`shortcodes/relref.html`, `{{ relref .Page .Params }}`},
{`shortcodes/ref.html`, `{{ ref . .Params }}`},
{`shortcodes/relref.html`, `{{ relref . .Params }}`},
{`shortcodes/twitter.html`, `{{- $pc := .Page.Site.Config.Privacy.Twitter -}}
{{- if not $pc.Disable -}}
{{- if $pc.Simple -}}

View File

@@ -1 +1 @@
{{ ref .Page .Params }}
{{ ref . .Params }}

View File

@@ -1 +1 @@
{{ relref .Page .Params }}
{{ relref . .Params }}

View File

@@ -20,10 +20,10 @@ import (
"html/template"
"net/url"
"github.com/gohugoio/hugo/common/urls"
"github.com/gohugoio/hugo/deps"
_errors "github.com/pkg/errors"
"github.com/russross/blackfriday"
"github.com/gohugoio/hugo/deps"
"github.com/spf13/cast"
)
@@ -91,14 +91,9 @@ func (ns *Namespace) Anchorize(a interface{}) (string, error) {
return blackfriday.SanitizedAnchorName(s), nil
}
type reflinker interface {
Ref(args map[string]interface{}) (string, error)
RelRef(args map[string]interface{}) (string, error)
}
// Ref returns the absolute URL path to a given content item.
func (ns *Namespace) Ref(in interface{}, args interface{}) (template.HTML, error) {
p, ok := in.(reflinker)
p, ok := in.(urls.RefLinker)
if !ok {
return "", errors.New("invalid Page received in Ref")
}
@@ -112,7 +107,7 @@ func (ns *Namespace) Ref(in interface{}, args interface{}) (template.HTML, error
// RelRef returns the relative URL path to a given content item.
func (ns *Namespace) RelRef(in interface{}, args interface{}) (template.HTML, error) {
p, ok := in.(reflinker)
p, ok := in.(urls.RefLinker)
if !ok {
return "", errors.New("invalid Page received in RelRef")
}