@glimmer/compiler
Version:
44 lines (40 loc) • 4.58 kB
JavaScript
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