any-ascii
Version:
Unicode to ASCII transliteration
31 lines (28 loc) • 591 B
JavaScript
import block from './block.js';
const blocks = {};
/**
* Transliterates a Unicode string into ASCII.
*
* @param {string} string
* @return {string}
*/
export default function anyAscii(string) {
let result = '';
for (const c of string) {
const codePoint = c.codePointAt(0);
if (codePoint <= 0x7f) {
result += c;
continue;
}
const blockNum = codePoint >>> 8;
const lo = codePoint & 0xff;
let b = blocks[blockNum];
if (b === undefined) {
blocks[blockNum] = b = block(blockNum).split("\t");
}
if (b.length > lo) {
result += b[lo];
}
}
return result;
}