to-funcs
Version:
A very limited subset of to-* functions I use every day
272 lines (270 loc) • 4.08 kB
JavaScript
const map = {
[ ]: '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',
[ ]: 'ss',
[ ]: 'a',
[ ]: 'a',
[ ]: 'a',
[ ]: 'a',
[ ]: 'a',
[ ]: 'a',
[ ]: 'ae',
[ ]: 'c',
[ ]: 'e',
[ ]: 'e',
[ ]: 'e',
[ ]: 'e',
[ ]: 'i',
[ ]: 'i',
[ ]: 'i',
[ ]: 'i',
[ ]: 'o',
[ ]: 'n',
[ ]: 'o',
[ ]: 'o',
[ ]: 'o',
[ ]: 'o',
[ ]: 'o',
[ ]: 'o',
[ ]: 'u',
[ ]: 'u',
[ ]: 'u',
[ ]: 'u',
[ ]: 'y',
[ ]: 'th',
[ ]: 'y',
[ ]: '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',
[ ]: 'J',
[ ]: 'j',
[ ]: 'K',
[ ]: 'k',
[ ]: 'k',
[ ]: 'L',
[ ]: 'l',
[ ]: 'L',
[ ]: 'l',
[ ]: 'L',
[ ]: 'l',
[ ]: 'L',
[ ]: 'l',
[ ]: 'L',
[ ]: 'l',
[ ]: 'N',
[ ]: 'n',
[ ]: 'N',
[ ]: 'n',
[ ]: 'N',
[ ]: 'n',
[ ]: 'n',
[ ]: 'ENG',
[ ]: 'eng',
[ ]: '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',
// Romanian
[ ]: 'S',
[ ]: 's',
[ ]: 'T',
[ ]: 't',
// Welsh
[ ]: 'W',
[ ]: 'w',
[ ]: 'W',
[ ]: 'w',
[ ]: 'W',
[ ]: 'w',
[ ]: 'Y',
[ ]: 'y',
// Unicode characters to close analogues
[ ]: '...',
[ ]: '!!',
[ ]: ',',
[ ]: ':',
[ ]: ';',
// Hyphenation and dashes
[ ]: '-',
[ ]: '-',
[ ]: '-',
[ ]: '-',
[ ]: '-',
[ ]: '-',
[ ]: '-',
[ ]: '-',
[ ]: '-',
[ ]: '-',
[ ]: '-',
// Math and fractions
[ ]: '+-',
[ ]: '1/4',
[ ]: '1/2',
[ ]: '3/4',
[ ]: 'x',
[ ]: '/',
[ ]: '=',
[ ]: '/',
[ ]: '\\',
// No-break space
[ ]: ' ',
// Single-angle quotes
[ ]: "'",
[ ]: "'",
[ ]: "'",
[ ]: "'",
[ ]: '<',
[ ]: '>',
[ ]: "'",
[ ]: "'",
[ ]: "'",
[ ]: "'",
// Double-angle quotes
[ ]: '"',
[ ]: '"',
[ ]: '"',
[ ]: '"',
[ ]: '"',
[ ]: '"',
[ ]: '"',
[ ]: '"',
[ ]: '"',
[ ]: '"',
}
module.exports = function(str) {
if (typeof str !== 'string') return ''
var c
for (var i = str.length - 1; i >= 0; i--) {
c = str.charCodeAt(i)
if (c > 127) {
c = map[c] || ''
str = str.substring(0, i) + c + str.substring(i + 1)
}
}
return str
}