transliterator
Version:
Turn strings that contain cyrillic characters into ascii compliant text
239 lines (233 loc) • 3.38 kB
JavaScript
var characterMap = {
'ä': 'ae',
'æ': 'ae',
'ǽ': 'ae',
'ö': 'oe',
'œ': 'oe',
'ü': 'ue',
'Ä': 'Ae',
'Ü': 'Ue',
'Ö': 'Oe',
'À': 'A',
'Á': 'A',
'Â': 'A',
'Ã': 'A',
'Å': 'A',
'Ǻ': 'A',
'Ā': 'A',
'Ă': 'A',
'Ą': 'A',
'Ǎ': 'A',
'à': 'a',
'á': 'a',
'â': 'a',
'ã': 'a',
'å': 'a',
'ǻ': 'a',
'ā': 'a',
'ă': 'a',
'ą': 'a',
'ǎ': 'a',
'ª': 'a',
'Ç': 'C',
'Ć': 'C',
'Ĉ': 'C',
'Ċ': 'C',
'Č': 'C',
'ç': 'c',
'ć': 'c',
'ĉ': 'c',
'ċ': 'c',
'č': 'c',
'Ð': 'D',
'Ď': 'D',
'Đ': 'D',
'ð': 'd',
'ď': 'd',
'đ': 'd',
'È': 'E',
'É': 'E',
'Ê': 'E',
'Ë': 'E',
'Ē': 'E',
'Ĕ': 'E',
'Ė': 'E',
'Ę': 'E',
'Ě': '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',
'ì': 'i',
'í': 'i',
'î': 'i',
'ï': 'i',
'ĩ': 'i',
'ī': 'i',
'ĭ': 'i',
'ǐ': 'i',
'į': 'i',
'ı': 'i',
'Ĵ': 'J',
'ĵ': 'j',
'Ķ': '',
'ķ': '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',
'Ǒ': 'O',
'Ő': 'O',
'Ơ': 'O',
'Ø': 'O',
'Ǿ': 'O',
'ò': 'o',
'ó': 'o',
'ô': 'o',
'õ': 'o',
'ō': 'o',
'ŏ': 'o',
'ǒ': 'o',
'ő': 'o',
'ơ': 'o',
'ø': 'o',
'ǿ': 'o',
'º': 'o',
'Ŕ': 'R',
'Ŗ': 'R',
'Ř': 'R',
'ŕ': 'r',
'ŗ': 'r',
'ř': 'r',
'Ś': 'S',
'Ŝ': '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',
'Ǘ': 'U',
'Ǚ': 'U',
'Ǜ': 'U',
'ù': 'u',
'ú': 'u',
'û': 'u',
'ũ': 'u',
'ū': 'u',
'ŭ': 'u',
'ů': 'u',
'ű': 'u',
'ų': 'u',
'ư': 'u',
'ǔ': 'u',
'ǖ': 'u',
'ǘ': 'u',
'ǚ': 'u',
'ǜ': 'u',
'Ý': 'Y',
'Ÿ': 'Y',
'Ŷ': 'Y',
'ý': 'y',
'ÿ': 'y',
'ŷ': 'y',
'Ŵ': 'W',
'ŵ': 'w',
'Ź': 'Z',
'Ż': 'Z',
'Ž': 'Z',
'ź': 'z',
'ż': 'z',
'ž': 'z',
'Æ': 'AE',
'Ǽ': 'AE',
'ß': 'ss',
'IJ': 'IJ',
'ij': 'ij',
'Œ': 'OE',
'ƒ': 'f'
};
var transliterator = module.exports = function (string, replacement) {
if (string === null || string === undefined) {
return string;
}
if (typeof string !== 'string') {
throw new TypeError('Unmatched type: please use a string.');
}
return string.split('').map(function (character) {
if (character.charCodeAt(0) > 127) {
return typeof characterMap[character] !== 'undefined' ?
characterMap[character] : replacement;
} else {
return character;
}
}).join('');
};
transliterator.characterMap = characterMap;