Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add configuration variable: "disablePathToLower" See #557 #1392

Closed
wants to merge 1 commit into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions commands/hugo.go
Original file line number Diff line number Diff line change
Expand Up @@ -160,6 +160,7 @@ func LoadDefaultSettings() {
viper.SetDefault("Blackfriday", helpers.NewBlackfriday())
viper.SetDefault("RSSUri", "index.xml")
viper.SetDefault("SectionPagesMenu", "")
viper.SetDefault("DisablePathToLower", false)
}

// InitializeConfig initializes a config file with sensible default configuration flags.
Expand Down
2 changes: 2 additions & 0 deletions docs/content/overview/configuration.md
Original file line number Diff line number Diff line change
Expand Up @@ -133,6 +133,8 @@ Following is a list of Hugo-defined variables that you can configure and their c
title: ""
# if true, use /filename.html instead of /filename/
uglyURLs: false
# Do not make the url/path to lowercase
disablePathToLower: false
# verbose output
verbose: false
# verbose logging
Expand Down
12 changes: 7 additions & 5 deletions helpers/path.go
Original file line number Diff line number Diff line change
Expand Up @@ -78,11 +78,13 @@ func MakePath(s string) string {
return UnicodeSanitize(strings.Replace(strings.TrimSpace(s), " ", "-", -1))
}

// MakePathToLower creates a Unicode-sanitized string, with the spaces replaced,
// and transformed to lower case.
// E.g. Social Media -> social-media
func MakePathToLower(s string) string {
return strings.ToLower(MakePath(s))
// MakePathSanitized creates a Unicode-sanitized string, with the spaces replaced
func MakePathSanitized(s string) string {
if viper.GetBool("DisablePathToLower") {
return MakePath(s)
} else {
return strings.ToLower(MakePath(s))
}
}

func MakeTitle(inpath string) string {
Expand Down
33 changes: 31 additions & 2 deletions helpers/path_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,10 @@ func TestMakePath(t *testing.T) {
}
}

func TestMakePathToLower(t *testing.T) {
func TestMakePathSanitized(t *testing.T) {
viper.Reset()
defer viper.Reset()

tests := []struct {
input string
expected string
Expand All @@ -54,8 +57,34 @@ func TestMakePathToLower(t *testing.T) {
{"трям/трям", "трям/трям"},
{"은행", "은행"},
}

for _, test := range tests {
output := MakePathSanitized(test.input)
if output != test.expected {
t.Errorf("Expected %#v, got %#v\n", test.expected, output)
}
}
}

func TestMakePathSanitizedDisablePathToLower(t *testing.T) {
viper.Reset()
defer viper.Reset()
viper.Set("DisablePathToLower", true)

tests := []struct {
input string
expected string
}{
{" FOO bar ", "FOO-bar"},
{"Foo.Bar/fOO_bAr-Foo", "Foo.Bar/fOO_bAr-Foo"},
{"FOO,bar:Foo%Bar", "FOObarFooBar"},
{"foo/BAR.HTML", "foo/BAR.HTML"},
{"трям/трям", "трям/трям"},
{"은행", "은행"},
}

for _, test := range tests {
output := MakePathToLower(test.input)
output := MakePathSanitized(test.input)
if output != test.expected {
t.Errorf("Expected %#v, got %#v\n", test.expected, output)
}
Expand Down
2 changes: 1 addition & 1 deletion helpers/url.go
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,7 @@ func SanitizeURLKeepTrailingSlash(in string) string {
// uri: Vim (text editor)
// urlize: vim-text-editor
func URLize(uri string) string {
sanitized := MakePathToLower(uri)
sanitized := MakePathSanitized(uri)

// escape unicode letters
parsedUri, err := url.Parse(sanitized)
Expand Down
4 changes: 2 additions & 2 deletions hugolib/site.go
Original file line number Diff line number Diff line change
Expand Up @@ -1045,7 +1045,7 @@ func (s *Site) newTaxonomyNode(t taxRenderInfo) (*Node, string) {
key := t.key
n := s.NewNode()
if s.Info.preserveTaxonomyNames {
key = helpers.MakePathToLower(key)
key = helpers.MakePathSanitized(key)
// keep as is, just make sure the first char is upper
n.Title = helpers.FirstUpper(t.key)
} else {
Expand Down Expand Up @@ -1188,7 +1188,7 @@ func (s *Site) RenderSectionLists() error {
[]string{"section/" + section + ".html", "_default/section.html", "_default/list.html", "indexes/" + section + ".html", "_default/indexes.html"})

if s.Info.preserveTaxonomyNames {
section = helpers.MakePathToLower(section)
section = helpers.MakePathSanitized(section)
}

n := s.newSectionListNode(sectionName, section, data)
Expand Down
2 changes: 1 addition & 1 deletion hugolib/taxonomy.go
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ type OrderedTaxonomyEntry struct {

// KeyPrep... Taxonomies should be case insensitive. Can make it easily conditional later.
func kp(in string) string {
return helpers.MakePathToLower(in)
return helpers.MakePathSanitized(in)
}

func (i Taxonomy) Get(key string) WeightedPages { return i[kp(key)] }
Expand Down