Skip to content

Commit

Permalink
hugolib: Fix ref/relref anhcor handling
Browse files Browse the repository at this point in the history
Fixes #6481
  • Loading branch information
bep committed Nov 6, 2019
1 parent 8483b53 commit c26d00d
Show file tree
Hide file tree
Showing 2 changed files with 67 additions and 4 deletions.
65 changes: 64 additions & 1 deletion hugolib/shortcode_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,10 @@ package hugolib
import (
"fmt"
"path/filepath"

"reflect"

"github.com/spf13/viper"

"github.com/gohugoio/hugo/parser/pageparser"
"github.com/gohugoio/hugo/resources/page"

Expand Down Expand Up @@ -1195,3 +1196,65 @@ Get: {{ printf "%v (%T)" $b1 $b1 | safeHTML }}
"types string: - 0: true (string) - 1: trues (string) - 2: 33 (string) - 3: 3.14 (string) ",
)
}

func TestShortcodeRef(t *testing.T) {
for _, plainIDAnchors := range []bool{false, true} {
plainIDAnchors := plainIDAnchors
t.Run(fmt.Sprintf("plainIDAnchors=%t", plainIDAnchors), func(t *testing.T) {
t.Parallel()

v := viper.New()
v.Set("baseURL", "https://example.org")
v.Set("blackfriday", map[string]interface{}{
"plainIDAnchors": plainIDAnchors,
})

builder := newTestSitesBuilder(t).WithViper(v)

for i := 1; i <= 2; i++ {
builder.WithContent(fmt.Sprintf("page%d.md", i), `---
title: "Hugo Rocks!"
---
[Page 1]({{< ref "page1.md" >}})
[Page 1 with anchor]({{< relref "page1.md#doc" >}})
[Page 2]({{< ref "page2.md" >}})
[Page 2 with anchor]({{< relref "page2.md#doc" >}})
## Doc
`)
}

builder.Build(BuildCfg{})

if plainIDAnchors {
builder.AssertFileContent("public/page2/index.html",
`
<a href="/page1/#doc">Page 1 with anchor</a>
<a href="https://example.org/page2/">Page 2</a>
<a href="/page2/#doc">Page 2 with anchor</a></p>
<h2 id="doc">Doc</h2>
`,
)
} else {
builder.AssertFileContent("public/page2/index.html",
`
<p><a href="https://example.org/page1/">Page 1</a>
<a href="/page1/#doc:45ca767ba77bc1445a0acab74f80812f">Page 1 with anchor</a>
<a href="https://example.org/page2/">Page 2</a>
<a href="/page2/#doc:8e3cdf52fa21e33270c99433820e46bd">Page 2 with anchor</a></p>
<h2 id="doc:8e3cdf52fa21e33270c99433820e46bd">Doc</h2>
`,
)
}

})
}

}
6 changes: 3 additions & 3 deletions hugolib/site.go
Original file line number Diff line number Diff line change
Expand Up @@ -719,12 +719,12 @@ func (s *siteRefLinker) refLink(ref string, source interface{}, relative bool, o
var link string

if refURL.Path != "" {
target, err := s.s.getPageNew(p, refURL.Path)
var err error
target, err = s.s.getPageNew(p, refURL.Path)
var pos text.Position
if err != nil || target == nil {
if p, ok := source.(text.Positioner); ok {
pos = p.Position()

}
}

Expand Down Expand Up @@ -758,8 +758,8 @@ func (s *siteRefLinker) refLink(ref string, source interface{}, relative bool, o
}

if refURL.Fragment != "" {
_ = target
link = link + "#" + refURL.Fragment

if pctx, ok := target.(pageContext); ok && !target.File().IsZero() && !pctx.getRenderingConfig().PlainIDAnchors {
if refURL.Path != "" {
link = link + ":" + target.File().UniqueID()
Expand Down

0 comments on commit c26d00d

Please sign in to comment.