tell-me-when
Version:
human relative date and time parser
39 lines (38 loc) • 1.22 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.getGrammar = getGrammar;
var _GrammarNode = require("./GrammarNode.js");
var _locales = require("../locales.js");
const grammarCache = new Map();
function getGrammar({
locales: localeNames = getDefaultLocaleNames()
} = {}) {
const key = JSON.stringify(localeNames);
let grammar = grammarCache.get(key);
if (grammar) return grammar;
grammarCache.set(key, grammar = getGrammarHelper({
localeNames
}));
return grammar;
}
function getGrammarHelper({
localeNames
}) {
if (localeNames.length === 1) {
return _locales.locales[localeNames[0]];
}
return _GrammarNode.GrammarNode.longestOf(...localeNames.map(name => _locales.locales[name]));
}
let defaultLocaleNames;
function getDefaultLocaleNames() {
if (defaultLocaleNames) return defaultLocaleNames;
const {
locale: primaryLocale
} = new Intl.DateTimeFormat().resolvedOptions();
const localeKeys = Object.keys(_locales.locales);
const primary = localeKeys.find(k => primaryLocale.startsWith(k));
return defaultLocaleNames = [...(primary ? [primary] : []), ...localeKeys.filter(k => k !== primary)];
}
//# sourceMappingURL=getGrammar.js.map