mirror of
https://github.com/marko-js/marko.git
synced 2025-12-08 19:26:05 +00:00
Allow an onDone listener to be associated with a slot
This commit is contained in:
parent
6465b81d2d
commit
86f7f406e4
@ -5,22 +5,25 @@ var Node = require('./Node');
|
|||||||
class Slot extends Node {
|
class Slot extends Node {
|
||||||
constructor(def) {
|
constructor(def) {
|
||||||
super('Slot');
|
super('Slot');
|
||||||
|
this.onDone = def.onDone;
|
||||||
this.generatorSlot = null;
|
this.generatorSlot = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
generateCode(generator) {
|
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
|
// 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
|
// 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
|
// that we can later inject code into. The injection happens after
|
||||||
// the entire tree has been walked.
|
// the entire tree has been walked.
|
||||||
this.generatorSlot = generator.createSlot();
|
this.generatorSlot = generator.beginSlot(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
setContent(content) {
|
setContent(content) {
|
||||||
this.generatorSlot.setContent(content, {
|
this.generatorSlot.setContent(content);
|
||||||
statement: this.statement
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
toJSON() {
|
toJSON() {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user