UNPKG

@glimmer/syntax

Version:
40 lines (34 loc) 5.07 kB
import { SpanList } from '../../source/span-list'; import { Args, NamedArguments } from './args'; import { node } from './node'; /** * Corresponds to an entire template. */ export class Template extends node().fields() {} /** * Represents a block. In principle this could be merged with `NamedBlock`, because all cases * involving blocks have at least a notional name. */ export class Block extends node().fields() {} /** * Corresponds to a collection of named blocks. */ export class NamedBlocks extends 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`). */ export class NamedBlock extends node().fields() { get args() { let entries = this.componentArgs.map(a => a.toNamedArgument()); return Args.named(new NamedArguments({ loc: SpanList.range(entries, this.name.loc.collapse('end')), entries })); } } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9saWIvdjItYS9vYmplY3RzL2ludGVybmFsLW5vZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsU0FBUyxRQUFULFFBQXlCLHdCQUF6QjtBQUVBLFNBQVMsSUFBVCxFQUFlLGNBQWYsUUFBcUMsUUFBckM7QUFHQSxTQUF5QixJQUF6QixRQUFxQyxRQUFyQztBQUVBOzs7O0FBR0EsT0FBTSxNQUFPLFFBQVAsU0FBd0IsSUFBSSxHQUFHLE1BQVAsRUFBeEIsQ0FJSDtBQUVIOzs7OztBQUlBLE9BQU0sTUFBTyxLQUFQLFNBQXFCLElBQUksR0FBRyxNQUFQLEVBQXJCLENBRUg7QUFFSDs7OztBQUdBLE9BQU0sTUFBTyxXQUFQLFNBQTJCLElBQUksR0FBRyxNQUFQLEVBQTNCLENBQTZFO0FBTWpGLEVBQUEsR0FBRyxDQUFDLElBQUQsRUFBYTtBQUNkLFdBQU8sS0FBSyxNQUFMLENBQVksTUFBWixDQUFvQixLQUFELElBQVcsS0FBSyxDQUFDLElBQU4sQ0FBVyxLQUFYLEtBQXFCLElBQW5ELEVBQXlELENBQXpELEtBQStELElBQXRFO0FBQ0Q7O0FBUmdGO0FBcUJuRjs7Ozs7QUFJQSxPQUFNLE1BQU8sVUFBUCxTQUEwQixJQUFJLEdBQUcsTUFBUCxFQUExQixDQUEyRDtBQUMvRCxNQUFJLElBQUosR0FBUTtBQUNOLFFBQUksT0FBTyxHQUFHLEtBQUssYUFBTCxDQUFtQixHQUFuQixDQUF3QixDQUFELElBQU8sQ0FBQyxDQUFDLGVBQUYsRUFBOUIsQ0FBZDtBQUVBLFdBQU8sSUFBSSxDQUFDLEtBQUwsQ0FDTCxJQUFJLGNBQUosQ0FBbUI7QUFDakIsTUFBQSxHQUFHLEVBQUUsUUFBUSxDQUFDLEtBQVQsQ0FBZSxPQUFmLEVBQXdCLEtBQUssSUFBTCxDQUFVLEdBQVYsQ0FBYyxRQUFkLENBQXVCLEtBQXZCLENBQXhCLENBRFk7QUFFakIsTUFBQTtBQUZpQixLQUFuQixDQURLLENBQVA7QUFNRDs7QUFWOEQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTb3VyY2VTbGljZSB9IGZyb20gJy4uLy4uL3NvdXJjZS9zbGljZSc7XG5pbXBvcnQgeyBTcGFuTGlzdCB9IGZyb20gJy4uLy4uL3NvdXJjZS9zcGFuLWxpc3QnO1xuaW1wb3J0IHsgQmxvY2tTeW1ib2xUYWJsZSwgUHJvZ3JhbVN5bWJvbFRhYmxlIH0gZnJvbSAnLi4vLi4vc3ltYm9sLXRhYmxlJztcbmltcG9ydCB7IEFyZ3MsIE5hbWVkQXJndW1lbnRzIH0gZnJvbSAnLi9hcmdzJztcbmltcG9ydCB0eXBlIHsgQ29tcG9uZW50QXJnLCBFbGVtZW50TW9kaWZpZXIsIEh0bWxPclNwbGF0QXR0ciB9IGZyb20gJy4vYXR0ci1ibG9jayc7XG5pbXBvcnQgdHlwZSB7IEdsaW1tZXJQYXJlbnROb2RlT3B0aW9ucyB9IGZyb20gJy4vYmFzZSc7XG5pbXBvcnQgeyBCYXNlTm9kZUZpZWxkcywgbm9kZSB9IGZyb20gJy4vbm9kZSc7XG5cbi8qKlxuICogQ29ycmVzcG9uZHMgdG8gYW4gZW50aXJlIHRlbXBsYXRlLlxuICovXG5leHBvcnQgY2xhc3MgVGVtcGxhdGUgZXh0ZW5kcyBub2RlKCkuZmllbGRzPFxuICB7XG4gICAgdGFibGU6IFByb2dyYW1TeW1ib2xUYWJsZTtcbiAgfSAmIEdsaW1tZXJQYXJlbnROb2RlT3B0aW9uc1xuPigpIHt9XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIGJsb2NrLiBJbiBwcmluY2lwbGUgdGhpcyBjb3VsZCBiZSBtZXJnZWQgd2l0aCBgTmFtZWRCbG9ja2AsIGJlY2F1c2UgYWxsIGNhc2VzXG4gKiBpbnZvbHZpbmcgYmxvY2tzIGhhdmUgYXQgbGVhc3QgYSBub3Rpb25hbCBuYW1lLlxuICovXG5leHBvcnQgY2xhc3MgQmxvY2sgZXh0ZW5kcyBub2RlKCkuZmllbGRzPFxuICB7IHNjb3BlOiBCbG9ja1N5bWJvbFRhYmxlIH0gJiBHbGltbWVyUGFyZW50Tm9kZU9wdGlvbnNcbj4oKSB7fVxuXG4vKipcbiAqIENvcnJlc3BvbmRzIHRvIGEgY29sbGVjdGlvbiBvZiBuYW1lZCBibG9ja3MuXG4gKi9cbmV4cG9ydCBjbGFzcyBOYW1lZEJsb2NrcyBleHRlbmRzIG5vZGUoKS5maWVsZHM8eyBibG9ja3M6IHJlYWRvbmx5IE5hbWVkQmxvY2tbXSB9PigpIHtcbiAgLyoqXG4gICAqIEdldCB0aGUgYE5hbWVkQmxvY2tgIGZvciBhIGdpdmVuIG5hbWUuXG4gICAqL1xuICBnZXQobmFtZTogJ2RlZmF1bHQnKTogTmFtZWRCbG9jaztcbiAgZ2V0KG5hbWU6IHN0cmluZyk6IE5hbWVkQmxvY2sgfCBudWxsO1xuICBnZXQobmFtZTogc3RyaW5nKTogTmFtZWRCbG9jayB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLmJsb2Nrcy5maWx0ZXIoKGJsb2NrKSA9PiBibG9jay5uYW1lLmNoYXJzID09PSBuYW1lKVswXSB8fCBudWxsO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmFtZWRCbG9ja0ZpZWxkcyBleHRlbmRzIEJhc2VOb2RlRmllbGRzIHtcbiAgbmFtZTogU291cmNlU2xpY2U7XG4gIGJsb2NrOiBCbG9jaztcblxuICAvLyB0aGVzZSBhcmUgbm90IGN1cnJlbnRseSBzdXBwb3J0ZWQsIGJ1dCBhcmUgaGVyZSBmb3IgZnV0dXJlIGV4cGFuc2lvblxuICBhdHRyczogcmVhZG9ubHkgSHRtbE9yU3BsYXRBdHRyW107XG4gIGNvbXBvbmVudEFyZ3M6IHJlYWRvbmx5IENvbXBvbmVudEFyZ1tdO1xuICBtb2RpZmllcnM6IHJlYWRvbmx5IEVsZW1lbnRNb2RpZmllcltdO1xufVxuXG4vKipcbiAqIENvcnJlc3BvbmRzIHRvIGEgc2luZ2xlIG5hbWVkIGJsb2NrLiBUaGlzIGlzIHVzZWQgZm9yIGFub255bW91cyBuYW1lZCBibG9ja3MgKGBkZWZhdWx0YCBhbmRcbiAqIGBlbHNlYCkuXG4gKi9cbmV4cG9ydCBjbGFzcyBOYW1lZEJsb2NrIGV4dGVuZHMgbm9kZSgpLmZpZWxkczxOYW1lZEJsb2NrRmllbGRzPigpIHtcbiAgZ2V0IGFyZ3MoKTogQXJncyB7XG4gICAgbGV0IGVudHJpZXMgPSB0aGlzLmNvbXBvbmVudEFyZ3MubWFwKChhKSA9PiBhLnRvTmFtZWRBcmd1bWVudCgpKTtcblxuICAgIHJldHVybiBBcmdzLm5hbWVkKFxuICAgICAgbmV3IE5hbWVkQXJndW1lbnRzKHtcbiAgICAgICAgbG9jOiBTcGFuTGlzdC5yYW5nZShlbnRyaWVzLCB0aGlzLm5hbWUubG9jLmNvbGxhcHNlKCdlbmQnKSksXG4gICAgICAgIGVudHJpZXMsXG4gICAgICB9KVxuICAgICk7XG4gIH1cbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=