UNPKG

@glimmer/compiler

Version:
85 lines (72 loc) 13.1 kB
import { generateSyntaxError } from '@glimmer/syntax'; import { Err, Ok, Result } from '../../../../shared/result'; import * as mir from '../../../2-encoding/mir'; import { VISIT_EXPRS } from '../../visitors/expressions'; function assertIfUnlessInlineKeyword(type) { return function (originalNode) { var _a; var inverted = type === 'unless'; var node = originalNode.type === 'AppendContent' ? originalNode.value : originalNode; var named = node.type === 'Call' ? node.args.named : null; var positional = node.type === 'Call' ? node.args.positional : null; if (named && !named.isEmpty()) { return Err(generateSyntaxError("(" + type + ") cannot receive named parameters, received " + named.entries.map(function (e) { return e.name.chars; }).join(', '), originalNode.loc)); } var condition = positional === null || positional === void 0 ? void 0 : positional.nth(0); if (!positional || !condition) { return Err(generateSyntaxError("When used inline, (" + type + ") requires at least two parameters 1. the condition that determines the state of the (" + type + "), and 2. the value to return if the condition is " + (inverted ? 'false' : 'true') + ". Did not receive any parameters", originalNode.loc)); } var truthy = positional.nth(1); var falsy = positional.nth(2); if (truthy === null) { return Err(generateSyntaxError("When used inline, (" + type + ") requires at least two parameters 1. the condition that determines the state of the (" + type + "), and 2. the value to return if the condition is " + (inverted ? 'false' : 'true') + ". Received only one parameter, the condition", originalNode.loc)); } if (positional.size > 3) { return Err(generateSyntaxError("When used inline, (" + type + ") can receive a maximum of three positional parameters 1. the condition that determines the state of the (" + type + "), 2. the value to return if the condition is " + (inverted ? 'false' : 'true') + ", and 3. the value to return if the condition is " + (inverted ? 'true' : 'false') + ". Received " + ((_a = positional === null || positional === void 0 ? void 0 : positional.size) !== null && _a !== void 0 ? _a : 0) + " parameters", originalNode.loc)); } return Ok({ condition: condition, truthy: truthy, falsy: falsy }); }; } function translateIfUnlessInlineKeyword(type) { var inverted = type === 'unless'; return function (_ref, _ref2) { var node = _ref.node, state = _ref.state; var condition = _ref2.condition, truthy = _ref2.truthy, falsy = _ref2.falsy; var conditionResult = VISIT_EXPRS.visit(condition, state); var truthyResult = VISIT_EXPRS.visit(truthy, state); var falsyResult = falsy ? VISIT_EXPRS.visit(falsy, state) : Ok(null); return Result.all(conditionResult, truthyResult, falsyResult).mapOk(function (_ref3) { var condition = _ref3[0], truthy = _ref3[1], falsy = _ref3[2]; if (inverted) { condition = new mir.Not({ value: condition, loc: node.loc }); } return new mir.IfInline({ loc: node.loc, condition: condition, truthy: truthy, falsy: falsy }); }); }; } export function ifUnlessInlineKeyword(type) { return { assert: assertIfUnlessInlineKeyword(type), translate: translateIfUnlessInlineKeyword(type) }; } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL2NvbXBpbGVyL2xpYi9wYXNzZXMvMS1ub3JtYWxpemF0aW9uL2tleXdvcmRzL3V0aWxzL2lmLXVubGVzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxTQUFBLG1CQUFBLFFBQUEsaUJBQUE7QUFFQSxTQUFBLEdBQUEsRUFBQSxFQUFBLEVBQUEsTUFBQSxRQUFBLDJCQUFBO0FBQ0EsT0FBTyxLQUFQLEdBQUEsTUFBQSx5QkFBQTtBQUVBLFNBQUEsV0FBQSxRQUFBLDRCQUFBOztBQUdBLFNBQUEsMkJBQUEsQ0FBQSxJQUFBLEVBQWlEO0FBQy9DLFNBQ0UsVUFBQSxZQURLLEVBTUY7OztBQUNILFFBQUksUUFBUSxHQUFHLElBQUksS0FBbkIsUUFBQTtBQUVBLFFBQUksSUFBSSxHQUFHLFlBQVksQ0FBWixJQUFBLEtBQUEsZUFBQSxHQUF3QyxZQUFZLENBQXBELEtBQUEsR0FBWCxZQUFBO0FBQ0EsUUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFKLElBQUEsS0FBQSxNQUFBLEdBQXVCLElBQUksQ0FBSixJQUFBLENBQXZCLEtBQUEsR0FBWixJQUFBO0FBQ0EsUUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFKLElBQUEsS0FBQSxNQUFBLEdBQXVCLElBQUksQ0FBSixJQUFBLENBQXZCLFVBQUEsR0FBakIsSUFBQTs7QUFFQSxRQUFJLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBbkIsT0FBYyxFQUFkLEVBQStCO0FBQzdCLGFBQU8sR0FBRyxDQUNSLG1CQUFtQixPQUNiLElBRGEsb0RBQ3NDLEtBQUssQ0FBTCxPQUFBLENBQUEsR0FBQSxDQUMvQyxVQUFBLENBQUQ7QUFBQSxlQUFPLENBQUMsQ0FBRCxJQUFBLENBRHlDLEtBQ2hEO0FBQUEsT0FEZ0QsRUFBQSxJQUFBLENBRHRDLElBQ3NDLENBRHRDLEVBSWpCLFlBQVksQ0FMaEIsR0FDcUIsQ0FEWCxDQUFWO0FBUUQ7O0FBRUQsUUFBSSxT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RXRCLFFBQUEsU0FGc0IsRUFFdEIsU0FGc0I7QUFHdEIsUUFBQSxNQUhzQixFQUd0QixNQUhzQjtBQUl0QixRQUFBLEtBQUEsRUFBQTtBQUpzQixPQUFqQixDQUFQO0FBTkosS0FBTyxDQUFQO0FBbkJGLEdBQUE7QUFrQ0Q7O0FBRUQsT0FBTSxTQUFBLHFCQUFBLENBQUEsSUFBQSxFQUNRO0FBVVosU0FBTztBQUNMLElBQUEsTUFBTSxFQUFFLDJCQUEyQixDQUQ5QixJQUM4QixDQUQ5QjtBQUVMLElBQUEsU0FBUyxFQUFFLDhCQUE4QixDQUFBLElBQUE7QUFGcEMsR0FBUDtBQUlEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVNUdjIsIGdlbmVyYXRlU3ludGF4RXJyb3IgfSBmcm9tICdAZ2xpbW1lci9zeW50YXgnO1xuXG5pbXBvcnQgeyBFcnIsIE9rLCBSZXN1bHQgfSBmcm9tICcuLi8uLi8uLi8uLi9zaGFyZWQvcmVzdWx0JztcbmltcG9ydCAqIGFzIG1pciBmcm9tICcuLi8uLi8uLi8yLWVuY29kaW5nL21pcic7XG5pbXBvcnQgeyBOb3JtYWxpemF0aW9uU3RhdGUgfSBmcm9tICcuLi8uLi9jb250ZXh0JztcbmltcG9ydCB7IFZJU0lUX0VYUFJTIH0gZnJvbSAnLi4vLi4vdmlzaXRvcnMvZXhwcmVzc2lvbnMnO1xuaW1wb3J0IHsgS2V5d29yZERlbGVnYXRlIH0gZnJvbSAnLi4vaW1wbCc7XG5cbmZ1bmN0aW9uIGFzc2VydElmVW5sZXNzSW5saW5lS2V5d29yZCh0eXBlOiBzdHJpbmcpIHtcbiAgcmV0dXJuIChcbiAgICBvcmlnaW5hbE5vZGU6IEFTVHYyLkFwcGVuZENvbnRlbnQgfCBBU1R2Mi5FeHByZXNzaW9uTm9kZVxuICApOiBSZXN1bHQ8e1xuICAgIGNvbmRpdGlvbjogQVNUdjIuRXhwcmVzc2lvbk5vZGU7XG4gICAgdHJ1dGh5OiBBU1R2Mi5FeHByZXNzaW9uTm9kZTtcbiAgICBmYWxzeTogQVNUdjIuRXhwcmVzc2lvbk5vZGUgfCBudWxsO1xuICB9PiA9PiB7XG4gICAgbGV0IGludmVydGVkID0gdHlwZSA9PT0gJ3VubGVzcyc7XG5cbiAgICBsZXQgbm9kZSA9IG9yaWdpbmFsTm9kZS50eXBlID09PSAnQXBwZW5kQ29udGVudCcgPyBvcmlnaW5hbE5vZGUudmFsdWUgOiBvcmlnaW5hbE5vZGU7XG4gICAgbGV0IG5hbWVkID0gbm9kZS50eXBlID09PSAnQ2FsbCcgPyBub2RlLmFyZ3MubmFtZWQgOiBudWxsO1xuICAgIGxldCBwb3NpdGlvbmFsID0gbm9kZS50eXBlID09PSAnQ2FsbCcgPyBub2RlLmFyZ3MucG9zaXRpb25hbCA6IG51bGw7XG5cbiAgICBpZiAobmFtZWQgJiYgIW5hbWVkLmlzRW1wdHkoKSkge1xuICAgICAgcmV0dXJuIEVycihcbiAgICAgICAgZ2VuZXJhdGVTeW50YXhFcnJvcihcbiAgICAgICAgICBgKCR7dHlwZX0pIGNhbm5vdCByZWNlaXZlIG5hbWVkIHBhcmFtZXRlcnMsIHJlY2VpdmVkICR7bmFtZWQuZW50cmllc1xuICAgICAgICAgICAgLm1hcCgoZSkgPT4gZS5uYW1lLmNoYXJzKVxuICAgICAgICAgICAgLmpvaW4oJywgJyl9YCxcbiAgICAgICAgICBvcmlnaW5hbE5vZGUubG9jXG4gICAgICAgIClcbiAgICAgICk7XG4gICAgfVxuXG4gICAgbGV0IGNvbmRpdGlvbiA9IHBvc2l0aW9uYWw/Lm50aCgwKTtcblxuICAgIGlmICghcG9zaXRpb25hbCB8fCAhY29uZGl0aW9uKSB7XG4gICAgICByZXR1cm4gRXJyKFxuICAgICAgICBnZW5lcmF0ZVN5bnRheEVycm9yKFxuICAgICAgICAgIGBXaGVuIHVzZWQgaW5saW5lLCAoJHt0eXBlfSkgcmVxdWlyZXMgYXQgbGVhc3QgdHdvIHBhcmFtZXRlcnMgMS4gdGhlIGNvbmRpdGlvbiB0aGF0IGRldGVybWluZXMgdGhlIHN0YXRlIG9mIHRoZSAoJHt0eXBlfSksIGFuZCAyLiB0aGUgdmFsdWUgdG8gcmV0dXJuIGlmIHRoZSBjb25kaXRpb24gaXMgJHtcbiAgICAgICAgICAgIGludmVydGVkID8gJ2ZhbHNlJyA6ICd0cnVlJ1xuICAgICAgICAgIH0uIERpZCBub3QgcmVjZWl2ZSBhbnkgcGFyYW1ldGVyc2AsXG4gICAgICAgICAgb3JpZ2luYWxOb2RlLmxvY1xuICAgICAgICApXG4gICAgICApO1xuICAgIH1cblxuICAgIGxldCB0cnV0aHkgPSBwb3NpdGlvbmFsLm50aCgxKTtcbiAgICBsZXQgZmFsc3kgPSBwb3NpdGlvbmFsLm50aCgyKTtcblxuICAgIGlmICh0cnV0aHkgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiBFcnIoXG4gICAgICAgIGdlbmVyYXRlU3ludGF4RXJyb3IoXG4gICAgICAgICAgYFdoZW4gdXNlZCBpbmxpbmUsICgke3R5cGV9KSByZXF1aXJlcyBhdCBsZWFzdCB0d28gcGFyYW1ldGVycyAxLiB0aGUgY29uZGl0aW9uIHRoYXQgZGV0ZXJtaW5lcyB0aGUgc3RhdGUgb2YgdGhlICgke3R5cGV9KSwgYW5kIDIuIHRoZSB2YWx1ZSB0byByZXR1cm4gaWYgdGhlIGNvbmRpdGlvbiBpcyAke1xuICAgICAgICAgICAgaW52ZXJ0ZWQgPyAnZmFsc2UnIDogJ3RydWUnXG4gICAgICAgICAgfS4gUmVjZWl2ZWQgb25seSBvbmUgcGFyYW1ldGVyLCB0aGUgY29uZGl0aW9uYCxcbiAgICAgICAgICBvcmlnaW5hbE5vZGUubG9jXG4gICAgICAgIClcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKHBvc2l0aW9uYWwuc2l6ZSA+IDMpIHtcbiAgICAgIHJldHVybiBFcnIoXG4gICAgICAgIGdlbmVyYXRlU3ludGF4RXJyb3IoXG4gICAgICAgICAgYFdoZW4gdXNlZCBpbmxpbmUsICgke3R5cGV9KSBjYW4gcmVjZWl2ZSBhIG1heGltdW0gb2YgdGhyZWUgcG9zaXRpb25hbCBwYXJhbWV0ZXJzIDEuIHRoZSBjb25kaXRpb24gdGhhdCBkZXRlcm1pbmVzIHRoZSBzdGF0ZSBvZiB0aGUgKCR7dHlwZX0pLCAyLiB0aGUgdmFsdWUgdG8gcmV0dXJuIGlmIHRoZSBjb25kaXRpb24gaXMgJHtcbiAgICAgICAgICAgIGludmVydGVkID8gJ2ZhbHNlJyA6ICd0cnVlJ1xuICAgICAgICAgIH0sIGFuZCAzLiB0aGUgdmFsdWUgdG8gcmV0dXJuIGlmIHRoZSBjb25kaXRpb24gaXMgJHtcbiAgICAgICAgICAgIGludmVydGVkID8gJ3RydWUnIDogJ2ZhbHNlJ1xuICAgICAgICAgIH0uIFJlY2VpdmVkICR7cG9zaXRpb25hbD8uc2l6ZSA/PyAwfSBwYXJhbWV0ZXJzYCxcbiAgICAgICAgICBvcmlnaW5hbE5vZGUubG9jXG4gICAgICAgIClcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIE9rKHsgY29uZGl0aW9uLCB0cnV0aHksIGZhbHN5IH0pO1xuICB9O1xufVxuXG5mdW5jdGlvbiB0cmFuc2xhdGVJZlVubGVzc0lubGluZUtleXdvcmQodHlwZTogc3RyaW5nKSB7XG4gIGxldCBpbnZlcnRlZCA9IHR5cGUgPT09ICd1bmxlc3MnO1xuXG4gIHJldHVybiAoXG4gICAge1xuICAgICAgbm9kZSxcbiAgICAgIHN0YXRlLFxuICAgIH06IHsgbm9kZTogQVNUdjIuQXBwZW5kQ29udGVudCB8IEFTVHYyLkV4cHJlc3Npb25Ob2RlOyBzdGF0ZTogTm9ybWFsaXphdGlvblN0YXRlIH0sXG4gICAge1xuICAgICAgY29uZGl0aW9uLFxuICAgICAgdHJ1dGh5LFxuICAgICAgZmFsc3ksXG4gICAgfToge1xuICAgICAgY29uZGl0aW9uOiBBU1R2Mi5FeHByZXNzaW9uTm9kZTtcbiAgICAgIHRydXRoeTogQVNUdjIuRXhwcmVzc2lvbk5vZGU7XG4gICAgICBmYWxzeTogQVNUdjIuRXhwcmVzc2lvbk5vZGUgfCBudWxsO1xuICAgIH1cbiAgKTogUmVzdWx0PG1pci5JZklubGluZT4gPT4ge1xuICAgIGxldCBjb25kaXRpb25SZXN1bHQgPSBWSVNJVF9FWFBSUy52aXNpdChjb25kaXRpb24sIHN0YXRlKTtcbiAgICBsZXQgdHJ1dGh5UmVzdWx0ID0gVklTSVRfRVhQUlMudmlzaXQodHJ1dGh5LCBzdGF0ZSk7XG4gICAgbGV0IGZhbHN5UmVzdWx0ID0gZmFsc3kgPyBWSVNJVF9FWFBSUy52aXNpdChmYWxzeSwgc3RhdGUpIDogT2sobnVsbCk7XG5cbiAgICByZXR1cm4gUmVzdWx0LmFsbChjb25kaXRpb25SZXN1bHQsIHRydXRoeVJlc3VsdCwgZmFsc3lSZXN1bHQpLm1hcE9rKFxuICAgICAgKFtjb25kaXRpb24sIHRydXRoeSwgZmFsc3ldKSA9PiB7XG4gICAgICAgIGlmIChpbnZlcnRlZCkge1xuICAgICAgICAgIGNvbmRpdGlvbiA9IG5ldyBtaXIuTm90KHsgdmFsdWU6IGNvbmRpdGlvbiwgbG9jOiBub2RlLmxvYyB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBuZXcgbWlyLklmSW5saW5lKHtcbiAgICAgICAgICBsb2M6IG5vZGUubG9jLFxuICAgICAgICAgIGNvbmRpdGlvbixcbiAgICAgICAgICB0cnV0aHksXG4gICAgICAgICAgZmFsc3ksXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICk7XG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpZlVubGVzc0lubGluZUtleXdvcmQoXG4gIHR5cGU6IHN0cmluZ1xuKTogS2V5d29yZERlbGVnYXRlPFxuICBBU1R2Mi5DYWxsRXhwcmVzc2lvbiB8IEFTVHYyLkFwcGVuZENvbnRlbnQsXG4gIHtcbiAgICBjb25kaXRpb246IEFTVHYyLkV4cHJlc3Npb25Ob2RlO1xuICAgIHRydXRoeTogQVNUdjIuRXhwcmVzc2lvbk5vZGU7XG4gICAgZmFsc3k6IEFTVHYyLkV4cHJlc3Npb25Ob2RlIHwgbnVsbDtcbiAgfSxcbiAgbWlyLklmSW5saW5lXG4+IHtcbiAgcmV0dXJuIHtcbiAgICBhc3NlcnQ6IGFzc2VydElmVW5sZXNzSW5saW5lS2V5d29yZCh0eXBlKSxcbiAgICB0cmFuc2xhdGU6IHRyYW5zbGF0ZUlmVW5sZXNzSW5saW5lS2V5d29yZCh0eXBlKSxcbiAgfTtcbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=