UNPKG

@drewsonne/maya-dates

Version:

Typescript package to manipulate dates in the Maya Calendar

106 lines 4.58 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.I18nManager = exports.DEFAULT_LOCALE = void 0; exports.getI18nManager = getI18nManager; var modern_mayanist_1 = require("./locales/modern_mayanist"); exports.DEFAULT_LOCALE = 'modern-mayanist'; var I18nManager = (function () { function I18nManager() { this.locales = new Map(); this.activeLocale = exports.DEFAULT_LOCALE; this.tzolkinDayLookup = new Map(); this.haabMonthLookup = new Map(); this.registerDefaultLocale(); } I18nManager.getInstance = function () { if (!I18nManager.instance) { I18nManager.instance = new I18nManager(); } return I18nManager.instance; }; I18nManager.prototype.registerDefaultLocale = function () { this.locales.set(exports.DEFAULT_LOCALE, modern_mayanist_1.modernMayanistLocale); }; I18nManager.prototype.registerLocale = function (localeDefinition) { this.locales.set(localeDefinition.locale, localeDefinition); this.buildLookupMaps(); }; I18nManager.prototype.buildLookupMaps = function () { this.tzolkinDayLookup.clear(); this.haabMonthLookup.clear(); for (var _i = 0, _a = Array.from(this.locales.values()); _i < _a.length; _i++) { var localeDef = _a[_i]; if (localeDef.tzolkinDays) { for (var _b = 0, _c = Object.entries(localeDef.tzolkinDays); _b < _c.length; _b++) { var _d = _c[_b], canonical = _d[0], translation = _d[1]; this.tzolkinDayLookup.set(canonical, canonical); if (translation && translation.alternatives) { for (var _e = 0, _f = translation.alternatives; _e < _f.length; _e++) { var alt = _f[_e]; this.tzolkinDayLookup.set(alt, canonical); } } } } if (localeDef.haabMonths) { for (var _g = 0, _h = Object.entries(localeDef.haabMonths); _g < _h.length; _g++) { var _j = _h[_g], canonical = _j[0], translation = _j[1]; this.haabMonthLookup.set(canonical, canonical); if (translation && translation.alternatives) { for (var _k = 0, _l = translation.alternatives; _k < _l.length; _k++) { var alt = _l[_k]; this.haabMonthLookup.set(alt, canonical); } } } } } }; I18nManager.prototype.setActiveLocale = function (locale) { if (!this.locales.has(locale)) { throw new Error("Locale '".concat(locale, "' is not registered")); } this.activeLocale = locale; }; I18nManager.prototype.getActiveLocale = function () { return this.activeLocale; }; I18nManager.prototype.getRegisteredLocales = function () { return Array.from(this.locales.keys()); }; I18nManager.prototype.normalizeTzolkinDay = function (name) { return this.tzolkinDayLookup.get(name) || name; }; I18nManager.prototype.normalizeHaabMonth = function (name) { return this.haabMonthLookup.get(name) || name; }; I18nManager.prototype.renderTzolkinDay = function (canonicalName, locale) { var targetLocale = locale || this.activeLocale; var localeDef = this.locales.get(targetLocale); if (localeDef && localeDef.tzolkinDays && localeDef.tzolkinDays[canonicalName]) { return localeDef.tzolkinDays[canonicalName].canonical; } return canonicalName; }; I18nManager.prototype.renderHaabMonth = function (canonicalName, locale) { var targetLocale = locale || this.activeLocale; var localeDef = this.locales.get(targetLocale); if (localeDef && localeDef.haabMonths && localeDef.haabMonths[canonicalName]) { return localeDef.haabMonths[canonicalName].canonical; } return canonicalName; }; I18nManager.prototype.reset = function () { this.locales.clear(); this.activeLocale = exports.DEFAULT_LOCALE; this.tzolkinDayLookup.clear(); this.haabMonthLookup.clear(); this.registerDefaultLocale(); }; return I18nManager; }()); exports.I18nManager = I18nManager; function getI18nManager() { return I18nManager.getInstance(); } //# sourceMappingURL=i18n-manager.js.map