function branchConditionalHandler(node, options) {
if (node.type !== 'ConditionalNode') {
return node.toTex(options)
}
const conditions = [node]
let curr = node
while (curr.falseExpr.type === 'ConditionalNode') {
conditions.push(curr.falseExpr)
curr = curr.falseExpr
}
const deparen = node => node.type === 'ParenthesisNode' ? node.content : node
const deparenCondition = c => ({...c, condition: deparen(c.condition), trueExpr: deparen(c.trueExpr), falseExpr: deparen(c.falseExpr)})
conditions.push(conditions[conditions.length - 1])
return conditions.map(deparenCondition).map((c, i) =>
i === 0 ? `\\mathbf{if} \\> ${c.condition.toTex()}: \\\\ \\quad ${c.trueExpr.toTex()}`
: i !== conditions.length - 1 ? `\\mathbf{elif} \\> ${c.condition.toTex()}: \\\\ \\quad ${c.trueExpr.toTex()}`
: `\\mathbf{else :} \\\\ \\quad ${c.falseExpr.toTex()}`).join('\\\\')
}