ember-legacy-class-transform
Version:
The default blueprint for ember-cli addons.
45 lines (40 loc) • 5.19 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _blocks = require('../compiled/blocks');
var _opcodes = require('../opcodes');
var _functions = require('./functions');
class CompilableTemplate {
constructor(statements, symbolTable) {
this.statements = statements;
this.symbolTable = symbolTable;
this.compiledStatic = null;
this.compiledDynamic = null;
}
compileStatic(env) {
let { compiledStatic } = this;
if (!compiledStatic) {
let builder = (0, _functions.compileStatements)(this.statements, this.symbolTable.meta, env);
builder.finalize();
let handle = builder.start;
if (false) {
let start = env.program.heap.size() - env.program.heap.sizeof(handle);
let end = start + env.program.heap.sizeof(handle);
(0, _opcodes.debugSlice)(env, start, end);
}
compiledStatic = this.compiledStatic = new _blocks.CompiledStaticTemplate(handle);
}
return compiledStatic;
}
compileDynamic(env) {
let { compiledDynamic } = this;
if (!compiledDynamic) {
let staticBlock = this.compileStatic(env);
compiledDynamic = new _blocks.CompiledDynamicTemplate(staticBlock.handle, this.symbolTable);
}
return compiledDynamic;
}
}
exports.default = CompilableTemplate;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9zeW50YXgvY29tcGlsYWJsZS10ZW1wbGF0ZS5qcyJdLCJuYW1lcyI6WyJDb21waWxhYmxlVGVtcGxhdGUiLCJjb25zdHJ1Y3RvciIsInN0YXRlbWVudHMiLCJzeW1ib2xUYWJsZSIsImNvbXBpbGVkU3RhdGljIiwiY29tcGlsZWREeW5hbWljIiwiY29tcGlsZVN0YXRpYyIsImVudiIsImJ1aWxkZXIiLCJtZXRhIiwiZmluYWxpemUiLCJoYW5kbGUiLCJzdGFydCIsInByb2dyYW0iLCJoZWFwIiwic2l6ZSIsInNpemVvZiIsImVuZCIsImNvbXBpbGVEeW5hbWljIiwic3RhdGljQmxvY2siXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUVlLE1BQU1BLGtCQUFOLENBQXlCO0FBQ3BDQyxnQkFBWUMsVUFBWixFQUF3QkMsV0FBeEIsRUFBcUM7QUFDakMsYUFBS0QsVUFBTCxHQUFrQkEsVUFBbEI7QUFDQSxhQUFLQyxXQUFMLEdBQW1CQSxXQUFuQjtBQUNBLGFBQUtDLGNBQUwsR0FBc0IsSUFBdEI7QUFDQSxhQUFLQyxlQUFMLEdBQXVCLElBQXZCO0FBQ0g7QUFDREMsa0JBQWNDLEdBQWQsRUFBbUI7QUFDZixZQUFJLEVBQUVILGNBQUYsS0FBcUIsSUFBekI7QUFDQSxZQUFJLENBQUNBLGNBQUwsRUFBcUI7QUFDakIsZ0JBQUlJLFVBQVUsa0NBQWtCLEtBQUtOLFVBQXZCLEVBQW1DLEtBQUtDLFdBQUwsQ0FBaUJNLElBQXBELEVBQTBERixHQUExRCxDQUFkO0FBQ0FDLG9CQUFRRSxRQUFSO0FBQ0EsZ0JBQUlDLFNBQVNILFFBQVFJLEtBQXJCO0FBQ0EsZ0JBQUksS0FBSixFQUFXO0FBQ1Asb0JBQUlBLFFBQVFMLElBQUlNLE9BQUosQ0FBWUMsSUFBWixDQUFpQkMsSUFBakIsS0FBMEJSLElBQUlNLE9BQUosQ0FBWUMsSUFBWixDQUFpQkUsTUFBakIsQ0FBd0JMLE1BQXhCLENBQXRDO0FBQ0Esb0JBQUlNLE1BQU1MLFFBQVFMLElBQUlNLE9BQUosQ0FBWUMsSUFBWixDQUFpQkUsTUFBakIsQ0FBd0JMLE1BQXhCLENBQWxCO0FBQ0EseUNBQVdKLEdBQVgsRUFBZ0JLLEtBQWhCLEVBQXVCSyxHQUF2QjtBQUNIO0FBQ0RiLDZCQUFpQixLQUFLQSxjQUFMLEdBQXNCLG1DQUEyQk8sTUFBM0IsQ0FBdkM7QUFDSDtBQUNELGVBQU9QLGNBQVA7QUFDSDtBQUNEYyxtQkFBZVgsR0FBZixFQUFvQjtBQUNoQixZQUFJLEVBQUVGLGVBQUYsS0FBc0IsSUFBMUI7QUFDQSxZQUFJLENBQUNBLGVBQUwsRUFBc0I7QUFDbEIsZ0JBQUljLGNBQWMsS0FBS2IsYUFBTCxDQUFtQkMsR0FBbkIsQ0FBbEI7QUFDQUYsOEJBQWtCLG9DQUE0QmMsWUFBWVIsTUFBeEMsRUFBZ0QsS0FBS1IsV0FBckQsQ0FBbEI7QUFDSDtBQUNELGVBQU9FLGVBQVA7QUFDSDtBQTdCbUM7a0JBQW5CTCxrQiIsImZpbGUiOiJsaWIvc3ludGF4L2NvbXBpbGFibGUtdGVtcGxhdGUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21waWxlZER5bmFtaWNUZW1wbGF0ZSwgQ29tcGlsZWRTdGF0aWNUZW1wbGF0ZSB9IGZyb20gJy4uL2NvbXBpbGVkL2Jsb2Nrcyc7XG5pbXBvcnQgeyBkZWJ1Z1NsaWNlIH0gZnJvbSAnLi4vb3Bjb2Rlcyc7XG5pbXBvcnQgeyBjb21waWxlU3RhdGVtZW50cyB9IGZyb20gJy4vZnVuY3Rpb25zJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ29tcGlsYWJsZVRlbXBsYXRlIHtcbiAgICBjb25zdHJ1Y3RvcihzdGF0ZW1lbnRzLCBzeW1ib2xUYWJsZSkge1xuICAgICAgICB0aGlzLnN0YXRlbWVudHMgPSBzdGF0ZW1lbnRzO1xuICAgICAgICB0aGlzLnN5bWJvbFRhYmxlID0gc3ltYm9sVGFibGU7XG4gICAgICAgIHRoaXMuY29tcGlsZWRTdGF0aWMgPSBudWxsO1xuICAgICAgICB0aGlzLmNvbXBpbGVkRHluYW1pYyA9IG51bGw7XG4gICAgfVxuICAgIGNvbXBpbGVTdGF0aWMoZW52KSB7XG4gICAgICAgIGxldCB7IGNvbXBpbGVkU3RhdGljIH0gPSB0aGlzO1xuICAgICAgICBpZiAoIWNvbXBpbGVkU3RhdGljKSB7XG4gICAgICAgICAgICBsZXQgYnVpbGRlciA9IGNvbXBpbGVTdGF0ZW1lbnRzKHRoaXMuc3RhdGVtZW50cywgdGhpcy5zeW1ib2xUYWJsZS5tZXRhLCBlbnYpO1xuICAgICAgICAgICAgYnVpbGRlci5maW5hbGl6ZSgpO1xuICAgICAgICAgICAgbGV0IGhhbmRsZSA9IGJ1aWxkZXIuc3RhcnQ7XG4gICAgICAgICAgICBpZiAoZmFsc2UpIHtcbiAgICAgICAgICAgICAgICBsZXQgc3RhcnQgPSBlbnYucHJvZ3JhbS5oZWFwLnNpemUoKSAtIGVudi5wcm9ncmFtLmhlYXAuc2l6ZW9mKGhhbmRsZSk7XG4gICAgICAgICAgICAgICAgbGV0IGVuZCA9IHN0YXJ0ICsgZW52LnByb2dyYW0uaGVhcC5zaXplb2YoaGFuZGxlKTtcbiAgICAgICAgICAgICAgICBkZWJ1Z1NsaWNlKGVudiwgc3RhcnQsIGVuZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb21waWxlZFN0YXRpYyA9IHRoaXMuY29tcGlsZWRTdGF0aWMgPSBuZXcgQ29tcGlsZWRTdGF0aWNUZW1wbGF0ZShoYW5kbGUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjb21waWxlZFN0YXRpYztcbiAgICB9XG4gICAgY29tcGlsZUR5bmFtaWMoZW52KSB7XG4gICAgICAgIGxldCB7IGNvbXBpbGVkRHluYW1pYyB9ID0gdGhpcztcbiAgICAgICAgaWYgKCFjb21waWxlZER5bmFtaWMpIHtcbiAgICAgICAgICAgIGxldCBzdGF0aWNCbG9jayA9IHRoaXMuY29tcGlsZVN0YXRpYyhlbnYpO1xuICAgICAgICAgICAgY29tcGlsZWREeW5hbWljID0gbmV3IENvbXBpbGVkRHluYW1pY1RlbXBsYXRlKHN0YXRpY0Jsb2NrLmhhbmRsZSwgdGhpcy5zeW1ib2xUYWJsZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNvbXBpbGVkRHluYW1pYztcbiAgICB9XG59Il19