marko/compiler/ast/Slot.js
2015-12-16 21:35:52 -07:00

36 lines
886 B
JavaScript

'use strict';
var Node = require('./Node');
class Slot extends Node {
constructor(def) {
super('Slot');
this.onDone = def.onDone;
this.generatorSlot = null;
}
generateCode(generator) {
if (this.onDone) {
generator.onDone((generator) => {
this.onDone(this, generator);
});
}
// 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.generatorSlot = generator.beginSlot(this);
}
setContent(content) {
this.generatorSlot.setContent(content);
}
toJSON() {
return {
type: this.type
};
}
}
module.exports = Slot;