UNPKG

tell-me-when

Version:
33 lines 1.07 kB
import { GrammarNode } from "./GrammarNode.mjs"; import { locales } from "../locales.mjs"; const grammarCache = new Map(); export 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[localeNames[0]]; } return GrammarNode.longestOf(...localeNames.map(name => locales[name])); } let defaultLocaleNames; function getDefaultLocaleNames() { if (defaultLocaleNames) return defaultLocaleNames; const { locale: primaryLocale } = new Intl.DateTimeFormat().resolvedOptions(); const localeKeys = Object.keys(locales); const primary = localeKeys.find(k => primaryLocale.startsWith(k)); return defaultLocaleNames = [...(primary ? [primary] : []), ...localeKeys.filter(k => k !== primary)]; } //# sourceMappingURL=getGrammar.mjs.map