ember-legacy-class-transform
Version:
The default blueprint for ember-cli addons.
48 lines (39 loc) • 5.76 kB
JavaScript
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
import { CompiledDynamicTemplate, CompiledStaticTemplate } from '../compiled/blocks';
import { debugSlice } from '../opcodes';
import { compileStatements } from './functions';
var CompilableTemplate = function () {
function CompilableTemplate(statements, symbolTable) {
_classCallCheck(this, CompilableTemplate);
this.statements = statements;
this.symbolTable = symbolTable;
this.compiledStatic = null;
this.compiledDynamic = null;
}
CompilableTemplate.prototype.compileStatic = function compileStatic(env) {
var compiledStatic = this.compiledStatic;
if (!compiledStatic) {
var builder = compileStatements(this.statements, this.symbolTable.meta, env);
builder.finalize();
var handle = builder.start;
if (false) {
var start = env.program.heap.size() - env.program.heap.sizeof(handle);
var end = start + env.program.heap.sizeof(handle);
debugSlice(env, start, end);
}
compiledStatic = this.compiledStatic = new CompiledStaticTemplate(handle);
}
return compiledStatic;
};
CompilableTemplate.prototype.compileDynamic = function compileDynamic(env) {
var compiledDynamic = this.compiledDynamic;
if (!compiledDynamic) {
var staticBlock = this.compileStatic(env);
compiledDynamic = new CompiledDynamicTemplate(staticBlock.handle, this.symbolTable);
}
return compiledDynamic;
};
return CompilableTemplate;
}();
export default CompilableTemplate;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9zeW50YXgvY29tcGlsYWJsZS10ZW1wbGF0ZS5qcyJdLCJuYW1lcyI6WyJDb21waWxlZER5bmFtaWNUZW1wbGF0ZSIsIkNvbXBpbGVkU3RhdGljVGVtcGxhdGUiLCJkZWJ1Z1NsaWNlIiwiY29tcGlsZVN0YXRlbWVudHMiLCJDb21waWxhYmxlVGVtcGxhdGUiLCJzdGF0ZW1lbnRzIiwic3ltYm9sVGFibGUiLCJjb21waWxlZFN0YXRpYyIsImNvbXBpbGVkRHluYW1pYyIsImNvbXBpbGVTdGF0aWMiLCJlbnYiLCJidWlsZGVyIiwibWV0YSIsImZpbmFsaXplIiwiaGFuZGxlIiwic3RhcnQiLCJwcm9ncmFtIiwiaGVhcCIsInNpemUiLCJzaXplb2YiLCJlbmQiLCJjb21waWxlRHluYW1pYyIsInN0YXRpY0Jsb2NrIl0sIm1hcHBpbmdzIjoiOztBQUFBLFNBQVNBLHVCQUFULEVBQWtDQyxzQkFBbEMsUUFBZ0Usb0JBQWhFO0FBQ0EsU0FBU0MsVUFBVCxRQUEyQixZQUEzQjtBQUNBLFNBQVNDLGlCQUFULFFBQWtDLGFBQWxDOztJQUVxQkMsa0I7QUFDakIsZ0NBQVlDLFVBQVosRUFBd0JDLFdBQXhCLEVBQXFDO0FBQUE7O0FBQ2pDLGFBQUtELFVBQUwsR0FBa0JBLFVBQWxCO0FBQ0EsYUFBS0MsV0FBTCxHQUFtQkEsV0FBbkI7QUFDQSxhQUFLQyxjQUFMLEdBQXNCLElBQXRCO0FBQ0EsYUFBS0MsZUFBTCxHQUF1QixJQUF2QjtBQUNIOztpQ0FDREMsYSwwQkFBY0MsRyxFQUFLO0FBQUEsWUFDVEgsY0FEUyxHQUNVLElBRFYsQ0FDVEEsY0FEUzs7QUFFZixZQUFJLENBQUNBLGNBQUwsRUFBcUI7QUFDakIsZ0JBQUlJLFVBQVVSLGtCQUFrQixLQUFLRSxVQUF2QixFQUFtQyxLQUFLQyxXQUFMLENBQWlCTSxJQUFwRCxFQUEwREYsR0FBMUQsQ0FBZDtBQUNBQyxvQkFBUUUsUUFBUjtBQUNBLGdCQUFJQyxTQUFTSCxRQUFRSSxLQUFyQjtBQUNBLGdCQUFJLEtBQUosRUFBVztBQUNQLG9CQUFJQSxRQUFRTCxJQUFJTSxPQUFKLENBQVlDLElBQVosQ0FBaUJDLElBQWpCLEtBQTBCUixJQUFJTSxPQUFKLENBQVlDLElBQVosQ0FBaUJFLE1BQWpCLENBQXdCTCxNQUF4QixDQUF0QztBQUNBLG9CQUFJTSxNQUFNTCxRQUFRTCxJQUFJTSxPQUFKLENBQVlDLElBQVosQ0FBaUJFLE1BQWpCLENBQXdCTCxNQUF4QixDQUFsQjtBQUNBWiwyQkFBV1EsR0FBWCxFQUFnQkssS0FBaEIsRUFBdUJLLEdBQXZCO0FBQ0g7QUFDRGIsNkJBQWlCLEtBQUtBLGNBQUwsR0FBc0IsSUFBSU4sc0JBQUosQ0FBMkJhLE1BQTNCLENBQXZDO0FBQ0g7QUFDRCxlQUFPUCxjQUFQO0FBQ0gsSzs7aUNBQ0RjLGMsMkJBQWVYLEcsRUFBSztBQUFBLFlBQ1ZGLGVBRFUsR0FDVSxJQURWLENBQ1ZBLGVBRFU7O0FBRWhCLFlBQUksQ0FBQ0EsZUFBTCxFQUFzQjtBQUNsQixnQkFBSWMsY0FBYyxLQUFLYixhQUFMLENBQW1CQyxHQUFuQixDQUFsQjtBQUNBRiw4QkFBa0IsSUFBSVIsdUJBQUosQ0FBNEJzQixZQUFZUixNQUF4QyxFQUFnRCxLQUFLUixXQUFyRCxDQUFsQjtBQUNIO0FBQ0QsZUFBT0UsZUFBUDtBQUNILEs7Ozs7O2VBN0JnQkosa0IiLCJmaWxlIjoibGliL3N5bnRheC9jb21waWxhYmxlLXRlbXBsYXRlLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcGlsZWREeW5hbWljVGVtcGxhdGUsIENvbXBpbGVkU3RhdGljVGVtcGxhdGUgfSBmcm9tICcuLi9jb21waWxlZC9ibG9ja3MnO1xuaW1wb3J0IHsgZGVidWdTbGljZSB9IGZyb20gJy4uL29wY29kZXMnO1xuaW1wb3J0IHsgY29tcGlsZVN0YXRlbWVudHMgfSBmcm9tICcuL2Z1bmN0aW9ucyc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENvbXBpbGFibGVUZW1wbGF0ZSB7XG4gICAgY29uc3RydWN0b3Ioc3RhdGVtZW50cywgc3ltYm9sVGFibGUpIHtcbiAgICAgICAgdGhpcy5zdGF0ZW1lbnRzID0gc3RhdGVtZW50cztcbiAgICAgICAgdGhpcy5zeW1ib2xUYWJsZSA9IHN5bWJvbFRhYmxlO1xuICAgICAgICB0aGlzLmNvbXBpbGVkU3RhdGljID0gbnVsbDtcbiAgICAgICAgdGhpcy5jb21waWxlZER5bmFtaWMgPSBudWxsO1xuICAgIH1cbiAgICBjb21waWxlU3RhdGljKGVudikge1xuICAgICAgICBsZXQgeyBjb21waWxlZFN0YXRpYyB9ID0gdGhpcztcbiAgICAgICAgaWYgKCFjb21waWxlZFN0YXRpYykge1xuICAgICAgICAgICAgbGV0IGJ1aWxkZXIgPSBjb21waWxlU3RhdGVtZW50cyh0aGlzLnN0YXRlbWVudHMsIHRoaXMuc3ltYm9sVGFibGUubWV0YSwgZW52KTtcbiAgICAgICAgICAgIGJ1aWxkZXIuZmluYWxpemUoKTtcbiAgICAgICAgICAgIGxldCBoYW5kbGUgPSBidWlsZGVyLnN0YXJ0O1xuICAgICAgICAgICAgaWYgKGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgbGV0IHN0YXJ0ID0gZW52LnByb2dyYW0uaGVhcC5zaXplKCkgLSBlbnYucHJvZ3JhbS5oZWFwLnNpemVvZihoYW5kbGUpO1xuICAgICAgICAgICAgICAgIGxldCBlbmQgPSBzdGFydCArIGVudi5wcm9ncmFtLmhlYXAuc2l6ZW9mKGhhbmRsZSk7XG4gICAgICAgICAgICAgICAgZGVidWdTbGljZShlbnYsIHN0YXJ0LCBlbmQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29tcGlsZWRTdGF0aWMgPSB0aGlzLmNvbXBpbGVkU3RhdGljID0gbmV3IENvbXBpbGVkU3RhdGljVGVtcGxhdGUoaGFuZGxlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY29tcGlsZWRTdGF0aWM7XG4gICAgfVxuICAgIGNvbXBpbGVEeW5hbWljKGVudikge1xuICAgICAgICBsZXQgeyBjb21waWxlZER5bmFtaWMgfSA9IHRoaXM7XG4gICAgICAgIGlmICghY29tcGlsZWREeW5hbWljKSB7XG4gICAgICAgICAgICBsZXQgc3RhdGljQmxvY2sgPSB0aGlzLmNvbXBpbGVTdGF0aWMoZW52KTtcbiAgICAgICAgICAgIGNvbXBpbGVkRHluYW1pYyA9IG5ldyBDb21waWxlZER5bmFtaWNUZW1wbGF0ZShzdGF0aWNCbG9jay5oYW5kbGUsIHRoaXMuc3ltYm9sVGFibGUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjb21waWxlZER5bmFtaWM7XG4gICAgfVxufSJdfQ==