rfc6570-expand
Version:
A template processor for RFC 6570 URI Template
29 lines (28 loc) • 1.03 kB
JavaScript
;
const variables_1 = require('./variables');
const expression_1 = require('./expression');
const literals_1 = require('./literals');
const init = (template) => {
const expand = (variables) => {
const normalized = variables_1.normalizeVariables(variables);
const result = [];
let index = 0;
while (true) {
const openIndex = template.indexOf('{', index);
if (openIndex < 0) {
result.push(literals_1.literals(template.slice(index)));
break;
}
result.push(literals_1.literals(template.slice(index, openIndex)));
const closeIndex = template.indexOf('}', openIndex + 1);
if (closeIndex < 0) {
throw new Error();
}
result.push(expression_1.expression(template.slice(openIndex, closeIndex + 1), normalized));
index = closeIndex + 1;
}
return result.join('');
};
return { expand: expand };
};
exports.init = init;