UNPKG

@glimmer/syntax

Version:
60 lines (43 loc) 5.25 kB
"use strict"; 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