UNPKG

rfc6570-expand

Version:

A template processor for RFC 6570 URI Template

29 lines (28 loc) 1.03 kB
"use strict"; 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;