'use strict'; var Node = require('./Node'); function removeWhitespaceNodes(whitespaceNodes) { for (var i=0; i { if (curNode.type === 'Else') { curNode.detach(); if (whitespaceNodes.length) { removeWhitespaceNodes(whitespaceNodes); } previous.else = curNode; curNode.matched = true; return false; // Stop searching } else if (curNode.type === 'ElseIf') { curNode.detach(); if (whitespaceNodes.length) { removeWhitespaceNodes(whitespaceNodes); } previous.else = curNode; previous = curNode; curNode.matched = true; return true; // Keep searching since they may be more ElseIf/Else nodes... } else if (curNode.type === 'Text') { if (curNode.isWhitespace()) { whitespaceNodes.push(curNode); return true; // Just whitespace... keep searching } else { return false; // Stop searching } } else { return false; // Stop searching } }); } this.test = codegen.generateCode(this.test); this.body = codegen.generateCode(this.body); this.else = codegen.generateCode(this.else); return this; } writeCode(writer) { var test = this.test; var body = this.body; writer.write('if ('); writer.write(test); writer.write(') '); writer.writeBlock(body); if (this.else) { writer.write(' else '); writer.write(this.else); } else { writer.write('\n'); } } appendChild(newChild) { this.body.appendChild(newChild); } walk(walker) { this.test = walker.walk(this.test); this.body = walker.walk(this.body); this.else = walker.walk(this.else); } } module.exports = If;