marko/compiler/ast/Slot.js
2015-12-28 21:55:29 -07:00

36 lines
870 B
JavaScript

'use strict';
var Node = require('./Node');
class Slot extends Node {
constructor(def) {
super('Slot');
this.onDone = def.onDone;
this.codegenSlot = null;
}
generateCode(codegen) {
if (this.onDone) {
codegen.onDone((codegen) => {
this.onDone(this, codegen);
});
}
// At the time the code for this node is to be generated we instead
// create a slot. A slot is just a marker in the output code stream
// that we can later inject code into. The injection happens after
// the entire tree has been walked.
this.codegenSlot = codegen.beginSlot(this);
}
setContent(content) {
this.codegenSlot.setContent(content);
}
toJSON() {
return {
type: this.type
};
}
}
module.exports = Slot;