UNPKG

@keymanapp/langtags

Version:

Keyman bundling of language tags from langtags.json

71 lines (69 loc) 2.19 kB
/* * Keyman is copyright (C) SIL Global. MIT License. * * Wraps langtags.json as a Javascript object */ !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},n=(new Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="56337f9b-01c8-56b9-b0fd-02dad625a3ef")}catch(e){}}(); import langtags from './imports/langtags.js'; ; ; ; ; ; /** * A map of all language tags, lower cased */ const langtagsByTag = new Map(); /* metadata variables */ let conformance = undefined; let globalvar = undefined; let phonvar = undefined; let version = undefined; const metadata = { conformance: () => ({ regions: [...conformance.regions], scripts: [...conformance.scripts] }), globalvar: () => ({ variants: [...globalvar.variants] }), phonvar: () => ({ variants: [...phonvar.variants] }), version: () => ({ api: version.api, date: version.date }) }; /** * Build a dictionary of language tags from langtags.json. This takes under 10ms * on a reasonable laptop. */ function preinit() { for (const tag of langtags) { if (tag.tag == '_conformance') { conformance = tag; } else if (tag.tag == '_globalvar') { globalvar = tag; } else if (tag.tag == '_phonvar') { phonvar = tag; } else if (tag.tag == '_version') { version = tag; } else if (tag.full && tag.tag) { langtagsByTag.set(tag.tag.toLowerCase(), tag); langtagsByTag.set(tag.full.toLowerCase(), tag); if (tag.tags) { for (const t of tag.tags) { langtagsByTag.set(t.toLowerCase(), tag); } } } } } /** * Find a LangTag from a given tag; matches on tag, tags, full properties, * with a case-insensitive search. * @param tag * @returns LangTag or undefined if not found */ function getLangtagByTag(tag) { return langtagsByTag.get(tag?.toLowerCase()); } preinit(); export { langtags, getLangtagByTag, metadata }; //# sourceMappingURL=main.js.map //# debugId=56337f9b-01c8-56b9-b0fd-02dad625a3ef