UNPKG

templural

Version:

Template function for plural-sensitive formatting

42 lines 1.67 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Template = void 0; const parse_1 = require("./parse"); 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 (!parse_1.ParsedTemplate.isGroup(item)) return item; let categoryToResult = parse_1.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 = exports.Template || (exports.Template = {})); //# sourceMappingURL=template.js.map