-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathindex.js
45 lines (39 loc) · 4.44 KB
/
index.js
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
'use strict'
/**
* RemoveDiacritics static class.
* @class
*/
class RemoveDiacritics {
static process (str, locale = '') {
const chars = { 'ª': 'a', 'º': 'o', 'À': 'A', 'Á': 'A', 'Â': 'A', 'Ã': 'A', 'Ä': 'A', 'Å': 'A', 'Æ': 'AE', 'Ç': 'C', 'È': 'E', 'É': 'E', 'Ê': 'E', 'Ë': 'E', 'Ì': 'I', 'Í': 'I', 'Î': 'I', 'Ï': 'I', 'Ð': 'D', 'Ñ': 'N', 'Ò': 'O', 'Ó': 'O', 'Ô': 'O', 'Õ': 'O', 'Ö': 'O', 'Ù': 'U', 'Ú': 'U', 'Û': 'U', 'Ü': 'U', 'Ý': 'Y', 'Þ': 'TH', 'ß': 's', 'à': 'a', 'á': 'a', 'â': 'a', 'ã': 'a', 'ä': 'a', 'å': 'a', 'æ': 'ae', 'ç': 'c', 'è': 'e', 'é': 'e', 'ê': 'e', 'ë': 'e', 'ì': 'i', 'í': 'i', 'î': 'i', 'ï': 'i', 'ð': 'd', 'ñ': 'n', 'ò': 'o', 'ó': 'o', 'ô': 'o', 'õ': 'o', 'ö': 'o', 'ø': 'o', 'ù': 'u', 'ú': 'u', 'û': 'u', 'ü': 'u', 'ý': 'y', 'þ': 'th', 'ÿ': 'y', 'Ø': 'O', 'Ā': 'A', 'ā': 'a', 'Ă': 'A', 'ă': 'a', 'Ą': 'A', 'ą': 'a', 'Ć': 'C', 'ć': 'c', 'Ĉ': 'C', 'ĉ': 'c', 'Ċ': 'C', 'ċ': 'c', 'Č': 'C', 'č': 'c', 'Ď': 'D', 'ď': 'd', 'Đ': 'D', 'đ': 'd', 'Ē': 'E', 'ē': 'e', 'Ĕ': 'E', 'ĕ': 'e', 'Ė': 'E', 'ė': 'e', 'Ę': 'E', 'ę': 'e', 'Ě': 'E', 'ě': 'e', 'Ĝ': 'G', 'ĝ': 'g', 'Ğ': 'G', 'ğ': 'g', 'Ġ': 'G', 'ġ': 'g', 'Ģ': 'G', 'ģ': 'g', 'Ĥ': 'H', 'ĥ': 'h', 'Ħ': 'H', 'ħ': 'h', 'Ĩ': 'I', 'ĩ': 'i', 'Ī': 'I', 'ī': 'i', 'Ĭ': 'I', 'ĭ': 'i', 'Į': 'I', 'į': 'i', 'İ': 'I', 'ı': 'i', 'IJ': 'IJ', 'ij': 'ij', 'Ĵ': 'J', 'ĵ': 'j', 'Ķ': 'K', 'ķ': 'k', 'ĸ': 'k', 'Ĺ': 'L', 'ĺ': 'l', 'Ļ': 'L', 'ļ': 'l', 'Ľ': 'L', 'ľ': 'l', 'Ŀ': 'L', 'ŀ': 'l', 'Ł': 'L', 'ł': 'l', 'Ń': 'N', 'ń': 'n', 'Ņ': 'N', 'ņ': 'n', 'Ň': 'N', 'ň': 'n', 'ʼn': 'n', 'Ŋ': 'N', 'ŋ': 'n', 'Ō': 'O', 'ō': 'o', 'Ŏ': 'O', 'ŏ': 'o', 'Ő': 'O', 'ő': 'o', 'Œ': 'OE', 'œ': 'oe', 'Ŕ': 'R', 'ŕ': 'r', 'Ŗ': 'R', 'ŗ': 'r', 'Ř': 'R', 'ř': 'r', 'Ś': 'S', 'ś': 's', 'Ŝ': 'S', 'ŝ': 's', 'Ş': 'S', 'ş': 's', 'Š': 'S', 'š': 's', 'Ţ': 'T', 'ţ': 't', 'Ť': 'T', 'ť': 't', 'Ŧ': 'T', 'ŧ': 't', 'Ũ': 'U', 'ũ': 'u', 'Ū': 'U', 'ū': 'u', 'Ŭ': 'U', 'ŭ': 'u', 'Ů': 'U', 'ů': 'u', 'Ű': 'U', 'ű': 'u', 'Ų': 'U', 'ų': 'u', 'Ŵ': 'W', 'ŵ': 'w', 'Ŷ': 'Y', 'ŷ': 'y', 'Ÿ': 'Y', 'Ź': 'Z', 'ź': 'z', 'Ż': 'Z', 'ż': 'z', 'Ž': 'Z', 'ž': 'z', 'ſ': 's', 'Ș': 'S', 'ș': 's', 'Ț': 'T', 'ț': 't', '€': 'E', '£': '', 'Ơ': 'O', 'ơ': 'o', 'Ư': 'U', 'ư': 'u', 'Ầ': 'A', 'ầ': 'a', 'Ằ': 'A', 'ằ': 'a', 'Ề': 'E', 'ề': 'e', 'Ồ': 'O', 'ồ': 'o', 'Ờ': 'O', 'ờ': 'o', 'Ừ': 'U', 'ừ': 'u', 'Ỳ': 'Y', 'ỳ': 'y', 'Ả': 'A', 'ả': 'a', 'Ẩ': 'A', 'ẩ': 'a', 'Ẳ': 'A', 'ẳ': 'a', 'Ẻ': 'E', 'ẻ': 'e', 'Ể': 'E', 'ể': 'e', 'Ỉ': 'I', 'ỉ': 'i', 'Ỏ': 'O', 'ỏ': 'o', 'Ổ': 'O', 'ổ': 'o', 'Ở': 'O', 'ở': 'o', 'Ủ': 'U', 'ủ': 'u', 'Ử': 'U', 'ử': 'u', 'Ỷ': 'Y', 'ỷ': 'y', 'Ẫ': 'A', 'ẫ': 'a', 'Ẵ': 'A', 'ẵ': 'a', 'Ẽ': 'E', 'ẽ': 'e', 'Ễ': 'E', 'ễ': 'e', 'Ỗ': 'O', 'ỗ': 'o', 'Ỡ': 'O', 'ỡ': 'o', 'Ữ': 'U', 'ữ': 'u', 'Ỹ': 'Y', 'ỹ': 'y', 'Ấ': 'A', 'ấ': 'a', 'Ắ': 'A', 'ắ': 'a', 'Ế': 'E', 'ế': 'e', 'Ố': 'O', 'ố': 'o', 'Ớ': 'O', 'ớ': 'o', 'Ứ': 'U', 'ứ': 'u', 'Ạ': 'A', 'ạ': 'a', 'Ậ': 'A', 'ậ': 'a', 'Ặ': 'A', 'ặ': 'a', 'Ẹ': 'E', 'ẹ': 'e', 'Ệ': 'E', 'ệ': 'e', 'Ị': 'I', 'ị': 'i', 'Ọ': 'O', 'ọ': 'o', 'Ộ': 'O', 'ộ': 'o', 'Ợ': 'O', 'ợ': 'o', 'Ụ': 'U', 'ụ': 'u', 'Ự': 'U', 'ự': 'u', 'Ỵ': 'Y', 'ỵ': 'y', 'ɑ': 'a', 'Ǖ': 'U', 'ǖ': 'u', 'Ǘ': 'U', 'ǘ': 'u', 'Ǎ': 'A', 'ǎ': 'a', 'Ǐ': 'I', 'ǐ': 'i', 'Ǒ': 'O', 'ǒ': 'o', 'Ǔ': 'U', 'ǔ': 'u', 'Ǚ': 'U', 'ǚ': 'u', 'Ǜ': 'U', 'ǜ': 'u' }
if (locale === 'de_DE' || locale === 'de_DE_formal' || locale === 'de_CH' || locale === 'de_CH_informal') {
chars[ 'Ä' ] = 'Ae'
chars[ 'ä' ] = 'ae'
chars[ 'Ö' ] = 'Oe'
chars[ 'ö' ] = 'oe'
chars[ 'Ü' ] = 'Ue'
chars[ 'ü' ] = 'ue'
chars[ 'ß' ] = 'ss'
} else if (locale === 'da_DK') {
chars[ 'Æ' ] = 'Ae'
chars[ 'æ' ] = 'ae'
chars[ 'Ø' ] = 'Oe'
chars[ 'ø' ] = 'oe'
chars[ 'Å' ] = 'Aa'
chars[ 'å' ] = 'aa'
} else if (locale === 'ca') {
chars[ 'l·l' ] = 'll'
} else if (locale === 'sr_RS' || locale === 'bs_BA') {
chars[ 'Đ' ] = 'DJ'
chars[ 'đ' ] = 'dj'
}
let result = []
for (const c of str) {
result.push(chars[c] || c)
}
return result.join('')
}
}
module.exports = function (str, locale) {
return RemoveDiacritics.process(str, locale)
}