Revert "hugolib: Normalize permalink path segments"

This reverts commit 06976ebb87.

Fixes #5223
This commit is contained in:
Bjørn Erik Pedersen 2018-09-18 09:27:49 +02:00
parent 4b82f74848
commit 058cc6c2c3
No known key found for this signature in database
GPG key ID: 330E6E2BD4859D8F
2 changed files with 30 additions and 30 deletions

View file

@ -154,7 +154,7 @@ func pageToPermalinkDate(p *Page, dateField string) (string, error) {
func pageToPermalinkTitle(p *Page, _ string) (string, error) { func pageToPermalinkTitle(p *Page, _ string) (string, error) {
// Page contains Node which has Title // Page contains Node which has Title
// (also contains URLPath which has Slug, sometimes) // (also contains URLPath which has Slug, sometimes)
return p.s.PathSpec.MakeSegment(p.title), nil return p.s.PathSpec.URLize(p.title), nil
} }
// pageToPermalinkFilename returns the URL-safe form of the filename // pageToPermalinkFilename returns the URL-safe form of the filename
@ -166,7 +166,7 @@ func pageToPermalinkFilename(p *Page, _ string) (string, error) {
_, name = filepath.Split(dir) _, name = filepath.Split(dir)
} }
return p.s.PathSpec.MakeSegment(name), nil return p.s.PathSpec.URLize(name), nil
} }
// if the page has a slug, return the slug, else return the title // if the page has a slug, return the slug, else return the title
@ -181,30 +181,20 @@ func pageToPermalinkSlugElseTitle(p *Page, a string) (string, error) {
if strings.HasSuffix(p.Slug, "-") { if strings.HasSuffix(p.Slug, "-") {
p.Slug = p.Slug[0 : len(p.Slug)-1] p.Slug = p.Slug[0 : len(p.Slug)-1]
} }
return p.s.PathSpec.MakeSegment(p.Slug), nil return p.s.PathSpec.URLize(p.Slug), nil
} }
return pageToPermalinkTitle(p, a) return pageToPermalinkTitle(p, a)
} }
func pageToPermalinkSection(p *Page, _ string) (string, error) { func pageToPermalinkSection(p *Page, _ string) (string, error) {
// Page contains Node contains URLPath which has Section // Page contains Node contains URLPath which has Section
return p.s.PathSpec.MakeSegment(p.Section()), nil return p.Section(), nil
} }
func pageToPermalinkSections(p *Page, _ string) (string, error) { func pageToPermalinkSections(p *Page, _ string) (string, error) {
// TODO(bep) we have some superflous URLize in this file, but let's // TODO(bep) we have some superflous URLize in this file, but let's
// deal with that later. // deal with that later.
return path.Join(p.CurrentSection().sections...), nil
cs := p.CurrentSection()
if cs == nil {
return "", errors.New("\":sections\" attribute requires parent page but is nil")
}
sections := make([]string, len(cs.sections))
for i := range cs.sections {
sections[i] = p.s.PathSpec.MakeSegment(cs.sections[i])
}
return path.Join(sections...), nil
} }
func init() { func init() {

View file

@ -19,26 +19,36 @@ import (
) )
// testdataPermalinks is used by a couple of tests; the expandsTo content is // testdataPermalinks is used by a couple of tests; the expandsTo content is
// subject to the data in simplePageJSON. // subject to the data in SIMPLE_PAGE_JSON.
var testdataPermalinks = []struct { var testdataPermalinks = []struct {
spec string spec string
valid bool valid bool
expandsTo string expandsTo string
}{ }{
{":title", true, "spf13-vim-3.0-release-and-new-website"}, //{"/:year/:month/:title/", true, "/2012/04/spf13-vim-3.0-release-and-new-website/"},
//{"/:title", true, "/spf13-vim-3.0-release-and-new-website"},
//{":title", true, "spf13-vim-3.0-release-and-new-website"},
//{"/blog/:year/:yearday/:title", true, "/blog/2012/97/spf13-vim-3.0-release-and-new-website"},
{"/:year-:month-:title", true, "/2012-04-spf13-vim-3.0-release-and-new-website"}, {"/:year-:month-:title", true, "/2012-04-spf13-vim-3.0-release-and-new-website"},
{"/blog/:year-:month-:title", true, "/blog/2012-04-spf13-vim-3.0-release-and-new-website"},
{"/:year/:yearday/:month/:monthname/:day/:weekday/:weekdayname/", true, "/2012/97/04/April/06/5/Friday/"}, // Dates {"/blog-:year-:month-:title", true, "/blog-2012-04-spf13-vim-3.0-release-and-new-website"},
{"/:section/", true, "/blue/"}, // Section //{"/blog/:fred", false, ""},
{"/:title/", true, "/spf13-vim-3.0-release-and-new-website/"}, // Title //{"/:year//:title", false, ""},
{"/:slug/", true, "/spf13-vim-3-0-release-and-new-website/"}, // Slug //{
{"/:filename/", true, "/test-page/"}, // Filename //"/:section/:year/:month/:day/:weekdayname/:yearday/:title",
// TODO(moorereason): need test scaffolding for this. //true,
//{"/:sections/", false, "/blue/"}, // Sections //"/blue/2012/04/06/Friday/97/spf13-vim-3.0-release-and-new-website",
//},
// Failures //{
{"/blog/:fred", false, ""}, //"/:weekday/:weekdayname/:month/:monthname",
{"/:year//:title", false, ""}, //true,
//"/5/Friday/04/April",
//},
//{
//"/:slug/:title",
//true,
//"/spf13-vim-3-0-release-and-new-website/spf13-vim-3.0-release-and-new-website",
//},
} }
func TestPermalinkValidation(t *testing.T) { func TestPermalinkValidation(t *testing.T) {
@ -65,7 +75,7 @@ func TestPermalinkExpansion(t *testing.T) {
page, err := s.NewPageFrom(strings.NewReader(simplePageJSON), "blue/test-page.md") page, err := s.NewPageFrom(strings.NewReader(simplePageJSON), "blue/test-page.md")
if err != nil { if err != nil {
t.Fatalf("failed before we began, could not parse simplePageJSON: %s", err) t.Fatalf("failed before we began, could not parse SIMPLE_PAGE_JSON: %s", err)
} }
for _, item := range testdataPermalinks { for _, item := range testdataPermalinks {
if !item.valid { if !item.valid {