'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 } }); } var test = this.test; var body = this.body; codegen.write('if ('); codegen.generateCode(test); codegen.write(') '); codegen.generateBlock(body); if (this.else) { codegen.write(' '); codegen.generateCode(this.else); } else { codegen.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;