UNPKG

@glimmer/syntax

Version:
57 lines (51 loc) 8.6 kB
import { SpanList } from '../../source/span-list'; import { Args, NamedArguments } from './args'; import { node } from './node'; export class GlimmerComment extends node('GlimmerComment').fields() {} export class HtmlText extends node('HtmlText').fields() {} export class HtmlComment extends node('HtmlComment').fields() {} export class AppendContent extends node('AppendContent').fields() { get callee() { if (this.value.type === 'Call') { return this.value.callee; } else { return this.value; } } get args() { if (this.value.type === 'Call') { return this.value.args; } else { return Args.empty(this.value.loc.collapse('end')); } } } export class InvokeBlock extends node('InvokeBlock').fields() {} /** * Corresponds to a component invocation. When the content of a component invocation contains no * named blocks, `blocks` contains a single named block named `"default"`. When a component * invocation is self-closing, `blocks` is empty. */ export class InvokeComponent extends node('InvokeComponent').fields() { get args() { let entries = this.componentArgs.map(a => a.toNamedArgument()); return Args.named(new NamedArguments({ loc: SpanList.range(entries, this.callee.loc.collapse('end')), entries })); } } /** * Corresponds to a simple HTML element. The AST allows component arguments and modifiers to support * future extensions. */ export class SimpleElement extends node('SimpleElement').fields() { get args() { let entries = this.componentArgs.map(a => a.toNamedArgument()); return Args.named(new NamedArguments({ loc: SpanList.range(entries, this.tag.loc.collapse('end')), entries })); } } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9saWIvdjItYS9vYmplY3RzL2NvbnRlbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsU0FBUyxRQUFULFFBQXlCLHdCQUF6QjtBQUVBLFNBQVMsSUFBVCxFQUFlLGNBQWYsUUFBcUMsUUFBckM7QUFLQSxTQUF5QixJQUF6QixRQUFxQyxRQUFyQztBQWlCQSxPQUFNLE1BQU8sY0FBUCxTQUE4QixJQUFJLENBQUMsZ0JBQUQsQ0FBSixDQUF1QixNQUF2QixFQUE5QixDQUFvRjtBQUMxRixPQUFNLE1BQU8sUUFBUCxTQUF3QixJQUFJLENBQUMsVUFBRCxDQUFKLENBQWlCLE1BQWpCLEVBQXhCLENBQW9FO0FBQzFFLE9BQU0sTUFBTyxXQUFQLFNBQTJCLElBQUksQ0FBQyxhQUFELENBQUosQ0FBb0IsTUFBcEIsRUFBM0IsQ0FBOEU7QUFFcEYsT0FBTSxNQUFPLGFBQVAsU0FBNkIsSUFBSSxDQUFDLGVBQUQsQ0FBSixDQUFzQixNQUF0QixFQUE3QixDQUlGO0FBQ0YsTUFBSSxNQUFKLEdBQVU7QUFDUixRQUFJLEtBQUssS0FBTCxDQUFXLElBQVgsS0FBb0IsTUFBeEIsRUFBZ0M7QUFDOUIsYUFBTyxLQUFLLEtBQUwsQ0FBVyxNQUFsQjtBQUNELEtBRkQsTUFFTztBQUNMLGFBQU8sS0FBSyxLQUFaO0FBQ0Q7QUFDRjs7QUFFRCxNQUFJLElBQUosR0FBUTtBQUNOLFFBQUksS0FBSyxLQUFMLENBQVcsSUFBWCxLQUFvQixNQUF4QixFQUFnQztBQUM5QixhQUFPLEtBQUssS0FBTCxDQUFXLElBQWxCO0FBQ0QsS0FGRCxNQUVPO0FBQ0wsYUFBTyxJQUFJLENBQUMsS0FBTCxDQUFXLEtBQUssS0FBTCxDQUFXLEdBQVgsQ0FBZSxRQUFmLENBQXdCLEtBQXhCLENBQVgsQ0FBUDtBQUNEO0FBQ0Y7O0FBZkM7QUFrQkosT0FBTSxNQUFPLFdBQVAsU0FBMkIsSUFBSSxDQUFDLGFBQUQsQ0FBSixDQUFvQixNQUFwQixFQUEzQixDQUVIO0FBVUg7Ozs7OztBQUtBLE9BQU0sTUFBTyxlQUFQLFNBQStCLElBQUksQ0FBQyxpQkFBRCxDQUFKLENBQXdCLE1BQXhCLEVBQS9CLENBQXNGO0FBQzFGLE1BQUksSUFBSixHQUFRO0FBQ04sUUFBSSxPQUFPLEdBQUcsS0FBSyxhQUFMLENBQW1CLEdBQW5CLENBQXdCLENBQUQsSUFBTyxDQUFDLENBQUMsZUFBRixFQUE5QixDQUFkO0FBRUEsV0FBTyxJQUFJLENBQUMsS0FBTCxDQUNMLElBQUksY0FBSixDQUFtQjtBQUNqQixNQUFBLEdBQUcsRUFBRSxRQUFRLENBQUMsS0FBVCxDQUFlLE9BQWYsRUFBd0IsS0FBSyxNQUFMLENBQVksR0FBWixDQUFnQixRQUFoQixDQUF5QixLQUF6QixDQUF4QixDQURZO0FBRWpCLE1BQUE7QUFGaUIsS0FBbkIsQ0FESyxDQUFQO0FBTUQ7O0FBVnlGO0FBcUI1Rjs7Ozs7QUFJQSxPQUFNLE1BQU8sYUFBUCxTQUE2QixJQUFJLENBQUMsZUFBRCxDQUFKLENBQXNCLE1BQXRCLEVBQTdCLENBQWlGO0FBQ3JGLE1BQUksSUFBSixHQUFRO0FBQ04sUUFBSSxPQUFPLEdBQUcsS0FBSyxhQUFMLENBQW1CLEdBQW5CLENBQXdCLENBQUQsSUFBTyxDQUFDLENBQUMsZUFBRixFQUE5QixDQUFkO0FBRUEsV0FBTyxJQUFJLENBQUMsS0FBTCxDQUNMLElBQUksY0FBSixDQUFtQjtBQUNqQixNQUFBLEdBQUcsRUFBRSxRQUFRLENBQUMsS0FBVCxDQUFlLE9BQWYsRUFBd0IsS0FBSyxHQUFMLENBQVMsR0FBVCxDQUFhLFFBQWIsQ0FBc0IsS0FBdEIsQ0FBeEIsQ0FEWTtBQUVqQixNQUFBO0FBRmlCLEtBQW5CLENBREssQ0FBUDtBQU1EOztBQVZvRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNvdXJjZVNsaWNlIH0gZnJvbSAnLi4vLi4vc291cmNlL3NsaWNlJztcbmltcG9ydCB7IFNwYW5MaXN0IH0gZnJvbSAnLi4vLi4vc291cmNlL3NwYW4tbGlzdCc7XG5pbXBvcnQgeyBTeW1ib2xUYWJsZSB9IGZyb20gJy4uLy4uL3N5bWJvbC10YWJsZSc7XG5pbXBvcnQgeyBBcmdzLCBOYW1lZEFyZ3VtZW50cyB9IGZyb20gJy4vYXJncyc7XG5pbXBvcnQgdHlwZSB7IENvbXBvbmVudEFyZywgRWxlbWVudE1vZGlmaWVyLCBIdG1sT3JTcGxhdEF0dHIgfSBmcm9tICcuL2F0dHItYmxvY2snO1xuaW1wb3J0IHR5cGUgeyBDYWxsRmllbGRzIH0gZnJvbSAnLi9iYXNlJztcbmltcG9ydCB0eXBlIHsgRXhwcmVzc2lvbk5vZGUgfSBmcm9tICcuL2V4cHInO1xuaW1wb3J0IHR5cGUgeyBOYW1lZEJsb2NrLCBOYW1lZEJsb2NrcyB9IGZyb20gJy4vaW50ZXJuYWwtbm9kZSc7XG5pbXBvcnQgeyBCYXNlTm9kZUZpZWxkcywgbm9kZSB9IGZyb20gJy4vbm9kZSc7XG5cbi8qKlxuICogQ29udGVudCBOb2RlcyBhcmUgYWxsb3dlZCBpbiBjb250ZW50IHBvc2l0aW9ucyBpbiB0ZW1wbGF0ZXMuIFRoZXkgY29ycmVzcG9uZCB0byBiZWhhdmlvciBpbiB0aGVcbiAqIFtEYXRhXVtkYXRhXSB0b2tlbml6YXRpb24gc3RhdGUgaW4gSFRNTC5cbiAqXG4gKiBbZGF0YV06IGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3BhcnNpbmcuaHRtbCNkYXRhLXN0YXRlXG4gKi9cbmV4cG9ydCB0eXBlIENvbnRlbnROb2RlID1cbiAgfCBIdG1sVGV4dFxuICB8IEh0bWxDb21tZW50XG4gIHwgQXBwZW5kQ29udGVudFxuICB8IEludm9rZUJsb2NrXG4gIHwgSW52b2tlQ29tcG9uZW50XG4gIHwgU2ltcGxlRWxlbWVudFxuICB8IEdsaW1tZXJDb21tZW50O1xuXG5leHBvcnQgY2xhc3MgR2xpbW1lckNvbW1lbnQgZXh0ZW5kcyBub2RlKCdHbGltbWVyQ29tbWVudCcpLmZpZWxkczx7IHRleHQ6IFNvdXJjZVNsaWNlIH0+KCkge31cbmV4cG9ydCBjbGFzcyBIdG1sVGV4dCBleHRlbmRzIG5vZGUoJ0h0bWxUZXh0JykuZmllbGRzPHsgY2hhcnM6IHN0cmluZyB9PigpIHt9XG5leHBvcnQgY2xhc3MgSHRtbENvbW1lbnQgZXh0ZW5kcyBub2RlKCdIdG1sQ29tbWVudCcpLmZpZWxkczx7IHRleHQ6IFNvdXJjZVNsaWNlIH0+KCkge31cblxuZXhwb3J0IGNsYXNzIEFwcGVuZENvbnRlbnQgZXh0ZW5kcyBub2RlKCdBcHBlbmRDb250ZW50JykuZmllbGRzPHtcbiAgdmFsdWU6IEV4cHJlc3Npb25Ob2RlO1xuICB0cnVzdGluZzogYm9vbGVhbjtcbiAgdGFibGU6IFN5bWJvbFRhYmxlO1xufT4oKSB7XG4gIGdldCBjYWxsZWUoKTogRXhwcmVzc2lvbk5vZGUge1xuICAgIGlmICh0aGlzLnZhbHVlLnR5cGUgPT09ICdDYWxsJykge1xuICAgICAgcmV0dXJuIHRoaXMudmFsdWUuY2FsbGVlO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy52YWx1ZTtcbiAgICB9XG4gIH1cblxuICBnZXQgYXJncygpOiBBcmdzIHtcbiAgICBpZiAodGhpcy52YWx1ZS50eXBlID09PSAnQ2FsbCcpIHtcbiAgICAgIHJldHVybiB0aGlzLnZhbHVlLmFyZ3M7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBBcmdzLmVtcHR5KHRoaXMudmFsdWUubG9jLmNvbGxhcHNlKCdlbmQnKSk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBJbnZva2VCbG9jayBleHRlbmRzIG5vZGUoJ0ludm9rZUJsb2NrJykuZmllbGRzPFxuICBDYWxsRmllbGRzICYgeyBibG9ja3M6IE5hbWVkQmxvY2tzIH1cbj4oKSB7fVxuXG5pbnRlcmZhY2UgSW52b2tlQ29tcG9uZW50RmllbGRzIHtcbiAgY2FsbGVlOiBFeHByZXNzaW9uTm9kZTtcbiAgYmxvY2tzOiBOYW1lZEJsb2NrcztcbiAgYXR0cnM6IHJlYWRvbmx5IEh0bWxPclNwbGF0QXR0cltdO1xuICBjb21wb25lbnRBcmdzOiByZWFkb25seSBDb21wb25lbnRBcmdbXTtcbiAgbW9kaWZpZXJzOiByZWFkb25seSBFbGVtZW50TW9kaWZpZXJbXTtcbn1cblxuLyoqXG4gKiBDb3JyZXNwb25kcyB0byBhIGNvbXBvbmVudCBpbnZvY2F0aW9uLiBXaGVuIHRoZSBjb250ZW50IG9mIGEgY29tcG9uZW50IGludm9jYXRpb24gY29udGFpbnMgbm9cbiAqIG5hbWVkIGJsb2NrcywgYGJsb2Nrc2AgY29udGFpbnMgYSBzaW5nbGUgbmFtZWQgYmxvY2sgbmFtZWQgYFwiZGVmYXVsdFwiYC4gV2hlbiBhIGNvbXBvbmVudFxuICogaW52b2NhdGlvbiBpcyBzZWxmLWNsb3NpbmcsIGBibG9ja3NgIGlzIGVtcHR5LlxuICovXG5leHBvcnQgY2xhc3MgSW52b2tlQ29tcG9uZW50IGV4dGVuZHMgbm9kZSgnSW52b2tlQ29tcG9uZW50JykuZmllbGRzPEludm9rZUNvbXBvbmVudEZpZWxkcz4oKSB7XG4gIGdldCBhcmdzKCk6IEFyZ3Mge1xuICAgIGxldCBlbnRyaWVzID0gdGhpcy5jb21wb25lbnRBcmdzLm1hcCgoYSkgPT4gYS50b05hbWVkQXJndW1lbnQoKSk7XG5cbiAgICByZXR1cm4gQXJncy5uYW1lZChcbiAgICAgIG5ldyBOYW1lZEFyZ3VtZW50cyh7XG4gICAgICAgIGxvYzogU3Bhbkxpc3QucmFuZ2UoZW50cmllcywgdGhpcy5jYWxsZWUubG9jLmNvbGxhcHNlKCdlbmQnKSksXG4gICAgICAgIGVudHJpZXMsXG4gICAgICB9KVxuICAgICk7XG4gIH1cbn1cblxuaW50ZXJmYWNlIFNpbXBsZUVsZW1lbnRPcHRpb25zIGV4dGVuZHMgQmFzZU5vZGVGaWVsZHMge1xuICB0YWc6IFNvdXJjZVNsaWNlO1xuICBib2R5OiByZWFkb25seSBDb250ZW50Tm9kZVtdO1xuICBhdHRyczogcmVhZG9ubHkgSHRtbE9yU3BsYXRBdHRyW107XG4gIGNvbXBvbmVudEFyZ3M6IHJlYWRvbmx5IENvbXBvbmVudEFyZ1tdO1xuICBtb2RpZmllcnM6IHJlYWRvbmx5IEVsZW1lbnRNb2RpZmllcltdO1xufVxuXG4vKipcbiAqIENvcnJlc3BvbmRzIHRvIGEgc2ltcGxlIEhUTUwgZWxlbWVudC4gVGhlIEFTVCBhbGxvd3MgY29tcG9uZW50IGFyZ3VtZW50cyBhbmQgbW9kaWZpZXJzIHRvIHN1cHBvcnRcbiAqIGZ1dHVyZSBleHRlbnNpb25zLlxuICovXG5leHBvcnQgY2xhc3MgU2ltcGxlRWxlbWVudCBleHRlbmRzIG5vZGUoJ1NpbXBsZUVsZW1lbnQnKS5maWVsZHM8U2ltcGxlRWxlbWVudE9wdGlvbnM+KCkge1xuICBnZXQgYXJncygpOiBBcmdzIHtcbiAgICBsZXQgZW50cmllcyA9IHRoaXMuY29tcG9uZW50QXJncy5tYXAoKGEpID0+IGEudG9OYW1lZEFyZ3VtZW50KCkpO1xuXG4gICAgcmV0dXJuIEFyZ3MubmFtZWQoXG4gICAgICBuZXcgTmFtZWRBcmd1bWVudHMoe1xuICAgICAgICBsb2M6IFNwYW5MaXN0LnJhbmdlKGVudHJpZXMsIHRoaXMudGFnLmxvYy5jb2xsYXBzZSgnZW5kJykpLFxuICAgICAgICBlbnRyaWVzLFxuICAgICAgfSlcbiAgICApO1xuICB9XG59XG5cbmV4cG9ydCB0eXBlIEVsZW1lbnROb2RlID0gTmFtZWRCbG9jayB8IEludm9rZUNvbXBvbmVudCB8IFNpbXBsZUVsZW1lbnQ7XG4iXSwic291cmNlUm9vdCI6IiJ9