UNPKG

@glimmer/compiler

Version:
44 lines (40 loc) 4.58 kB
import * as mir from '../../../2-encoding/mir'; import { convertPathToCallIfKeyword, VISIT_EXPRS } from '../expressions'; import { VISIT_STMTS } from '../statements'; export class ClassifiedComponent { constructor(tag, element) { this.tag = tag; this.element = element; this.dynamicFeatures = true; } arg(attr, { state }) { let name = attr.name; return VISIT_EXPRS.visit(convertPathToCallIfKeyword(attr.value), state).mapOk(value => new mir.NamedArgument({ loc: attr.loc, key: name, value })); } toStatement(component, { args, params }) { let { element, state } = component; return this.blocks(state).mapOk(blocks => new mir.Component({ loc: element.loc, tag: this.tag, params, args, blocks })); } blocks(state) { return VISIT_STMTS.NamedBlocks(this.element.blocks, state); } } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL2NvbXBpbGVyL2xpYi9wYXNzZXMvMS1ub3JtYWxpemF0aW9uL3Zpc2l0b3JzL2VsZW1lbnQvY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sS0FBSyxHQUFaLE1BQXFCLHlCQUFyQjtBQUVBLFNBQVMsMEJBQVQsRUFBcUMsV0FBckMsUUFBd0QsZ0JBQXhEO0FBQ0EsU0FBUyxXQUFULFFBQTRCLGVBQTVCO0FBR0EsT0FBTSxNQUFPLG1CQUFQLENBQTBCO0FBRzlCLEVBQUEsV0FBQSxDQUFvQixHQUFwQixFQUFxRCxPQUFyRCxFQUFtRjtBQUEvRCxTQUFBLEdBQUEsR0FBQSxHQUFBO0FBQWlDLFNBQUEsT0FBQSxHQUFBLE9BQUE7QUFGNUMsU0FBQSxlQUFBLEdBQWtCLElBQWxCO0FBRThFOztBQUV2RixFQUFBLEdBQUcsQ0FBQyxJQUFELEVBQTJCO0FBQUUsSUFBQTtBQUFGLEdBQTNCLEVBQXVEO0FBQ3hELFFBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFoQjtBQUVBLFdBQU8sV0FBVyxDQUFDLEtBQVosQ0FBa0IsMEJBQTBCLENBQUMsSUFBSSxDQUFDLEtBQU4sQ0FBNUMsRUFBMEQsS0FBMUQsRUFBaUUsS0FBakUsQ0FDSixLQUFELElBQ0UsSUFBSSxHQUFHLENBQUMsYUFBUixDQUFzQjtBQUNwQixNQUFBLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FEVTtBQUVwQixNQUFBLEdBQUcsRUFBRSxJQUZlO0FBR3BCLE1BQUE7QUFIb0IsS0FBdEIsQ0FGRyxDQUFQO0FBUUQ7O0FBRUQsRUFBQSxXQUFXLENBQUMsU0FBRCxFQUErQjtBQUFFLElBQUEsSUFBRjtBQUFRLElBQUE7QUFBUixHQUEvQixFQUE2RDtBQUN0RSxRQUFJO0FBQUUsTUFBQSxPQUFGO0FBQVcsTUFBQTtBQUFYLFFBQXFCLFNBQXpCO0FBRUEsV0FBTyxLQUFLLE1BQUwsQ0FBWSxLQUFaLEVBQW1CLEtBQW5CLENBQ0osTUFBRCxJQUNFLElBQUksR0FBRyxDQUFDLFNBQVIsQ0FBa0I7QUFDaEIsTUFBQSxHQUFHLEVBQUUsT0FBTyxDQUFDLEdBREc7QUFFaEIsTUFBQSxHQUFHLEVBQUUsS0FBSyxHQUZNO0FBR2hCLE1BQUEsTUFIZ0I7QUFJaEIsTUFBQSxJQUpnQjtBQUtoQixNQUFBO0FBTGdCLEtBQWxCLENBRkcsQ0FBUDtBQVVEOztBQUVPLEVBQUEsTUFBTSxDQUFDLEtBQUQsRUFBMEI7QUFDdEMsV0FBTyxXQUFXLENBQUMsV0FBWixDQUF3QixLQUFLLE9BQUwsQ0FBYSxNQUFyQyxFQUE2QyxLQUE3QyxDQUFQO0FBQ0Q7O0FBbkM2QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFTVHYyIH0gZnJvbSAnQGdsaW1tZXIvc3ludGF4JztcblxuaW1wb3J0IHsgUmVzdWx0IH0gZnJvbSAnLi4vLi4vLi4vLi4vc2hhcmVkL3Jlc3VsdCc7XG5pbXBvcnQgKiBhcyBtaXIgZnJvbSAnLi4vLi4vLi4vMi1lbmNvZGluZy9taXInO1xuaW1wb3J0IHsgTm9ybWFsaXphdGlvblN0YXRlIH0gZnJvbSAnLi4vLi4vY29udGV4dCc7XG5pbXBvcnQgeyBjb252ZXJ0UGF0aFRvQ2FsbElmS2V5d29yZCwgVklTSVRfRVhQUlMgfSBmcm9tICcuLi9leHByZXNzaW9ucyc7XG5pbXBvcnQgeyBWSVNJVF9TVE1UUyB9IGZyb20gJy4uL3N0YXRlbWVudHMnO1xuaW1wb3J0IHsgQ2xhc3NpZmllZCwgQ2xhc3NpZmllZEVsZW1lbnQsIFByZXBhcmVkQXJncyB9IGZyb20gJy4vY2xhc3NpZmllZCc7XG5cbmV4cG9ydCBjbGFzcyBDbGFzc2lmaWVkQ29tcG9uZW50IGltcGxlbWVudHMgQ2xhc3NpZmllZCB7XG4gIHJlYWRvbmx5IGR5bmFtaWNGZWF0dXJlcyA9IHRydWU7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSB0YWc6IG1pci5FeHByZXNzaW9uTm9kZSwgcHJpdmF0ZSBlbGVtZW50OiBBU1R2Mi5JbnZva2VDb21wb25lbnQpIHt9XG5cbiAgYXJnKGF0dHI6IEFTVHYyLkNvbXBvbmVudEFyZywgeyBzdGF0ZSB9OiBDbGFzc2lmaWVkRWxlbWVudCk6IFJlc3VsdDxtaXIuTmFtZWRBcmd1bWVudD4ge1xuICAgIGxldCBuYW1lID0gYXR0ci5uYW1lO1xuXG4gICAgcmV0dXJuIFZJU0lUX0VYUFJTLnZpc2l0KGNvbnZlcnRQYXRoVG9DYWxsSWZLZXl3b3JkKGF0dHIudmFsdWUpLCBzdGF0ZSkubWFwT2soXG4gICAgICAodmFsdWUpID0+XG4gICAgICAgIG5ldyBtaXIuTmFtZWRBcmd1bWVudCh7XG4gICAgICAgICAgbG9jOiBhdHRyLmxvYyxcbiAgICAgICAgICBrZXk6IG5hbWUsXG4gICAgICAgICAgdmFsdWUsXG4gICAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHRvU3RhdGVtZW50KGNvbXBvbmVudDogQ2xhc3NpZmllZEVsZW1lbnQsIHsgYXJncywgcGFyYW1zIH06IFByZXBhcmVkQXJncyk6IFJlc3VsdDxtaXIuU3RhdGVtZW50PiB7XG4gICAgbGV0IHsgZWxlbWVudCwgc3RhdGUgfSA9IGNvbXBvbmVudDtcblxuICAgIHJldHVybiB0aGlzLmJsb2NrcyhzdGF0ZSkubWFwT2soXG4gICAgICAoYmxvY2tzKSA9PlxuICAgICAgICBuZXcgbWlyLkNvbXBvbmVudCh7XG4gICAgICAgICAgbG9jOiBlbGVtZW50LmxvYyxcbiAgICAgICAgICB0YWc6IHRoaXMudGFnLFxuICAgICAgICAgIHBhcmFtcyxcbiAgICAgICAgICBhcmdzLFxuICAgICAgICAgIGJsb2NrcyxcbiAgICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBibG9ja3Moc3RhdGU6IE5vcm1hbGl6YXRpb25TdGF0ZSk6IFJlc3VsdDxtaXIuTmFtZWRCbG9ja3M+IHtcbiAgICByZXR1cm4gVklTSVRfU1RNVFMuTmFtZWRCbG9ja3ModGhpcy5lbGVtZW50LmJsb2Nrcywgc3RhdGUpO1xuICB9XG59XG4iXSwic291cmNlUm9vdCI6IiJ9