mirror of
https://github.com/clangen/musikcube.git
synced 2024-12-29 09:18:36 +00:00
264 lines
8.7 KiB
JavaScript
264 lines
8.7 KiB
JavaScript
const INPUT = `
|
||
/* A */
|
||
{ (u32)0xc0 /* À */ , (u32)'A' },
|
||
{ (u32)0xc1 /* Á */ , (u32)'A' },
|
||
{ (u32)0xc2 /* Â */ , (u32)'A' },
|
||
{ (u32)0xc3 /* Ã */ , (u32)'A' },
|
||
{ (u32)0xc4 /* Ä */ , (u32)'A' },
|
||
{ (u32)0xc5 /* Å */ , (u32)'A' },
|
||
{ (u32)0x100 /* Ā */ , (u32)'A' },
|
||
{ (u32)0x102 /* Ă */ , (u32)'A' },
|
||
{ (u32)0x104 /* Ą */ , (u32)'A' },
|
||
/* C */
|
||
{ (u32)0xc7 /* Ç */ , (u32)'C' },
|
||
{ (u32)0x106 /* Ć */ , (u32)'C' },
|
||
{ (u32)0x108 /* Ĉ */ , (u32)'C' },
|
||
{ (u32)0x10a /* Ċ */ , (u32)'C' },
|
||
{ (u32)0x10c /* Č */ , (u32)'C' },
|
||
/* D */
|
||
{ (u32)0x10e /* Ď */ , (u32)'D' },
|
||
{ (u32)0x110 /* Đ */ , (u32)'D' },
|
||
/* E */
|
||
{ (u32)0xc8 /* È */ , (u32)'E' },
|
||
{ (u32)0xc9 /* É */ , (u32)'E' },
|
||
{ (u32)0xca /* Ê */ , (u32)'E' },
|
||
{ (u32)0xcb /* Ë */ , (u32)'E' },
|
||
{ (u32)0x112 /* Ē */ , (u32)'E' },
|
||
{ (u32)0x114 /* Ĕ */ , (u32)'E' },
|
||
{ (u32)0x116 /* Ė */ , (u32)'E' },
|
||
{ (u32)0x118 /* Ę */ , (u32)'E' },
|
||
{ (u32)0x11a /* Ě */ , (u32)'E' },
|
||
/* G */
|
||
{ (u32)0x11c /* Ĝ */ , (u32)'G' },
|
||
{ (u32)0x11e /* Ğ */ , (u32)'G' },
|
||
{ (u32)0x120 /* Ġ */ , (u32)'G' },
|
||
{ (u32)0x122 /* Ģ */ , (u32)'G' },
|
||
/* H */
|
||
{ (u32)0x124 /* Ĥ */ , (u32)'H' },
|
||
{ (u32)0x126 /* Ħ */ , (u32)'H' },
|
||
/* I */
|
||
{ (u32)0xcc /* Ì */ , (u32)'I' },
|
||
{ (u32)0xcd /* Í */ , (u32)'I' },
|
||
{ (u32)0xce /* Î */ , (u32)'I' },
|
||
{ (u32)0xcf /* Ï */ , (u32)'I' },
|
||
{ (u32)0x128 /* Ĩ */ , (u32)'I' },
|
||
{ (u32)0x12a /* Ī */ , (u32)'I' },
|
||
{ (u32)0x12c /* Ĭ */ , (u32)'I' },
|
||
{ (u32)0x12e /* Į */ , (u32)'I' },
|
||
{ (u32)0x130 /* İ */ , (u32)'I' },
|
||
/* J */
|
||
{ (u32)0x134 /* Ĵ */ , (u32)'J' },
|
||
/* K */
|
||
{ (u32)0x136 /* Ķ */ , (u32)'K' },
|
||
/* L */
|
||
{ (u32)0x139 /* Ĺ */ , (u32)'L' },
|
||
{ (u32)0x13b /* Ļ */ , (u32)'L' },
|
||
{ (u32)0x13d /* Ľ */ , (u32)'L' },
|
||
{ (u32)0x13f /* Ŀ */ , (u32)'L' },
|
||
{ (u32)0x141 /* Ł */ , (u32)'L' },
|
||
/* N */
|
||
{ (u32)0xd1 /* Ñ */ , (u32)'N' },
|
||
{ (u32)0x143 /* Ń */ , (u32)'N' },
|
||
{ (u32)0x145 /* Ņ */ , (u32)'N' },
|
||
{ (u32)0x147 /* Ň */ , (u32)'N' },
|
||
{ (u32)0x149 /* ʼn */ , (u32)'N' },
|
||
{ (u32)0x14b /* ŋ */ , (u32)'N' },
|
||
/* O */
|
||
{ (u32)0xd2 /* Ò */ , (u32)'O' },
|
||
{ (u32)0xd3 /* Ó */ , (u32)'O' },
|
||
{ (u32)0xd4 /* Ô */ , (u32)'O' },
|
||
{ (u32)0xd5 /* Õ */ , (u32)'O' },
|
||
{ (u32)0xd6 /* Ö */ , (u32)'O' },
|
||
{ (u32)0x14c /* Ō */ , (u32)'O' },
|
||
{ (u32)0x14e /* Ŏ */ , (u32)'O' },
|
||
{ (u32)0x150 /* Ő */ , (u32)'O' },
|
||
/* R */
|
||
{ (u32)0x154 /* Ŕ */ , (u32)'R' },
|
||
{ (u32)0x156 /* Ŗ */ , (u32)'R' },
|
||
{ (u32)0x158 /* Ř */ , (u32)'R' },
|
||
/* S */
|
||
{ (u32)0x15a /* Ś */ , (u32)'S' },
|
||
{ (u32)0x15c /* Ŝ */ , (u32)'S' },
|
||
{ (u32)0x15e /* Ş */ , (u32)'S' },
|
||
{ (u32)0x160 /* Š */ , (u32)'S' },
|
||
/* T */
|
||
{ (u32)0x162 /* Ţ */ , (u32)'T' },
|
||
{ (u32)0x164 /* Ť */ , (u32)'T' },
|
||
{ (u32)0x166 /* Ŧ */ , (u32)'T' },
|
||
/* U */
|
||
{ (u32)0xd9 /* Ù */ , (u32)'U' },
|
||
{ (u32)0xda /* Ú */ , (u32)'U' },
|
||
{ (u32)0xdb /* Û */ , (u32)'U' },
|
||
{ (u32)0xdc /* Ü */ , (u32)'U' },
|
||
{ (u32)0x168 /* Ũ */ , (u32)'U' },
|
||
{ (u32)0x16a /* Ū */ , (u32)'U' },
|
||
{ (u32)0x16c /* Ŭ */ , (u32)'U' },
|
||
{ (u32)0x16e /* Ů */ , (u32)'U' },
|
||
{ (u32)0x170 /* Ű */ , (u32)'U' },
|
||
{ (u32)0x172 /* Ų */ , (u32)'U' },
|
||
/* W */
|
||
{ (u32)0x174 /* Ŵ */ , (u32)'W' },
|
||
/* Y */
|
||
{ (u32)0xdd /* Ý */ , (u32)'Y' },
|
||
{ (u32)0x176 /* Ŷ */ , (u32)'Y' },
|
||
{ (u32)0x178 /* Ÿ */ , (u32)'Y' },
|
||
/* S */
|
||
{ (u32)0xdf /* ß */ , (u32)'s' },
|
||
/* Z */
|
||
{ (u32)0x179 /* Ź */ , (u32)'Z' },
|
||
{ (u32)0x17b /* Ż */ , (u32)'Z' },
|
||
{ (u32)0x17d /* Ž */ , (u32)'Z' },
|
||
/* a */
|
||
{ (u32)0xe0 /* à */ , (u32)'a' },
|
||
{ (u32)0xe1 /* á */ , (u32)'a' },
|
||
{ (u32)0xe2 /* â */ , (u32)'a' },
|
||
{ (u32)0xe3 /* ã */ , (u32)'a' },
|
||
{ (u32)0xe4 /* ä */ , (u32)'a' },
|
||
{ (u32)0xe5 /* å */ , (u32)'a' },
|
||
{ (u32)0x101 /* ā */ , (u32)'a' },
|
||
{ (u32)0x103 /* ă */ , (u32)'a' },
|
||
{ (u32)0x105 /* ą */ , (u32)'a' },
|
||
/* c */
|
||
{ (u32)0xe7 /* ç */ , (u32)'c' },
|
||
{ (u32)0x107 /* ć */ , (u32)'c' },
|
||
{ (u32)0x109 /* ĉ */ , (u32)'c' },
|
||
{ (u32)0x10b /* ċ */ , (u32)'c' },
|
||
{ (u32)0x10d /* č */ , (u32)'c' },
|
||
/* d */
|
||
{ (u32)0x10f /* ď */ , (u32)'d' },
|
||
{ (u32)0x111 /* đ */ , (u32)'d' },
|
||
/* e */
|
||
{ (u32)0xe8 /* è */ , (u32)'e' },
|
||
{ (u32)0xe9 /* é */ , (u32)'e' },
|
||
{ (u32)0xea /* ê */ , (u32)'e' },
|
||
{ (u32)0xeb /* ë */ , (u32)'e' },
|
||
{ (u32)0x113 /* ē */ , (u32)'e' },
|
||
{ (u32)0x115 /* ĕ */ , (u32)'e' },
|
||
{ (u32)0x117 /* ė */ , (u32)'e' },
|
||
{ (u32)0x119 /* ę */ , (u32)'e' },
|
||
{ (u32)0x11b /* ě */ , (u32)'e' },
|
||
/* g */
|
||
{ (u32)0x11d /* ĝ */ , (u32)'g' },
|
||
{ (u32)0x11f /* ğ */ , (u32)'g' },
|
||
{ (u32)0x121 /* ġ */ , (u32)'g' },
|
||
{ (u32)0x123 /* ģ */ , (u32)'g' },
|
||
/* h */
|
||
{ (u32)0x125 /* ĥ */ , (u32)'h' },
|
||
{ (u32)0x127 /* ħ */ , (u32)'h' },
|
||
/* i */
|
||
{ (u32)0xec /* ì */ , (u32)'i' },
|
||
{ (u32)0xed /* í */ , (u32)'i' },
|
||
{ (u32)0xee /* î */ , (u32)'i' },
|
||
{ (u32)0xef /* ï */ , (u32)'i' },
|
||
{ (u32)0x129 /* ĩ */ , (u32)'i' },
|
||
{ (u32)0x12b /* ī */ , (u32)'i' },
|
||
{ (u32)0x12d /* ĭ */ , (u32)'i' },
|
||
{ (u32)0x12f /* į */ , (u32)'i' },
|
||
{ (u32)0x131 /* ı */ , (u32)'i' },
|
||
/* j */
|
||
{ (u32)0x135 /* ĵ */ , (u32)'j' },
|
||
/* k */
|
||
{ (u32)0x137 /* ķ */ , (u32)'k' },
|
||
{ (u32)0x138 /* ĸ */ , (u32)'k' },
|
||
/* l */
|
||
{ (u32)0x13a /* ĺ */ , (u32)'l' },
|
||
{ (u32)0x13c /* ļ */ , (u32)'l' },
|
||
{ (u32)0x13e /* ľ */ , (u32)'l' },
|
||
{ (u32)0x140 /* ŀ */ , (u32)'l' },
|
||
{ (u32)0x142 /* ł */ , (u32)'l' },
|
||
/* n */
|
||
{ (u32)0xf1 /* ñ */ , (u32)'n' },
|
||
{ (u32)0x144 /* ń */ , (u32)'n' },
|
||
{ (u32)0x146 /* ņ */ , (u32)'n' },
|
||
{ (u32)0x148 /* ň */ , (u32)'n' },
|
||
{ (u32)0x14a /* Ŋ */ , (u32)'n' },
|
||
/* o */
|
||
{ (u32)0xf2 /* ò */ , (u32)'o' },
|
||
{ (u32)0xf3 /* ó */ , (u32)'o' },
|
||
{ (u32)0xf4 /* ô */ , (u32)'o' },
|
||
{ (u32)0xf5 /* õ */ , (u32)'o' },
|
||
{ (u32)0xf6 /* ö */ , (u32)'o' },
|
||
{ (u32)0xf9 /* ù */ , (u32)'u' },
|
||
{ (u32)0xfa /* ú */ , (u32)'u' },
|
||
{ (u32)0xfb /* û */ , (u32)'u' },
|
||
{ (u32)0xfc /* ü */ , (u32)'u' },
|
||
{ (u32)0x14d /* ō */ , (u32)'o' },
|
||
{ (u32)0x14f /* ŏ */ , (u32)'o' },
|
||
{ (u32)0x151 /* ő */ , (u32)'o' },
|
||
/* r */
|
||
{ (u32)0x155 /* ŕ */ , (u32)'r' },
|
||
{ (u32)0x157 /* ŗ */ , (u32)'r' },
|
||
{ (u32)0x159 /* ř */ , (u32)'r' },
|
||
/* s */
|
||
{ (u32)0x15b /* ś */ , (u32)'s' },
|
||
{ (u32)0x15d /* ŝ */ , (u32)'s' },
|
||
{ (u32)0x15f /* ş */ , (u32)'s' },
|
||
{ (u32)0x161 /* š */ , (u32)'s' },
|
||
{ (u32)0x17f /* ſ */ , (u32)'s' },
|
||
/* t */
|
||
{ (u32)0x163 /* ţ */ , (u32)'t' },
|
||
{ (u32)0x165 /* ť */ , (u32)'t' },
|
||
{ (u32)0x167 /* ŧ */ , (u32)'t' },
|
||
/* u */
|
||
{ (u32)0x169 /* ũ */ , (u32)'u' },
|
||
{ (u32)0x16b /* ū */ , (u32)'u' },
|
||
{ (u32)0x16d /* ŭ */ , (u32)'u' },
|
||
{ (u32)0x16f /* ů */ , (u32)'u' },
|
||
{ (u32)0x171 /* ű */ , (u32)'u' },
|
||
{ (u32)0x173 /* ų */ , (u32)'u' },
|
||
/* w */
|
||
{ (u32)0x175 /* ŵ */ , (u32)'w' },
|
||
/* y */
|
||
{ (u32)0xfd /* ý */ , (u32)'y' },
|
||
{ (u32)0xff /* ÿ */ , (u32)'y' },
|
||
{ (u32)0x177 /* ŷ */ , (u32)'y' },
|
||
/* z */
|
||
{ (u32)0x17a /* ź */ , (u32)'z' },
|
||
{ (u32)0x17c /* ż */ , (u32)'z' },
|
||
{ (u32)0x17e /* ž */ , (u32)'z' },
|
||
`;
|
||
|
||
let result = {};
|
||
let current = { ch: '', values: [] };
|
||
|
||
INPUT.split('\n').forEach((line) => {
|
||
if (line.startsWith(' /* ')) {
|
||
if (current.ch) {
|
||
const existing = result[current.ch] || [];
|
||
result[current.ch] = [...existing, ...current.values];
|
||
}
|
||
ch = line.split('/* ')[1].split(' ')[0];
|
||
const existing = result[ch] || [];
|
||
current = { ch, values: existing };
|
||
} else if (line.startsWith(' { (u32)0x')) {
|
||
const parts = line.split(' { (u32)0x');
|
||
const ch = parts[1].split('/* ')[1].split(' */')[0];
|
||
current.values.push(ch);
|
||
}
|
||
});
|
||
|
||
console.log('-------- case sensitive mapping --------');
|
||
|
||
const sensitive = [];
|
||
Object.keys(result).forEach((k) => {
|
||
const values = `"${k}${result[k].join('')}"`;
|
||
const line = ` { (u32)'${k}', u8${values} },`;
|
||
sensitive.push(line);
|
||
});
|
||
|
||
console.log(sensitive.join('\n'));
|
||
|
||
console.log('---------- case insensitive mapping ----------');
|
||
|
||
const insensitive = [];
|
||
Object.keys(result).forEach((k) => {
|
||
const l = k.toLowerCase();
|
||
const u = k.toUpperCase();
|
||
const lower = `${(result[l] || []).join('')}`;
|
||
const upper = `${(result[u] || []).join('')}`;
|
||
const line = ` { (u32)'${l}', u8"${u}${l}${lower}${upper}" },`;
|
||
insensitive.push(line);
|
||
});
|
||
|
||
console.log(insensitive.join('\n'));
|