1 | ;
|
2 |
|
3 | Object.defineProperty(exports, "__esModule", {
|
4 | value: true
|
5 | });
|
6 | exports.parseElementBlockParams = parseElementBlockParams;
|
7 | exports.childrenFor = childrenFor;
|
8 | exports.appendChild = appendChild;
|
9 | exports.isHBSLiteral = isHBSLiteral;
|
10 | exports.printLiteral = printLiteral;
|
11 | exports.isUpperCase = isUpperCase;
|
12 | exports.isLowerCase = isLowerCase;
|
13 |
|
14 | var _syntaxError = require("./syntax-error");
|
15 |
|
16 | // Regex to validate the identifier for block parameters.
|
17 | // Based on the ID validation regex in Handlebars.
|
18 | var ID_INVERSE_PATTERN = /[!"#%-,\.\/;->@\[-\^`\{-~]/; // Checks the element's attributes to see if it uses block params.
|
19 | // If it does, registers the block params with the program and
|
20 | // removes the corresponding attributes from the element.
|
21 |
|
22 | function parseElementBlockParams(element) {
|
23 | var params = parseBlockParams(element);
|
24 | if (params) element.blockParams = params;
|
25 | }
|
26 |
|
27 | function parseBlockParams(element) {
|
28 | var l = element.attributes.length;
|
29 | var attrNames = [];
|
30 |
|
31 | for (var i = 0; i < l; i++) {
|
32 | attrNames.push(element.attributes[i].name);
|
33 | }
|
34 |
|
35 | var asIndex = attrNames.indexOf('as');
|
36 |
|
37 | if (asIndex === -1 && attrNames.length > 0 && attrNames[attrNames.length - 1].charAt(0) === '|') {
|
38 | throw (0, _syntaxError.generateSyntaxError)('Block parameters must be preceded by the `as` keyword, detected block parameters without `as`', element.loc);
|
39 | }
|
40 |
|
41 | if (asIndex !== -1 && l > asIndex && attrNames[asIndex + 1].charAt(0) === '|') {
|
42 | // Some basic validation, since we're doing the parsing ourselves
|
43 | var paramsString = attrNames.slice(asIndex).join(' ');
|
44 |
|
45 | if (paramsString.charAt(paramsString.length - 1) !== '|' || paramsString.match(/\|/g).length !== 2) {
|
46 | throw (0, _syntaxError.generateSyntaxError)("Invalid block parameters syntax, '" + paramsString + "'", element.loc);
|
47 | }
|
48 |
|
49 | var params = [];
|
50 |
|
51 | for (var _i = asIndex + 1; _i < l; _i++) {
|
52 | var param = attrNames[_i].replace(/\|/g, '');
|
53 |
|
54 | if (param !== '') {
|
55 | if (ID_INVERSE_PATTERN.test(param)) {
|
56 | throw (0, _syntaxError.generateSyntaxError)("Invalid identifier for block parameters, '" + param + "'", element.loc);
|
57 | }
|
58 |
|
59 | params.push(param);
|
60 | }
|
61 | }
|
62 |
|
63 | if (params.length === 0) {
|
64 | throw (0, _syntaxError.generateSyntaxError)('Cannot use zero block parameters', element.loc);
|
65 | }
|
66 |
|
67 | element.attributes = element.attributes.slice(0, asIndex);
|
68 | return params;
|
69 | }
|
70 |
|
71 | return null;
|
72 | }
|
73 |
|
74 | function childrenFor(node) {
|
75 | switch (node.type) {
|
76 | case 'Block':
|
77 | case 'Template':
|
78 | return node.body;
|
79 |
|
80 | case 'ElementNode':
|
81 | return node.children;
|
82 | }
|
83 | }
|
84 |
|
85 | function appendChild(parent, node) {
|
86 | childrenFor(parent).push(node);
|
87 | }
|
88 |
|
89 | function isHBSLiteral(path) {
|
90 | return path.type === 'StringLiteral' || path.type === 'BooleanLiteral' || path.type === 'NumberLiteral' || path.type === 'NullLiteral' || path.type === 'UndefinedLiteral';
|
91 | }
|
92 |
|
93 | function printLiteral(literal) {
|
94 | if (literal.type === 'UndefinedLiteral') {
|
95 | return 'undefined';
|
96 | } else {
|
97 | return JSON.stringify(literal.value);
|
98 | }
|
99 | }
|
100 |
|
101 | function isUpperCase(tag) {
|
102 | return tag[0] === tag[0].toUpperCase() && tag[0] !== tag[0].toLowerCase();
|
103 | }
|
104 |
|
105 | function isLowerCase(tag) {
|
106 | return tag[0] === tag[0].toLowerCase() && tag[0] !== tag[0].toUpperCase();
|
107 | }
|
108 | //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9saWIvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUdBOztBQUlBO0FBQ0E7QUFFQSxJQUFJLGtCQUFrQixHQUF0Qiw0QkFBQSxDLENBRUE7QUFDQTtBQUNBOztBQUVNLFNBQUEsdUJBQUEsQ0FBQSxPQUFBLEVBQTREO0FBQ2hFLE1BQUksTUFBTSxHQUFHLGdCQUFnQixDQUE3QixPQUE2QixDQUE3QjtBQUNBLE1BQUEsTUFBQSxFQUFZLE9BQU8sQ0FBUCxXQUFBLEdBQUEsTUFBQTtBQUNiOztBQUVELFNBQUEsZ0JBQUEsQ0FBQSxPQUFBLEVBQW9EO0FBQ2xELE1BQUksQ0FBQyxHQUFHLE9BQU8sQ0FBUCxVQUFBLENBQVIsTUFBQTtBQUNBLE1BQUksU0FBUyxHQUFiLEVBQUE7O0FBRUEsT0FBSyxJQUFJLENBQUMsR0FBVixDQUFBLEVBQWdCLENBQUMsR0FBakIsQ0FBQSxFQUF1QixDQUF2QixFQUFBLEVBQTRCO0FBQzFCLElBQUEsU0FBUyxDQUFULElBQUEsQ0FBZSxPQUFPLENBQVAsVUFBQSxDQUFBLENBQUEsRUFBZixJQUFBO0FBQ0Q7O0FBRUQsTUFBSSxPQUFPLEdBQUcsU0FBUyxDQUFULE9BQUEsQ0FBZCxJQUFjLENBQWQ7O0FBRUEsTUFBSSxPQUFPLEtBQUssQ0FBWixDQUFBLElBQWtCLFNBQVMsQ0FBVCxNQUFBLEdBQWxCLENBQUEsSUFBMEMsU0FBUyxDQUFDLFNBQVMsQ0FBVCxNQUFBLEdBQVYsQ0FBUyxDQUFULENBQUEsTUFBQSxDQUFBLENBQUEsTUFBOUMsR0FBQSxFQUFpRztBQUMvRixVQUFNLHNDQUFtQiwrRkFBbkIsRUFFSixPQUFPLENBRlQsR0FBTSxDQUFOO0FBSUQ7O0FBRUQsTUFBSSxPQUFPLEtBQUssQ0FBWixDQUFBLElBQWtCLENBQUMsR0FBbkIsT0FBQSxJQUFpQyxTQUFTLENBQUMsT0FBTyxHQUFqQixDQUFTLENBQVQsQ0FB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RyxDQUFILENBQVgsV0FBVyxFQUFYLElBQW1DLEdBQUcsQ0FBSCxDQUFHLENBQUgsS0FBVyxHQUFHLENBQUgsQ0FBRyxDQUFILENBQXJELFdBQXFELEVBQXJEO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPcHRpb24gfSBmcm9tICdAZ2xpbW1lci9pbnRlcmZhY2VzJztcbmltcG9ydCB7IGV4cGVjdCB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuXG5pbXBvcnQgeyBnZW5lcmF0ZVN5bnRheEVycm9yIH0gZnJvbSAnLi9zeW50YXgtZXJyb3InO1xuaW1wb3J0ICogYXMgQVNUdjEgZnJvbSAnLi92MS9hcGknO1xuaW1wb3J0ICogYXMgSEJTIGZyb20gJy4vdjEvaGFuZGxlYmFycy1hc3QnO1xuXG4vLyBSZWdleCB0byB2YWxpZGF0ZSB0aGUgaWRlbnRpZmllciBmb3IgYmxvY2sgcGFyYW1ldGVycy5cbi8vIEJhc2VkIG9uIHRoZSBJRCB2YWxpZGF0aW9uIHJlZ2V4IGluIEhhbmRsZWJhcnMuXG5cbmxldCBJRF9JTlZFUlNFX1BBVFRFUk4gPSAvWyFcIiMlLSxcXC5cXC87LT5AXFxbLVxcXmBcXHstfl0vO1xuXG4vLyBDaGVja3MgdGhlIGVsZW1lbnQncyBhdHRyaWJ1dGVzIHRvIHNlZSBpZiBpdCB1c2VzIGJsb2NrIHBhcmFtcy5cbi8vIElmIGl0IGRvZXMsIHJlZ2lzdGVycyB0aGUgYmxvY2sgcGFyYW1zIHdpdGggdGhlIHByb2dyYW0gYW5kXG4vLyByZW1vdmVzIHRoZSBjb3JyZXNwb25kaW5nIGF0dHJpYnV0ZXMgZnJvbSB0aGUgZWxlbWVudC5cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlRWxlbWVudEJsb2NrUGFyYW1zKGVsZW1lbnQ6IEFTVHYxLkVsZW1lbnROb2RlKTogdm9pZCB7XG4gIGxldCBwYXJhbXMgPSBwYXJzZUJsb2NrUGFyYW1zKGVsZW1lbnQpO1xuICBpZiAocGFyYW1zKSBlbGVtZW50LmJsb2NrUGFyYW1zID0gcGFyYW1zO1xufVxuXG5mdW5jdGlvbiBwYXJzZUJsb2NrUGFyYW1zKGVsZW1lbnQ6IEFTVHYxLkVsZW1lbnROb2RlKTogT3B0aW9uPHN0cmluZ1tdPiB7XG4gIGxldCBsID0gZWxlbWVudC5hdHRyaWJ1dGVzLmxlbmd0aDtcbiAgbGV0IGF0dHJOYW1lcyA9IFtdO1xuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbDsgaSsrKSB7XG4gICAgYXR0ck5hbWVzLnB1c2goZWxlbWVudC5hdHRyaWJ1dGVzW2ldLm5hbWUpO1xuICB9XG5cbiAgbGV0IGFzSW5kZXggPSBhdHRyTmFtZXMuaW5kZXhPZignYXMnKTtcblxuICBpZiAoYXNJbmRleCA9PT0gLTEgJiYgYXR0ck5hbWVzLmxlbmd0aCA+IDAgJiYgYXR0ck5hbWVzW2F0dHJOYW1lcy5sZW5ndGggLSAxXS5jaGFyQXQoMCkgPT09ICd8Jykge1xuICAgIHRocm93IGdlbmVyYXRlU3ludGF4RXJyb3IoXG4gICAgICAnQmxvY2sgcGFyYW1ldGVycyBtdXN0IGJlIHByZWNlZGVkIGJ5IHRoZSBgYXNgIGtleXdvcmQsIGRldGVjdGVkIGJsb2NrIHBhcmFtZXRlcnMgd2l0aG91dCBgYXNgJyxcbiAgICAgIGVsZW1lbnQubG9jXG4gICAgKTtcbiAgfVxuXG4gIGlmIChhc0luZGV4ICE9PSAtMSAmJiBsID4gYXNJbmRleCAmJiBhdHRyTmFtZXNbYXNJbmRleCArIDFdLmNoYXJBdCgwKSA9PT0gJ3wnKSB7XG4gICAgLy8gU29tZSBiYXNpYyB2YWxpZGF0aW9uLCBzaW5jZSB3ZSdyZSBkb2luZyB0aGUgcGFyc2luZyBvdXJzZWx2ZXNcbiAgICBsZXQgcGFyYW1zU3RyaW5nID0gYXR0ck5hbWVzLnNsaWNlKGFzSW5kZXgpLmpvaW4oJyAnKTtcbiAgICBpZiAoXG4gICAgICBwYXJhbXNTdHJpbmcuY2hhckF0KHBhcmFtc1N0cmluZy5sZW5ndGggLSAxKSAhPT0gJ3wnIHx8XG4gICAgICBleHBlY3QocGFyYW1zU3RyaW5nLm1hdGNoKC9cXHwvZyksIGBibG9jayBwYXJhbXMgbXVzdCBleGlzdCBoZXJlYCkubGVuZ3RoICE9PSAyXG4gICAgKSB7XG4gICAgICB0aHJvdyBnZW5lcmF0ZVN5bnRheEVycm9yKFxuICAgICAgICBcIkludmFsaWQgYmxvY2sgcGFyYW1ldGVycyBzeW50YXgsICdcIiArIHBhcmFtc1N0cmluZyArIFwiJ1wiLFxuICAgICAgICBlbGVtZW50LmxvY1xuICAgICAgKTtcbiAgICB9XG5cbiAgICBsZXQgcGFyYW1zID0gW107XG4gICAgZm9yIChsZXQgaSA9IGFzSW5kZXggKyAxOyBpIDwgbDsgaSsrKSB7XG4gICAgICBsZXQgcGFyYW0gPSBhdHRyTmFtZXNbaV0ucmVwbGFjZSgvXFx8L2csICcnKTtcbiAgICAgIGlmIChwYXJhbSAhPT0gJycpIHtcbiAgICAgICAgaWYgKElEX0lOVkVSU0VfUEFUVEVSTi50ZXN0KHBhcmFtKSkge1xuICAgICAgICAgIHRocm93IGdlbmVyYXRlU3ludGF4RXJyb3IoXG4gICAgICAgICAgICBcIkludmFsaWQgaWRlbnRpZmllciBmb3IgYmxvY2sgcGFyYW1ldGVycywgJ1wiICsgcGFyYW0gKyBcIidcIixcbiAgICAgICAgICAgIGVsZW1lbnQubG9jXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBwYXJhbXMucHVzaChwYXJhbSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHBhcmFtcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IGdlbmVyYXRlU3ludGF4RXJyb3IoJ0Nhbm5vdCB1c2UgemVybyBibG9jayBwYXJhbWV0ZXJzJywgZWxlbWVudC5sb2MpO1xuICAgIH1cblxuICAgIGVsZW1lbnQuYXR0cmlidXRlcyA9IGVsZW1lbnQuYXR0cmlidXRlcy5zbGljZSgwLCBhc0luZGV4KTtcbiAgICByZXR1cm4gcGFyYW1zO1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjaGlsZHJlbkZvcihcbiAgbm9kZTogQVNUdjEuQmxvY2sgfCBBU1R2MS5UZW1wbGF0ZSB8IEFTVHYxLkVsZW1lbnROb2RlXG4pOiBBU1R2MS5Ub3BMZXZlbFN0YXRlbWVudFtdIHtcbiAgc3dpdGNoIChub2RlLnR5cGUpIHtcbiAgICBjYXNlICdCbG9jayc6XG4gICAgY2FzZSAnVGVtcGxhdGUnOlxuICAgICAgcmV0dXJuIG5vZGUuYm9keTtcbiAgICBjYXNlICdFbGVtZW50Tm9kZSc6XG4gICAgICByZXR1cm4gbm9kZS5jaGlsZHJlbjtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYXBwZW5kQ2hpbGQoXG4gIHBhcmVudDogQVNUdjEuQmxvY2sgfCBBU1R2MS5UZW1wbGF0ZSB8IEFTVHYxLkVsZW1lbnROb2RlLFxuICBub2RlOiBBU1R2MS5TdGF0ZW1lbnRcbik6IHZvaWQge1xuICBjaGlsZHJlbkZvcihwYXJlbnQpLnB1c2gobm9kZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0hCU0xpdGVyYWwocGF0aDogSEJTLkV4cHJlc3Npb24pOiBwYXRoIGlzIEhCUy5MaXRlcmFsO1xuZXhwb3J0IGZ1bmN0aW9uIGlzSEJTTGl0ZXJhbChwYXRoOiBBU1R2MS5FeHByZXNzaW9uKTogcGF0aCBpcyBBU1R2MS5MaXRlcmFsO1xuZXhwb3J0IGZ1bmN0aW9uIGlzSEJTTGl0ZXJhbChcbiAgcGF0aDogSEJTLkV4cHJlc3Npb24gfCBBU1R2MS5FeHByZXNzaW9uXG4pOiBwYXRoIGlzIEhCUy5MaXRlcmFsIHwgQVNUdjEuTGl0ZXJhbCB7XG4gIHJldHVybiAoXG4gICAgcGF0aC50eXBlID09PSAnU3RyaW5nTGl0ZXJhbCcgfHxcbiAgICBwYXRoLnR5cGUgPT09ICdCb29sZWFuTGl0ZXJhbCcgfHxcbiAgICBwYXRoLnR5cGUgPT09ICdOdW1iZXJMaXRlcmFsJyB8fFxuICAgIHBhdGgudHlwZSA9PT0gJ051bGxMaXRlcmFsJyB8fFxuICAgIHBhdGgudHlwZSA9PT0gJ1VuZGVmaW5lZExpdGVyYWwnXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcmludExpdGVyYWwobGl0ZXJhbDogQVNUdjEuTGl0ZXJhbCk6IHN0cmluZyB7XG4gIGlmIChsaXRlcmFsLnR5cGUgPT09ICdVbmRlZmluZWRMaXRlcmFsJykge1xuICAgIHJldHVybiAndW5kZWZpbmVkJztcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkobGl0ZXJhbC52YWx1ZSk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzVXBwZXJDYXNlKHRhZzogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiB0YWdbMF0gPT09IHRhZ1swXS50b1VwcGVyQ2FzZSgpICYmIHRhZ1swXSAhPT0gdGFnWzBdLnRvTG93ZXJDYXNlKCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0xvd2VyQ2FzZSh0YWc6IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gdGFnWzBdID09PSB0YWdbMF0udG9Mb3dlckNhc2UoKSAmJiB0YWdbMF0gIT09IHRhZ1swXS50b1VwcGVyQ2FzZSgpO1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ== |
\ | No newline at end of file |