@drewsonne/maya-dates
Version:
Typescript package to manipulate dates in the Maya Calendar
106 lines • 4.58 kB
JavaScript
"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