UNPKG

templural

Version:

Template function for plural-sensitive formatting

39 lines 1.53 kB
import { ParsedTemplate } from "./parse"; export var Template; (function (Template) { function isChunk(value) { return typeof value === 'string'; } Template.isChunk = isChunk; function isArg(value) { return typeof value === 'number'; } Template.isArg = isArg; function fromParsedTemplate(template, { categories, categoryOrders, categoryFallback }) { return template.map(item => { if (!ParsedTemplate.isGroup(item)) return item; let categoryToResult = ParsedTemplate.isOrdredGroup(item) ? Object.fromEntries(categoryOrders[item.orderedResults.length - 1].map((c, i) => [c, item.orderedResults[i]])) : item.associativeResults; for (const category of categories) { if (category in categoryToResult) continue; let fallback = category; while (fallback in categoryFallback) { fallback = categoryFallback[fallback]; if (fallback in categoryToResult) { categoryToResult = { ...categoryToResult, [category]: categoryToResult[fallback] }; break; } } } return { argIndex: item.argIndex, categoryToResult, }; }); } Template.fromParsedTemplate = fromParsedTemplate; })(Template || (Template = {})); //# sourceMappingURL=template.js.map