1.1 --- a/viewer.py Wed Feb 14 18:33:08 2007 +0100
1.2 +++ b/viewer.py Wed Feb 14 21:57:46 2007 +0100
1.3 @@ -632,14 +632,14 @@
1.4 def visitCompare(self, node):
1.5 self.stream.write("<span class='compare'>\n")
1.6 self.dispatch(node.expr)
1.7 - for (op_name, expr), _op in map(None, node.ops, node._ops):
1.8 + for op in node._ops:
1.9 self.stream.write("<span class='op'>\n")
1.10 - self.stream.write(op_name)
1.11 + self.stream.write(op.name)
1.12 self._popup_start()
1.13 - self._op(op_name, _op)
1.14 + self._op(op)
1.15 self._popup_end()
1.16 self.stream.write("</span>\n")
1.17 - self.dispatch(expr)
1.18 + self.dispatch(op.expr)
1.19 self.stream.write("</span>\n")
1.20
1.21 def visitConst(self, node):
1.22 @@ -905,12 +905,17 @@
1.23 def _popup_end(self):
1.24 self.stream.write("</span>\n")
1.25
1.26 - def _op(self, op_name, op):
1.27 - if op is not None:
1.28 - if isinstance(op, Not):
1.29 - self._invocations(op.expr)
1.30 - else:
1.31 - self._invocations(op)
1.32 + def _op(self, node):
1.33 + self.stream.write("<div class='invocations'>\n")
1.34 + if hasattr(node, "_left_call") and hasattr(node, "_right_call"):
1.35 + self._invocations_list(node._left_call)
1.36 + self._invocations_list(node._right_call)
1.37 + else:
1.38 + _node = node._node
1.39 + if isinstance(_node, Not):
1.40 + _node = _node.expr
1.41 + self._invocations_list(_node)
1.42 + self.stream.write("</div>\n")
1.43
1.44 def _invocations(self, node):
1.45 self.stream.write("<div class='invocations'>\n")