Preserve Unicode marks in MakePath
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Sun, 18 Oct 2015 08:36:27 +0000 (10:36 +0200)
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Sun, 18 Oct 2015 08:36:27 +0000 (10:36 +0200)
Fixes #1488

helpers/path.go
helpers/path_test.go

index 9ead807c7bf8444e90af589aff6e3c5c4e2ded67..018c6fecba06d6e17c0e7c312afe4cd5a239a358 100644 (file)
@@ -96,7 +96,7 @@ func UnicodeSanitize(s string) string {
        target := make([]rune, 0, len(source))
 
        for _, r := range source {
-               if unicode.IsLetter(r) || unicode.IsDigit(r) || r == '.' || r == '/' || r == '\\' || r == '_' || r == '-' || r == '#' {
+               if unicode.IsLetter(r) || unicode.IsDigit(r) || unicode.IsMark(r) || r == '.' || r == '/' || r == '\\' || r == '_' || r == '-' || r == '#' {
                        target = append(target, r)
                }
        }
index 95171165f3c430243cb6e16ed14572eee3a8812e..9534cf9c1d6959db08aa851e9046b393d52338d1 100644 (file)
@@ -19,22 +19,25 @@ import (
 func TestMakePath(t *testing.T) {
        viper.Reset()
        defer viper.Reset()
-       viper.Set("RemovePathAccents", true)
 
        tests := []struct {
-               input    string
-               expected string
+               input         string
+               expected      string
+               removeAccents bool
        }{
-               {"  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"},
-               {"трям/трям", "трям/трям"},
-               {"은행", "은행"},
-               {"Банковский кассир", "Банковскии-кассир"},
+               {"  Foo bar  ", "Foo-bar", true},
+               {"Foo.Bar/foo_Bar-Foo", "Foo.Bar/foo_Bar-Foo", true},
+               {"fOO,bar:foo%bAR", "fOObarfoobAR", true},
+               {"FOo/BaR.html", "FOo/BaR.html", true},
+               {"трям/трям", "трям/трям", true},
+               {"은행", "은행", true},
+               {"Банковский кассир", "Банковскии-кассир", true},
+               // Issue #1488
+               {"संस्कृत", "संस्कृत", false},
        }
 
        for _, test := range tests {
+               viper.Set("RemovePathAccents", test.removeAccents)
                output := MakePath(test.input)
                if output != test.expected {
                        t.Errorf("Expected %#v, got %#v\n", test.expected, output)