@glimmer/syntax
Version:
60 lines (43 loc) • 5.25 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.NamedBlock = exports.NamedBlocks = exports.Block = exports.Template = void 0;
var _spanList = require("../../source/span-list");
var _args = require("./args");
var _node = require("./node");
/**
* Corresponds to an entire template.
*/
class Template extends (0, _node.node)().fields() {}
/**
* Represents a block. In principle this could be merged with `NamedBlock`, because all cases
* involving blocks have at least a notional name.
*/
exports.Template = Template;
class Block extends (0, _node.node)().fields() {}
/**
* Corresponds to a collection of named blocks.
*/
exports.Block = Block;
class NamedBlocks extends (0, _node.node)().fields() {
get(name) {
return this.blocks.filter(block => block.name.chars === name)[0] || null;
}
}
/**
* Corresponds to a single named block. This is used for anonymous named blocks (`default` and
* `else`).
*/
exports.NamedBlocks = NamedBlocks;
class NamedBlock extends (0, _node.node)().fields() {
get args() {
let entries = this.componentArgs.map(a => a.toNamedArgument());
return _args.Args.named(new _args.NamedArguments({
loc: _spanList.SpanList.range(entries, this.name.loc.collapse('end')),
entries
}));
}
}
exports.NamedBlock = NamedBlock;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9saWIvdjItYS9vYmplY3RzL2ludGVybmFsLW5vZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUNBOztBQUVBOztBQUdBOztBQUVBOzs7QUFHTSxNQUFBLFFBQUEsU0FBd0Isa0JBQXhCLE1BQXdCLEVBQXhCLENBSUg7QUFFSDs7Ozs7Ozs7QUFJTSxNQUFBLEtBQUEsU0FBcUIsa0JBQXJCLE1BQXFCLEVBQXJCLENBRUg7QUFFSDs7Ozs7OztBQUdNLE1BQUEsV0FBQSxTQUEyQixrQkFBM0IsTUFBMkIsRUFBM0IsQ0FBNkU7QUFNakYsRUFBQSxHQUFHLENBQUEsSUFBQSxFQUFhO0FBQ2QsV0FBTyxLQUFBLE1BQUEsQ0FBQSxNQUFBLENBQW9CLEtBQUQsSUFBVyxLQUFLLENBQUwsSUFBQSxDQUFBLEtBQUEsS0FBOUIsSUFBQSxFQUFBLENBQUEsS0FBUCxJQUFBO0FBQ0Q7O0FBUmdGO0FBcUJuRjs7Ozs7Ozs7QUFJTSxNQUFBLFVBQUEsU0FBMEIsa0JBQTFCLE1BQTBCLEVBQTFCLENBQTJEO0FBQy9ELE1BQUEsSUFBQSxHQUFRO0FBQ04sUUFBSSxPQUFPLEdBQUcsS0FBQSxhQUFBLENBQUEsR0FBQSxDQUF3QixDQUFELElBQU8sQ0FBQyxDQUE3QyxlQUE0QyxFQUE5QixDQUFkO0FBRUEsV0FBTyxXQUFBLEtBQUEsQ0FDTCxJQUFBLG9CQUFBLENBQW1CO0FBQ2pCLE1BQUEsR0FBRyxFQUFFLG1CQUFBLEtBQUEsQ0FBQSxPQUFBLEVBQXdCLEtBQUEsSUFBQSxDQUFBLEdBQUEsQ0FBQSxRQUFBLENBRFosS0FDWSxDQUF4QixDQURZO0FBRWpCLE1BQUE7QUFGaUIsS0FBbkIsQ0FESyxDQUFQO0FBTUQ7O0FBVjhEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU291cmNlU2xpY2UgfSBmcm9tICcuLi8uLi9zb3VyY2Uvc2xpY2UnO1xuaW1wb3J0IHsgU3Bhbkxpc3QgfSBmcm9tICcuLi8uLi9zb3VyY2Uvc3Bhbi1saXN0JztcbmltcG9ydCB7IEJsb2NrU3ltYm9sVGFibGUsIFByb2dyYW1TeW1ib2xUYWJsZSB9IGZyb20gJy4uLy4uL3N5bWJvbC10YWJsZSc7XG5pbXBvcnQgeyBBcmdzLCBOYW1lZEFyZ3VtZW50cyB9IGZyb20gJy4vYXJncyc7XG5pbXBvcnQgdHlwZSB7IENvbXBvbmVudEFyZywgRWxlbWVudE1vZGlmaWVyLCBIdG1sT3JTcGxhdEF0dHIgfSBmcm9tICcuL2F0dHItYmxvY2snO1xuaW1wb3J0IHR5cGUgeyBHbGltbWVyUGFyZW50Tm9kZU9wdGlvbnMgfSBmcm9tICcuL2Jhc2UnO1xuaW1wb3J0IHsgQmFzZU5vZGVGaWVsZHMsIG5vZGUgfSBmcm9tICcuL25vZGUnO1xuXG4vKipcbiAqIENvcnJlc3BvbmRzIHRvIGFuIGVudGlyZSB0ZW1wbGF0ZS5cbiAqL1xuZXhwb3J0IGNsYXNzIFRlbXBsYXRlIGV4dGVuZHMgbm9kZSgpLmZpZWxkczxcbiAge1xuICAgIHRhYmxlOiBQcm9ncmFtU3ltYm9sVGFibGU7XG4gIH0gJiBHbGltbWVyUGFyZW50Tm9kZU9wdGlvbnNcbj4oKSB7fVxuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBibG9jay4gSW4gcHJpbmNpcGxlIHRoaXMgY291bGQgYmUgbWVyZ2VkIHdpdGggYE5hbWVkQmxvY2tgLCBiZWNhdXNlIGFsbCBjYXNlc1xuICogaW52b2x2aW5nIGJsb2NrcyBoYXZlIGF0IGxlYXN0IGEgbm90aW9uYWwgbmFtZS5cbiAqL1xuZXhwb3J0IGNsYXNzIEJsb2NrIGV4dGVuZHMgbm9kZSgpLmZpZWxkczxcbiAgeyBzY29wZTogQmxvY2tTeW1ib2xUYWJsZSB9ICYgR2xpbW1lclBhcmVudE5vZGVPcHRpb25zXG4+KCkge31cblxuLyoqXG4gKiBDb3JyZXNwb25kcyB0byBhIGNvbGxlY3Rpb24gb2YgbmFtZWQgYmxvY2tzLlxuICovXG5leHBvcnQgY2xhc3MgTmFtZWRCbG9ja3MgZXh0ZW5kcyBub2RlKCkuZmllbGRzPHsgYmxvY2tzOiByZWFkb25seSBOYW1lZEJsb2NrW10gfT4oKSB7XG4gIC8qKlxuICAgKiBHZXQgdGhlIGBOYW1lZEJsb2NrYCBmb3IgYSBnaXZlbiBuYW1lLlxuICAgKi9cbiAgZ2V0KG5hbWU6ICdkZWZhdWx0Jyk6IE5hbWVkQmxvY2s7XG4gIGdldChuYW1lOiBzdHJpbmcpOiBOYW1lZEJsb2NrIHwgbnVsbDtcbiAgZ2V0KG5hbWU6IHN0cmluZyk6IE5hbWVkQmxvY2sgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5ibG9ja3MuZmlsdGVyKChibG9jaykgPT4gYmxvY2submFtZS5jaGFycyA9PT0gbmFtZSlbMF0gfHwgbnVsbDtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIE5hbWVkQmxvY2tGaWVsZHMgZXh0ZW5kcyBCYXNlTm9kZUZpZWxkcyB7XG4gIG5hbWU6IFNvdXJjZVNsaWNlO1xuICBibG9jazogQmxvY2s7XG5cbiAgLy8gdGhlc2UgYXJlIG5vdCBjdXJyZW50bHkgc3VwcG9ydGVkLCBidXQgYXJlIGhlcmUgZm9yIGZ1dHVyZSBleHBhbnNpb25cbiAgYXR0cnM6IHJlYWRvbmx5IEh0bWxPclNwbGF0QXR0cltdO1xuICBjb21wb25lbnRBcmdzOiByZWFkb25seSBDb21wb25lbnRBcmdbXTtcbiAgbW9kaWZpZXJzOiByZWFkb25seSBFbGVtZW50TW9kaWZpZXJbXTtcbn1cblxuLyoqXG4gKiBDb3JyZXNwb25kcyB0byBhIHNpbmdsZSBuYW1lZCBibG9jay4gVGhpcyBpcyB1c2VkIGZvciBhbm9ueW1vdXMgbmFtZWQgYmxvY2tzIChgZGVmYXVsdGAgYW5kXG4gKiBgZWxzZWApLlxuICovXG5leHBvcnQgY2xhc3MgTmFtZWRCbG9jayBleHRlbmRzIG5vZGUoKS5maWVsZHM8TmFtZWRCbG9ja0ZpZWxkcz4oKSB7XG4gIGdldCBhcmdzKCk6IEFyZ3Mge1xuICAgIGxldCBlbnRyaWVzID0gdGhpcy5jb21wb25lbnRBcmdzLm1hcCgoYSkgPT4gYS50b05hbWVkQXJndW1lbnQoKSk7XG5cbiAgICByZXR1cm4gQXJncy5uYW1lZChcbiAgICAgIG5ldyBOYW1lZEFyZ3VtZW50cyh7XG4gICAgICAgIGxvYzogU3Bhbkxpc3QucmFuZ2UoZW50cmllcywgdGhpcy5uYW1lLmxvYy5jb2xsYXBzZSgnZW5kJykpLFxuICAgICAgICBlbnRyaWVzLFxuICAgICAgfSlcbiAgICApO1xuICB9XG59XG4iXSwic291cmNlUm9vdCI6IiJ9