UNPKG

@glimmer/syntax

Version:
109 lines (89 loc) 7.33 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.isLiteral = isLiteral; exports.InterpolateExpression = exports.DeprecatedCallExpression = exports.CallExpression = exports.PathExpression = exports.LiteralExpression = void 0; var _slice = require("../../source/slice"); var _node = require("./node"); /** * Corresponds to a Handlebars literal. * * @see {LiteralValue} */ class LiteralExpression extends (0, _node.node)('Literal').fields() { toSlice() { return new _slice.SourceSlice({ loc: this.loc, chars: this.value }); } } /** * Returns true if an input {@see ExpressionNode} is a literal. */ exports.LiteralExpression = LiteralExpression; function isLiteral(node, kind) { if (node.type === 'Literal') { if (kind === undefined) { return true; } else if (kind === 'null') { return node.value === null; } else { return typeof node.value === kind; } } else { return false; } } /** * Corresponds to a path in expression position. * * ```hbs * this * this.x * @x * @x.y * x * x.y * ``` */ class PathExpression extends (0, _node.node)('Path').fields() {} /** * Corresponds to a parenthesized call expression. * * ```hbs * (x) * (x.y) * (x y) * (x.y z) * ``` */ exports.PathExpression = PathExpression; class CallExpression extends (0, _node.node)('Call').fields() {} /** * Corresponds to a possible deprecated helper call. Must be: * * 1. A free variable (not this.foo, not @foo, not local). * 2. Argument-less. * 3. In a component invocation's named argument position. * 4. Not parenthesized (not @bar={{(helper)}}). * 5. Not interpolated (not @bar="{{helper}}"). * * ```hbs * <Foo @bar={{helper}} /> * ``` */ exports.CallExpression = CallExpression; class DeprecatedCallExpression extends (0, _node.node)('DeprecatedCall').fields() {} /** * Corresponds to an interpolation in attribute value position. * * ```hbs * <a href="{{url}}.html" * ``` */ exports.DeprecatedCallExpression = DeprecatedCallExpression; class InterpolateExpression extends (0, _node.node)('Interpolate').fields() {} exports.InterpolateExpression = InterpolateExpression; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9saWIvdjItYS9vYmplY3RzL2V4cHIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFFQTs7QUFFQTs7QUFrQkE7Ozs7O0FBS00sTUFBQSxpQkFBQSxTQUFpQyxnQkFBQSxTQUFBLEVBQWpDLE1BQWlDLEVBQWpDLENBQWtGO0FBQ3RGLEVBQUEsT0FBTyxHQUFBO0FBQ0wsV0FBTyxJQUFBLGtCQUFBLENBQWdCO0FBQUUsTUFBQSxHQUFHLEVBQUUsS0FBUCxHQUFBO0FBQWlCLE1BQUEsS0FBSyxFQUFFLEtBQUs7QUFBN0IsS0FBaEIsQ0FBUDtBQUNEOztBQUhxRjtBQVF4Rjs7Ozs7OztBQUdNLFNBQUEsU0FBQSxDQUFBLElBQUEsRUFBQSxJQUFBLEVBRUk7QUFFUixNQUFJLElBQUksQ0FBSixJQUFBLEtBQUosU0FBQSxFQUE2QjtBQUMzQixRQUFJLElBQUksS0FBUixTQUFBLEVBQXdCO0FBQ3RCLGFBQUEsSUFBQTtBQURGLEtBQUEsTUFFTyxJQUFJLElBQUksS0FBUixNQUFBLEVBQXFCO0FBQzFCLGFBQU8sSUFBSSxDQUFKLEtBQUEsS0FBUCxJQUFBO0FBREssS0FBQSxNQUVBO0FBQ0wsYUFBTyxPQUFPLElBQUksQ0FBWCxLQUFBLEtBQVAsSUFBQTtBQUNEO0FBUEgsR0FBQSxNQVFPO0FBQ0wsV0FBQSxLQUFBO0FBQ0Q7QUFDRjtBQUVEOzs7Ozs7Ozs7Ozs7OztBQVlNLE1BQUEsY0FBQSxTQUE4QixnQkFBQSxNQUFBLEVBQTlCLE1BQThCLEVBQTlCLENBR0Y7QUFFSjs7Ozs7Ozs7Ozs7Ozs7QUFVTSxNQUFBLGNBQUEsU0FBOEIsZ0JBQUEsTUFBQSxFQUE5QixNQUE4QixFQUE5QixDQUErRDtBQUVyRTs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFhTSxNQUFBLHdCQUFBLFNBQXdDLGdCQUFBLGdCQUFBLEVBQXhDLE1BQXdDLEVBQXhDLENBR0Y7QUFFSjs7Ozs7Ozs7Ozs7QUFPTSxNQUFBLHFCQUFBLFNBQXFDLGdCQUFBLGFBQUEsRUFBckMsTUFBcUMsRUFBckMsQ0FFRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFByZXNlbnRBcnJheSB9IGZyb20gJ0BnbGltbWVyL2ludGVyZmFjZXMnO1xuXG5pbXBvcnQgeyBTb3VyY2VTbGljZSB9IGZyb20gJy4uLy4uL3NvdXJjZS9zbGljZSc7XG5pbXBvcnQgdHlwZSB7IENhbGxGaWVsZHMgfSBmcm9tICcuL2Jhc2UnO1xuaW1wb3J0IHsgbm9kZSB9IGZyb20gJy4vbm9kZSc7XG5pbXBvcnQgdHlwZSB7IEZyZWVWYXJSZWZlcmVuY2UsIFZhcmlhYmxlUmVmZXJlbmNlIH0gZnJvbSAnLi9yZWZzJztcblxuLyoqXG4gKiBBIEhhbmRsZWJhcnMgbGl0ZXJhbC5cbiAqXG4gKiB7QGxpbmsgaHR0cHM6Ly9oYW5kbGViYXJzanMuY29tL2d1aWRlL2V4cHJlc3Npb25zLmh0bWwjbGl0ZXJhbC1zZWdtZW50c31cbiAqL1xuZXhwb3J0IHR5cGUgTGl0ZXJhbFZhbHVlID0gc3RyaW5nIHwgYm9vbGVhbiB8IG51bWJlciB8IHVuZGVmaW5lZCB8IG51bGw7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGl0ZXJhbFR5cGVzIHtcbiAgc3RyaW5nOiBzdHJpbmc7XG4gIGJvb2xlYW46IGJvb2xlYW47XG4gIG51bWJlcjogbnVtYmVyO1xuICBudWxsOiBudWxsO1xuICB1bmRlZmluZWQ6IHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBDb3JyZXNwb25kcyB0byBhIEhhbmRsZWJhcnMgbGl0ZXJhbC5cbiAqXG4gKiBAc2VlIHtMaXRlcmFsVmFsdWV9XG4gKi9cbmV4cG9ydCBjbGFzcyBMaXRlcmFsRXhwcmVzc2lvbiBleHRlbmRzIG5vZGUoJ0xpdGVyYWwnKS5maWVsZHM8eyB2YWx1ZTogTGl0ZXJhbFZhbHVlIH0+KCkge1xuICB0b1NsaWNlKHRoaXM6IFN0cmluZ0xpdGVyYWwpOiBTb3VyY2VTbGljZSB7XG4gICAgcmV0dXJuIG5ldyBTb3VyY2VTbGljZSh7IGxvYzogdGhpcy5sb2MsIGNoYXJzOiB0aGlzLnZhbHVlIH0pO1xuICB9XG59XG5cbmV4cG9ydCB0eXBlIFN0cmluZ0xpdGVyYWwgPSBMaXRlcmFsRXhwcmVzc2lvbiAmIHsgdmFsdWU6IHN0cmluZyB9O1xuXG4vKipcbiAqIFJldHVybnMgdHJ1ZSBpZiBhbiBpbnB1dCB7QHNlZSBFeHByZXNzaW9uTm9kZX0gaXMgYSBsaXRlcmFsLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNMaXRlcmFsPEsgZXh0ZW5kcyBrZXlvZiBMaXRlcmFsVHlwZXMgPSBrZXlvZiBMaXRlcmFsVHlwZXM+KFxuICBub2RlOiBFeHByZXNzaW9uTm9kZSxcbiAga2luZD86IEtcbik6IG5vZGUgaXMgU3RyaW5nTGl0ZXJhbCB7XG4gIGlmIChub2RlLnR5cGUgPT09ICdMaXRlcmFsJykge1xuICAgIGlmIChraW5kID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gZWxzZSBpZiAoa2luZCA9PT0gJ251bGwnKSB7XG4gICAgICByZXR1cm4gbm9kZS52YWx1ZSA9PT0gbnVsbDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHR5cGVvZiBub2RlLnZhbHVlID09PSBraW5kO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuLyoqXG4gKiBDb3JyZXNwb25kcyB0byBhIHBhdGggaW4gZXhwcmVzc2lvbiBwb3NpdGlvbi5cbiAqXG4gKiBgYGBoYnNcbiAqIHRoaXNcbiAqIHRoaXMueFxuICogQHhcbiAqIEB4LnlcbiAqIHhcbiAqIHgueVxuICogYGBgXG4gKi9cbmV4cG9ydCBjbGFzcyBQYXRoRXhwcmVzc2lvbiBleHRlbmRzIG5vZGUoJ1BhdGgnKS5maWVsZHM8e1xuICByZWY6IFZhcmlhYmxlUmVmZXJlbmNlO1xuICB0YWlsOiByZWFkb25seSBTb3VyY2VTbGljZVtdO1xufT4oKSB7fVxuXG4vKipcbiAqIENvcnJlc3BvbmRzIHRvIGEgcGFyZW50aGVzaXplZCBjYWxsIGV4cHJlc3Npb24uXG4gKlxuICogYGBgaGJzXG4gKiAoeClcbiAqICh4LnkpXG4gKiAoeCB5KVxuICogKHgueSB6KVxuICogYGBgXG4gKi9cbmV4cG9ydCBjbGFzcyBDYWxsRXhwcmVzc2lvbiBleHRlbmRzIG5vZGUoJ0NhbGwnKS5maWVsZHM8Q2FsbEZpZWxkcz4oKSB7fVxuXG4vKipcbiAqIENvcnJlc3BvbmRzIHRvIGEgcG9zc2libGUgZGVwcmVjYXRlZCBoZWxwZXIgY2FsbC4gTXVzdCBiZTpcbiAqXG4gKiAxLiBBIGZyZWUgdmFyaWFibGUgKG5vdCB0aGlzLmZvbywgbm90IEBmb28sIG5vdCBsb2NhbCkuXG4gKiAyLiBBcmd1bWVudC1sZXNzLlxuICogMy4gSW4gYSBjb21wb25lbnQgaW52b2NhdGlvbidzIG5hbWVkIGFyZ3VtZW50IHBvc2l0aW9uLlxuICogNC4gTm90IHBhcmVudGhlc2l6ZWQgKG5vdCBAYmFyPXt7KGhlbHBlcil9fSkuXG4gKiA1LiBOb3QgaW50ZXJwb2xhdGVkIChub3QgQGJhcj1cInt7aGVscGVyfX1cIikuXG4gKlxuICogYGBgaGJzXG4gKiA8Rm9vIEBiYXI9e3toZWxwZXJ9fSAvPlxuICogYGBgXG4gKi9cbmV4cG9ydCBjbGFzcyBEZXByZWNhdGVkQ2FsbEV4cHJlc3Npb24gZXh0ZW5kcyBub2RlKCdEZXByZWNhdGVkQ2FsbCcpLmZpZWxkczx7XG4gIGFyZzogU291cmNlU2xpY2U7XG4gIGNhbGxlZTogRnJlZVZhclJlZmVyZW5jZTtcbn0+KCkge31cblxuLyoqXG4gKiBDb3JyZXNwb25kcyB0byBhbiBpbnRlcnBvbGF0aW9uIGluIGF0dHJpYnV0ZSB2YWx1ZSBwb3NpdGlvbi5cbiAqXG4gKiBgYGBoYnNcbiAqIDxhIGhyZWY9XCJ7e3VybH19Lmh0bWxcIlxuICogYGBgXG4gKi9cbmV4cG9ydCBjbGFzcyBJbnRlcnBvbGF0ZUV4cHJlc3Npb24gZXh0ZW5kcyBub2RlKCdJbnRlcnBvbGF0ZScpLmZpZWxkczx7XG4gIHBhcnRzOiBQcmVzZW50QXJyYXk8RXhwcmVzc2lvbk5vZGU+O1xufT4oKSB7fVxuXG5leHBvcnQgdHlwZSBFeHByZXNzaW9uTm9kZSA9XG4gIHwgTGl0ZXJhbEV4cHJlc3Npb25cbiAgfCBQYXRoRXhwcmVzc2lvblxuICB8IENhbGxFeHByZXNzaW9uXG4gIHwgRGVwcmVjYXRlZENhbGxFeHByZXNzaW9uXG4gIHwgSW50ZXJwb2xhdGVFeHByZXNzaW9uO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==