This repository has been archived by the owner on Feb 1, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 5
/
string.go
96 lines (92 loc) · 1.52 KB
/
string.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
package rex
import "bytes"
// from - https://github.com/kennygrant/sanitize/blob/master/sanitize.go
// Replace a set of accented characters with ascii equivalents.
func RemoveAccents(text string) string {
// Replace some common accent characters
b := bytes.NewBufferString("")
for _, c := range text {
// Check transliterations first
if val, ok := transliterations[c]; ok {
_, _ = b.WriteString(val)
} else {
_, _ = b.WriteRune(c)
}
}
return b.String()
}
// A very limited list of transliterations to catch common european names translated to urls.
// This set could be expanded with at least caps and many more characters.
var transliterations = map[rune]string{
'À': "A",
'Á': "A",
'Â': "A",
'Ã': "A",
'Ä': "A",
'Å': "AA",
'Æ': "AE",
'Ç': "C",
'È': "E",
'É': "E",
'Ê': "E",
'Ë': "E",
'Ì': "I",
'Í': "I",
'Î': "I",
'Ï': "I",
'Ð': "D",
'Ł': "L",
'Ñ': "N",
'Ò': "O",
'Ó': "O",
'Ô': "O",
'Õ': "O",
'Ö': "O",
'Ø': "OE",
'Ù': "U",
'Ú': "U",
'Ü': "U",
'Û': "U",
'Ý': "Y",
'Þ': "Th",
'ß': "ss",
'à': "a",
'á': "a",
'â': "a",
'ã': "a",
'ä': "a",
'å': "aa",
'æ': "ae",
'ç': "c",
'è': "e",
'é': "e",
'ê': "e",
'ë': "e",
'ì': "i",
'í': "i",
'î': "i",
'ï': "i",
'ð': "d",
'ł': "l",
'ñ': "n",
'ń': "n",
'ò': "o",
'ó': "o",
'ô': "o",
'õ': "o",
'ō': "o",
'ö': "o",
'ø': "oe",
'ś': "s",
'ù': "u",
'ú': "u",
'û': "u",
'ū': "u",
'ü': "u",
'ý': "y",
'þ': "th",
'ÿ': "y",
'ż': "z",
'Œ': "OE",
'œ': "oe",
}