33 lines
1.2 KiB
JavaScript
33 lines
1.2 KiB
JavaScript
|
// @flow
|
||
|
// This is an internal module, not part of the KaTeX distribution,
|
||
|
// whose purpose is to generate `unicodeSymbols` in Parser.js
|
||
|
// In this way, only this module, and not the distribution/browser,
|
||
|
// needs String's normalize function. As this file is not transpiled,
|
||
|
// Flow comment types syntax is used.
|
||
|
const accents = require('./unicodeAccents');
|
||
|
|
||
|
const result /*: {[string]: string}*/ = {};
|
||
|
const letters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" +
|
||
|
"αβγδεϵζηθϑικλμνξοπϖρϱςστυφϕχψωΓΔΘΛΞΠΣΥΦΨΩ";
|
||
|
for (const letter of letters) {
|
||
|
for (const accent of Object.getOwnPropertyNames(accents)) {
|
||
|
const combined = letter + accent;
|
||
|
const normalized = combined.normalize('NFC');
|
||
|
if (normalized.length === 1) {
|
||
|
result[normalized] = combined;
|
||
|
}
|
||
|
for (const accent2 of Object.getOwnPropertyNames(accents)) {
|
||
|
if (accent === accent2) {
|
||
|
continue;
|
||
|
}
|
||
|
const combined2 = combined + accent2;
|
||
|
const normalized2 = combined2.normalize('NFC');
|
||
|
if (normalized2.length === 1) {
|
||
|
result[normalized2] = combined2;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
module.exports = result;
|