mirror of
https://github.com/gohugoio/hugo.git
synced 2025-08-20 21:31:32 +02:00
Add config option "disablePathToLower"
Enabling this prevents lowercasing of the path/url. Fixes #557
This commit is contained in:
committed by
Bjørn Erik Pedersen
parent
49fe04c0bd
commit
52d94fa675
@@ -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 {
|
||||
|
@@ -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
|
||||
@@ -54,8 +57,34 @@ func TestMakePathToLower(t *testing.T) {
|
||||
{"трям/трям", "трям/трям"},
|
||||
{"은행", "은행"},
|
||||
}
|
||||
|
||||
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)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
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 := MakePathSanitized(test.input)
|
||||
if output != test.expected {
|
||||
t.Errorf("Expected %#v, got %#v\n", test.expected, output)
|
||||
}
|
||||
|
@@ -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)
|
||||
|
Reference in New Issue
Block a user