marko/compiler/ast/ForStatement.js
Patrick Steele-Idem c386da875e Fixes #349 - Inline Marko template compilation support
Also changed how JavaScript code is generated
2016-08-19 10:50:28 -06:00

61 lines
1.3 KiB
JavaScript

'use strict';
var Node = require('./Node');
class ForStatement extends Node {
constructor(def) {
super('ForStatement');
this.init = def.init;
this.test = def.test;
this.update = def.update;
this.body = this.makeContainer(def.body);
}
generateCode(codegen) {
this.init = codegen.generateCode(this.init);
this.test = codegen.generateCode(this.test);
this.update = codegen.generateCode(this.update);
this.body = codegen.generateCode(this.body);
return this;
}
writeCode(writer) {
var init = this.init;
var test = this.test;
var update = this.update;
var body = this.body;
writer.write('for (');
if (init) {
writer.write(init);
}
writer.write('; ');
if (test) {
writer.write(test);
}
writer.write('; ');
if (update) {
writer.write(update);
}
writer.write(') ');
writer.writeBlock(body);
writer.write('\n');
}
walk(walker) {
this.init = walker.walk(this.init);
this.test = walker.walk(this.test);
this.update = walker.walk(this.update);
this.body = walker.walk(this.body);
}
}
module.exports = ForStatement;