@glimmer/syntax
Version:
192 lines (154 loc) • 13.6 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.NamedArgument = exports.NamedArguments = exports.PositionalArguments = exports.Args = void 0;
var _node = require("./node");
function _defineProperties(target, props) {
for (var i = 0; i < props.length; i++) {
var descriptor = props[i];
descriptor.enumerable = descriptor.enumerable || false;
descriptor.configurable = true;
if ("value" in descriptor) descriptor.writable = true;
Object.defineProperty(target, descriptor.key, descriptor);
}
}
function _createClass(Constructor, protoProps, staticProps) {
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
if (staticProps) _defineProperties(Constructor, staticProps);
return Constructor;
}
function _inheritsLoose(subClass, superClass) {
subClass.prototype = Object.create(superClass.prototype);
subClass.prototype.constructor = subClass;
subClass.__proto__ = superClass;
}
/**
* Corresponds to syntaxes with positional and named arguments:
*
* - SubExpression
* - Invoking Append
* - Invoking attributes
* - InvokeBlock
*
* If `Args` is empty, the `SourceOffsets` for this node should be the collapsed position
* immediately after the parent call node's `callee`.
*/
var Args = /*#__PURE__*/function (_node$fields) {
_inheritsLoose(Args, _node$fields);
function Args() {
return _node$fields.apply(this, arguments) || this;
}
Args.empty = function empty(loc) {
return new Args({
loc: loc,
positional: PositionalArguments.empty(loc),
named: NamedArguments.empty(loc)
});
};
Args.named = function named(_named) {
return new Args({
loc: _named.loc,
positional: PositionalArguments.empty(_named.loc.collapse('end')),
named: _named
});
};
var _proto = Args.prototype;
_proto.nth = function nth(offset) {
return this.positional.nth(offset);
};
_proto.get = function get(name) {
return this.named.get(name);
};
_proto.isEmpty = function isEmpty() {
return this.positional.isEmpty() && this.named.isEmpty();
};
return Args;
}((0, _node.node)().fields());
/**
* Corresponds to positional arguments.
*
* If `PositionalArguments` is empty, the `SourceOffsets` for this node should be the collapsed
* position immediately after the parent call node's `callee`.
*/
exports.Args = Args;
var PositionalArguments = /*#__PURE__*/function (_node$fields2) {
_inheritsLoose(PositionalArguments, _node$fields2);
function PositionalArguments() {
return _node$fields2.apply(this, arguments) || this;
}
PositionalArguments.empty = function empty(loc) {
return new PositionalArguments({
loc: loc,
exprs: []
});
};
var _proto2 = PositionalArguments.prototype;
_proto2.nth = function nth(offset) {
return this.exprs[offset] || null;
};
_proto2.isEmpty = function isEmpty() {
return this.exprs.length === 0;
};
_createClass(PositionalArguments, [{
key: "size",
get: function get() {
return this.exprs.length;
}
}]);
return PositionalArguments;
}((0, _node.node)().fields());
/**
* Corresponds to named arguments.
*
* If `PositionalArguments` and `NamedArguments` are empty, the `SourceOffsets` for this node should
* be the same as the `Args` node that contains this node.
*
* If `PositionalArguments` is not empty but `NamedArguments` is empty, the `SourceOffsets` for this
* node should be the collapsed position immediately after the last positional argument.
*/
exports.PositionalArguments = PositionalArguments;
var NamedArguments = /*#__PURE__*/function (_node$fields3) {
_inheritsLoose(NamedArguments, _node$fields3);
function NamedArguments() {
return _node$fields3.apply(this, arguments) || this;
}
NamedArguments.empty = function empty(loc) {
return new NamedArguments({
loc: loc,
entries: []
});
};
var _proto3 = NamedArguments.prototype;
_proto3.get = function get(name) {
var entry = this.entries.filter(function (e) {
return e.name.chars === name;
})[0];
return entry ? entry.value : null;
};
_proto3.isEmpty = function isEmpty() {
return this.entries.length === 0;
};
_createClass(NamedArguments, [{
key: "size",
get: function get() {
return this.entries.length;
}
}]);
return NamedArguments;
}((0, _node.node)().fields());
/**
* Corresponds to a single named argument.
*
* ```hbs
* x=<expr>
* ```
*/
exports.NamedArguments = NamedArguments;
var NamedArgument = function NamedArgument(options) {
this.loc = options.name.loc.extend(options.value.loc);
this.name = options.name;
this.value = options.value;
};
exports.NamedArgument = NamedArgument;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9saWIvdjItYS9vYmplY3RzL2FyZ3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUdBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFQTs7Ozs7Ozs7Ozs7QUFXQSxJQUFNLElBQU4sR0FBQSxhQUFBLFVBQUEsWUFBQSxFQUFBO0FBQUEsRUFBQSxjQUFBLENBQUEsSUFBQSxFQUFBLFlBQUEsQ0FBQTs7QUFBQSxXQUFBLElBQUEsR0FBQTtBQUFBLFdBQUEsWUFBQSxDQUFBLEtBQUEsQ0FBQSxJQUFBLEVBQUEsU0FBQSxLQUFBLElBQUE7QUFBQTs7QUFBQSxFQUFBLElBQUEsQ0FBQSxLQUFBLEdBSUUsU0FBQSxLQUFBLENBQUEsR0FBQSxFQUE0QjtBQUMxQixXQUFPLElBQUEsSUFBQSxDQUFTO0FBQ2QsTUFBQSxHQURjLEVBQUEsR0FBQTtBQUVkLE1BQUEsVUFBVSxFQUFFLG1CQUFtQixDQUFuQixLQUFBLENBRkUsR0FFRixDQUZFO0FBR2QsTUFBQSxLQUFLLEVBQUUsY0FBYyxDQUFkLEtBQUEsQ0FBQSxHQUFBO0FBSE8sS0FBVCxDQUFQO0FBTEosR0FBQTs7QUFBQSxFQUFBLElBQUEsQ0FBQSxLQUFBLEdBWUUsU0FBQSxLQUFBLENBQUEsTUFBQSxFQUFrQztBQUNoQyxXQUFPLElBQUEsSUFBQSxDQUFTO0FBQ2QsTUFBQSxHQUFHLEVBQUUsTUFBSyxDQURJLEdBQUE7QUFFZCxNQUFBLFVBQVUsRUFBRSxtQkFBbUIsQ0FBbkIsS0FBQSxDQUEwQixNQUFLLENBQUwsR0FBQSxDQUFBLFFBQUEsQ0FGeEIsS0FFd0IsQ0FBMUIsQ0FGRTtBQUdkLE1BQUEsS0FBQSxFQUFBO0FBSGMsS0FBVCxDQUFQO0FBYkosR0FBQTs7QUFBQSxNQUFBLE1BQUEsR0FBQSxJQUFBLENBQUEsU0FBQTs7QUFBQSxFQUFBLE1BQUEsQ0FBQSxHQUFBLEdBb0JFLFNBQUEsR0FBQSxDQUFBLE1B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RSxTQUFBLE9BQUEsR0FBTztBQUNMLFdBQU8sS0FBQSxPQUFBLENBQUEsTUFBQSxLQUFQLENBQUE7QUFyQkosR0FBQTs7QUFBQSxFQUFBLFlBQUEsQ0FBQSxjQUFBLEVBQUEsQ0FBQTtBQUFBLElBQUEsR0FBQSxFQUFBLE1BQUE7QUFBQSxJQUFBLEdBQUEsRUFBQSxTQUFBLEdBQUEsR0FVVTtBQUNOLGFBQU8sS0FBQSxPQUFBLENBQVAsTUFBQTtBQUNEO0FBWkgsR0FBQSxDQUFBLENBQUE7O0FBQUEsU0FBQSxjQUFBO0FBQUEsQ0FBQSxDQUFvQyxrQkFBcEMsTUFBb0MsRUFBcEMsQ0FBQTtBQXlCQTs7Ozs7Ozs7Ozs7QUFPQSxJQUFNLGFBQU4sR0FLRSxTQUFBLGFBQUEsQ0FBQSxPQUFBLEVBQWlFO0FBQy9ELE9BQUEsR0FBQSxHQUFXLE9BQU8sQ0FBUCxJQUFBLENBQUEsR0FBQSxDQUFBLE1BQUEsQ0FBd0IsT0FBTyxDQUFQLEtBQUEsQ0FBbkMsR0FBVyxDQUFYO0FBQ0EsT0FBQSxJQUFBLEdBQVksT0FBTyxDQUFuQixJQUFBO0FBQ0EsT0FBQSxLQUFBLEdBQWEsT0FBTyxDQUFwQixLQUFBO0FBUkosQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNvdXJjZVNsaWNlIH0gZnJvbSAnLi4vLi4vc291cmNlL3NsaWNlJztcbmltcG9ydCB7IFNvdXJjZVNwYW4gfSBmcm9tICcuLi8uLi9zb3VyY2Uvc3Bhbic7XG5pbXBvcnQgdHlwZSB7IEV4cHJlc3Npb25Ob2RlIH0gZnJvbSAnLi9leHByJztcbmltcG9ydCB7IG5vZGUgfSBmcm9tICcuL25vZGUnO1xuXG4vKipcbiAqIENvcnJlc3BvbmRzIHRvIHN5bnRheGVzIHdpdGggcG9zaXRpb25hbCBhbmQgbmFtZWQgYXJndW1lbnRzOlxuICpcbiAqIC0gU3ViRXhwcmVzc2lvblxuICogLSBJbnZva2luZyBBcHBlbmRcbiAqIC0gSW52b2tpbmcgYXR0cmlidXRlc1xuICogLSBJbnZva2VCbG9ja1xuICpcbiAqIElmIGBBcmdzYCBpcyBlbXB0eSwgdGhlIGBTb3VyY2VPZmZzZXRzYCBmb3IgdGhpcyBub2RlIHNob3VsZCBiZSB0aGUgY29sbGFwc2VkIHBvc2l0aW9uXG4gKiBpbW1lZGlhdGVseSBhZnRlciB0aGUgcGFyZW50IGNhbGwgbm9kZSdzIGBjYWxsZWVgLlxuICovXG5leHBvcnQgY2xhc3MgQXJncyBleHRlbmRzIG5vZGUoKS5maWVsZHM8e1xuICBwb3NpdGlvbmFsOiBQb3NpdGlvbmFsQXJndW1lbnRzO1xuICBuYW1lZDogTmFtZWRBcmd1bWVudHM7XG59PigpIHtcbiAgc3RhdGljIGVtcHR5KGxvYzogU291cmNlU3Bhbik6IEFyZ3Mge1xuICAgIHJldHVybiBuZXcgQXJncyh7XG4gICAgICBsb2MsXG4gICAgICBwb3NpdGlvbmFsOiBQb3NpdGlvbmFsQXJndW1lbnRzLmVtcHR5KGxvYyksXG4gICAgICBuYW1lZDogTmFtZWRBcmd1bWVudHMuZW1wdHkobG9jKSxcbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBuYW1lZChuYW1lZDogTmFtZWRBcmd1bWVudHMpOiBBcmdzIHtcbiAgICByZXR1cm4gbmV3IEFyZ3Moe1xuICAgICAgbG9jOiBuYW1lZC5sb2MsXG4gICAgICBwb3NpdGlvbmFsOiBQb3NpdGlvbmFsQXJndW1lbnRzLmVtcHR5KG5hbWVkLmxvYy5jb2xsYXBzZSgnZW5kJykpLFxuICAgICAgbmFtZWQsXG4gICAgfSk7XG4gIH1cblxuICBudGgob2Zmc2V0OiBudW1iZXIpOiBFeHByZXNzaW9uTm9kZSB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLnBvc2l0aW9uYWwubnRoKG9mZnNldCk7XG4gIH1cblxuICBnZXQobmFtZTogc3RyaW5nKTogRXhwcmVzc2lvbk5vZGUgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5uYW1lZC5nZXQobmFtZSk7XG4gIH1cblxuICBpc0VtcHR5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnBvc2l0aW9uYWwuaXNFbXB0eSgpICYmIHRoaXMubmFtZWQuaXNFbXB0eSgpO1xuICB9XG59XG5cbi8qKlxuICogQ29ycmVzcG9uZHMgdG8gcG9zaXRpb25hbCBhcmd1bWVudHMuXG4gKlxuICogSWYgYFBvc2l0aW9uYWxBcmd1bWVudHNgIGlzIGVtcHR5LCB0aGUgYFNvdXJjZU9mZnNldHNgIGZvciB0aGlzIG5vZGUgc2hvdWxkIGJlIHRoZSBjb2xsYXBzZWRcbiAqIHBvc2l0aW9uIGltbWVkaWF0ZWx5IGFmdGVyIHRoZSBwYXJlbnQgY2FsbCBub2RlJ3MgYGNhbGxlZWAuXG4gKi9cbmV4cG9ydCBjbGFzcyBQb3NpdGlvbmFsQXJndW1lbnRzIGV4dGVuZHMgbm9kZSgpLmZpZWxkczx7XG4gIGV4cHJzOiByZWFkb25seSBFeHByZXNzaW9uTm9kZVtdO1xufT4oKSB7XG4gIHN0YXRpYyBlbXB0eShsb2M6IFNvdXJjZVNwYW4pOiBQb3NpdGlvbmFsQXJndW1lbnRzIHtcbiAgICByZXR1cm4gbmV3IFBvc2l0aW9uYWxBcmd1bWVudHMoe1xuICAgICAgbG9jLFxuICAgICAgZXhwcnM6IFtdLFxuICAgIH0pO1xuICB9XG5cbiAgZ2V0IHNpemUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5leHBycy5sZW5ndGg7XG4gIH1cblxuICBudGgob2Zmc2V0OiBudW1iZXIpOiBFeHByZXNzaW9uTm9kZSB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLmV4cHJzW29mZnNldF0gfHwgbnVsbDtcbiAgfVxuXG4gIGlzRW1wdHkoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZXhwcnMubGVuZ3RoID09PSAwO1xuICB9XG59XG5cbi8qKlxuICogQ29ycmVzcG9uZHMgdG8gbmFtZWQgYXJndW1lbnRzLlxuICpcbiAqIElmIGBQb3NpdGlvbmFsQXJndW1lbnRzYCBhbmQgYE5hbWVkQXJndW1lbnRzYCBhcmUgZW1wdHksIHRoZSBgU291cmNlT2Zmc2V0c2AgZm9yIHRoaXMgbm9kZSBzaG91bGRcbiAqIGJlIHRoZSBzYW1lIGFzIHRoZSBgQXJnc2Agbm9kZSB0aGF0IGNvbnRhaW5zIHRoaXMgbm9kZS5cbiAqXG4gKiBJZiBgUG9zaXRpb25hbEFyZ3VtZW50c2AgaXMgbm90IGVtcHR5IGJ1dCBgTmFtZWRBcmd1bWVudHNgIGlzIGVtcHR5LCB0aGUgYFNvdXJjZU9mZnNldHNgIGZvciB0aGlzXG4gKiBub2RlIHNob3VsZCBiZSB0aGUgY29sbGFwc2VkIHBvc2l0aW9uIGltbWVkaWF0ZWx5IGFmdGVyIHRoZSBsYXN0IHBvc2l0aW9uYWwgYXJndW1lbnQuXG4gKi9cbmV4cG9ydCBjbGFzcyBOYW1lZEFyZ3VtZW50cyBleHRlbmRzIG5vZGUoKS5maWVsZHM8e1xuICBlbnRyaWVzOiByZWFkb25seSBOYW1lZEFyZ3VtZW50W107XG59PigpIHtcbiAgc3RhdGljIGVtcHR5KGxvYzogU291cmNlU3Bhbik6IE5hbWVkQXJndW1lbnRzIHtcbiAgICByZXR1cm4gbmV3IE5hbWVkQXJndW1lbnRzKHtcbiAgICAgIGxvYyxcbiAgICAgIGVudHJpZXM6IFtdLFxuICAgIH0pO1xuICB9XG5cbiAgZ2V0IHNpemUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5lbnRyaWVzLmxlbmd0aDtcbiAgfVxuXG4gIGdldChuYW1lOiBzdHJpbmcpOiBFeHByZXNzaW9uTm9kZSB8IG51bGwge1xuICAgIGxldCBlbnRyeSA9IHRoaXMuZW50cmllcy5maWx0ZXIoKGUpID0+IGUubmFtZS5jaGFycyA9PT0gbmFtZSlbMF07XG5cbiAgICByZXR1cm4gZW50cnkgPyBlbnRyeS52YWx1ZSA6IG51bGw7XG4gIH1cblxuICBpc0VtcHR5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmVudHJpZXMubGVuZ3RoID09PSAwO1xuICB9XG59XG5cbi8qKlxuICogQ29ycmVzcG9uZHMgdG8gYSBzaW5nbGUgbmFtZWQgYXJndW1lbnQuXG4gKlxuICogYGBgaGJzXG4gKiB4PTxleHByPlxuICogYGBgXG4gKi9cbmV4cG9ydCBjbGFzcyBOYW1lZEFyZ3VtZW50IHtcbiAgcmVhZG9ubHkgbG9jOiBTb3VyY2VTcGFuO1xuICByZWFkb25seSBuYW1lOiBTb3VyY2VTbGljZTtcbiAgcmVhZG9ubHkgdmFsdWU6IEV4cHJlc3Npb25Ob2RlO1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IHsgbmFtZTogU291cmNlU2xpY2U7IHZhbHVlOiBFeHByZXNzaW9uTm9kZSB9KSB7XG4gICAgdGhpcy5sb2MgPSBvcHRpb25zLm5hbWUubG9jLmV4dGVuZChvcHRpb25zLnZhbHVlLmxvYyk7XG4gICAgdGhpcy5uYW1lID0gb3B0aW9ucy5uYW1lO1xuICAgIHRoaXMudmFsdWUgPSBvcHRpb25zLnZhbHVlO1xuICB9XG59XG4iXSwic291cmNlUm9vdCI6IiJ9