templural
Version:
Template function for plural-sensitive formatting
42 lines • 1.67 kB
JavaScript
;
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