igir
Version:
🕹 A zero-setup ROM collection manager that sorts, filters, extracts or archives, patches, and reports on collections of any size on any OS.
293 lines (292 loc) • 3.79 kB
JavaScript
class CP437Encoder {
static DECODER_TABLE = [
"\0",
"\u263A",
"\u263B",
"\u2665",
"\u2666",
"\u2663",
"\u2660",
"\u2022",
"\u25D8",
"\u25CB",
"\u25D9",
"\u2642",
"\u2640",
"\u266A",
"\u266B",
"\u263C",
"\u25BA",
"\u25C4",
"\u2195",
"\u203C",
"\xB6",
"\xA7",
"\u25AC",
"\u21A8",
"\u2191",
"\u2193",
"\u2192",
"\u2190",
"\u221F",
"\u2194",
"\u25B2",
"\u25BC",
" ",
"!",
'"',
"#",
"$",
"%",
"&",
"'",
"(",
")",
"*",
"+",
",",
"-",
".",
"/",
"0",
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8",
"9",
":",
";",
"<",
"=",
">",
"?",
"@",
"A",
"B",
"C",
"D",
"E",
"F",
"G",
"H",
"I",
"J",
"K",
"L",
"M",
"N",
"O",
"P",
"Q",
"R",
"S",
"T",
"U",
"V",
"W",
"X",
"Y",
"Z",
"[",
"\\",
"]",
"^",
"_",
"`",
"a",
"b",
"c",
"d",
"e",
"f",
"g",
"h",
"i",
"j",
"k",
"l",
"m",
"n",
"o",
"p",
"q",
"r",
"s",
"t",
"u",
"v",
"w",
"x",
"y",
"z",
"{",
"|",
"}",
"~",
"\u2302",
"\xC7",
"\xFC",
"\xE9",
"\xE2",
"\xE4",
"\xE0",
"\xE5",
"\xE7",
"\xEA",
"\xEB",
"\xE8",
"\xEF",
"\xEE",
"\xEC",
"\xC4",
"\xC5",
"\xC9",
"\xE6",
"\xC6",
"\xF4",
"\xF6",
"\xF2",
"\xFB",
"\xF9",
"\xFF",
"\xD6",
"\xDC",
"\xA2",
"\xA3",
"\xA5",
"\u20A7",
"\u0192",
"\xE1",
"\xED",
"\xF3",
"\xFA",
"\xF1",
"\xD1",
"\xAA",
"\xBA",
"\xBF",
"\u2310",
"\xAC",
"\xBD",
"\xBC",
"\xA1",
"\xAB",
"\xBB",
"\u2591",
"\u2592",
"\u2593",
"\u2502",
"\u2524",
"\u2561",
"\u2562",
"\u2556",
"\u2555",
"\u2563",
"\u2551",
"\u2557",
"\u255D",
"\u255C",
"\u255B",
"\u2510",
"\u2514",
"\u2534",
"\u252C",
"\u251C",
"\u2500",
"\u253C",
"\u255E",
"\u255F",
"\u255A",
"\u2554",
"\u2569",
"\u2566",
"\u2560",
"\u2550",
"\u256C",
"\u2567",
"\u2568",
"\u2564",
"\u2565",
"\u2559",
"\u2558",
"\u2552",
"\u2553",
"\u256B",
"\u256A",
"\u2518",
"\u250C",
"\u2588",
"\u2584",
"\u258C",
"\u2590",
"\u2580",
"\u03B1",
"\xDF",
"\u0393",
"\u03C0",
"\u03A3",
"\u03C3",
"\xB5",
"\u03C4",
"\u03A6",
"\u0398",
"\u03A9",
"\u03B4",
"\u221E",
"\u03C6",
"\u03B5",
"\u2229",
"\u2261",
"\xB1",
"\u2265",
"\u2264",
"\u2320",
"\u2321",
"\xF7",
"\u2248",
"\xB0",
"\u2219",
"\xB7",
"\u221A",
"\u207F",
"\xB2",
"\u25A0",
"\xA0"
];
static ENCODER_TABLE = this.DECODER_TABLE.reduce(
(map, char, idx) => {
map.set(char, idx);
return map;
},
/* @__PURE__ */ new Map()
);
/**
* Can the string be encoded? i.e. does it contain only encodable characters?
*/
static canEncode(input) {
for (const char of input) {
if (!this.ENCODER_TABLE.has(char)) {
return false;
}
}
return true;
}
/**
* Encode a string.
*/
static encode(input) {
const buffer = Buffer.allocUnsafe(input.length);
for (let i = 0; i < buffer.length; i++) {
buffer[i] = this.ENCODER_TABLE.get(input[i]) ?? 0;
}
return buffer;
}
}
export {
CP437Encoder as default
};
//# sourceMappingURL=cp437Encoder.js.map