mirror of
https://github.com/gohugoio/hugo.git
synced 2024-11-28 22:21:46 -05:00
Revert "hugolib: Normalize permalink path segments"
This reverts commit 06976ebb87
.
Fixes #5223
This commit is contained in:
parent
4b82f74848
commit
058cc6c2c3
2 changed files with 30 additions and 30 deletions
|
@ -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() {
|
||||||
|
|
|
@ -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 {
|
||||||
|
|
Loading…
Reference in a new issue