1.1 --- a/micropython/report.py Mon Aug 30 01:04:30 2010 +0200
1.2 +++ b/micropython/report.py Tue Aug 31 00:59:16 2010 +0200
1.3 @@ -87,14 +87,16 @@
1.4 }
1.5
1.6 .accessor,
1.7 - .name {
1.8 + .name,
1.9 + .operation {
1.10 position: relative;
1.11 background-color: #300;
1.12 color: white;
1.13 }
1.14
1.15 .accessor:hover,
1.16 - .name:hover {
1.17 + .name:hover,
1.18 + .operation:hover {
1.19 background-color: #500;
1.20 padding-top: 0.5ex;
1.21 padding-bottom: 0.5ex;
1.22 @@ -102,17 +104,23 @@
1.23 }
1.24
1.25 .accessor:hover .types-popup,
1.26 - .name:hover .popup {
1.27 + .name:hover .popup,
1.28 + .operation:hover .popup {
1.29 display: block;
1.30 }
1.31
1.32 .attrnames,
1.33 - .typenames,
1.34 - .scope {
1.35 + .opnames,
1.36 + .scope,
1.37 + .typenames {
1.38 padding: 0.5em;
1.39 background-color: #700;
1.40 }
1.41
1.42 + .opnames a {
1.43 + color: white;
1.44 + }
1.45 +
1.46 .summary-class {
1.47 vertical-align: top;
1.48 }
1.49 @@ -209,9 +217,6 @@
1.50 def _keyword(self, kw, leading=0, trailing=1):
1.51 self._reserved(kw, "keyword", leading, trailing)
1.52
1.53 - def _op(self, symbol, leading=0, trailing=1):
1.54 - self._reserved(symbol, "operator", leading, trailing)
1.55 -
1.56 def _doc(self, node):
1.57 if node.doc is not None:
1.58 self._docstring(node.doc)
1.59 @@ -268,6 +273,21 @@
1.60 self._span(name)
1.61 self._span_end()
1.62
1.63 + def _op(self, symbol, name=None, leading=0, trailing=1):
1.64 + if leading:
1.65 + self.stream.write(" ")
1.66 + self._span_start("operation")
1.67 + self._span(symbol, "operator")
1.68 + if name is not None:
1.69 + self._popup_start()
1.70 + self.stream.write("<div class='opnames'>")
1.71 + self._name_link("operator", "operator.%s" % name, name)
1.72 + self.stream.write("</div>\n")
1.73 + self._popup_end()
1.74 + self._span_end()
1.75 + if trailing:
1.76 + self.stream.write(" ")
1.77 +
1.78 def _names_list(self, names, label, classes):
1.79 if not names:
1.80 return
1.81 @@ -436,7 +456,7 @@
1.82 def visitAugAssign(self, node):
1.83 self.stream.write("<div class='augassign nowrap'>\n")
1.84 self.dispatch(node.node)
1.85 - self.stream.write(" %s " % node.op)
1.86 + self._op(node.op, operator_functions[node.op], 1)
1.87 self.dispatch(node.expr)
1.88 self.stream.write("</div>\n")
1.89
1.90 @@ -762,7 +782,7 @@
1.91 first = 1
1.92 for node in node.nodes:
1.93 if not first:
1.94 - self._op(symbol, 1)
1.95 + self._op(symbol, name, 1)
1.96 self.dispatch(node)
1.97 first = 0
1.98 self._span_end()
1.99 @@ -770,13 +790,13 @@
1.100 def _visitBinary(self, node, name, symbol):
1.101 self._span_start(name)
1.102 self.dispatch(node.left)
1.103 - self._op(symbol, 1)
1.104 + self._op(symbol, name, 1)
1.105 self.dispatch(node.right)
1.106 self._span_end()
1.107
1.108 def _visitUnary(self, node, name, symbol):
1.109 self._span_start(name)
1.110 - self._op(symbol)
1.111 + self._op(symbol, name)
1.112 self.dispatch(node.expr)
1.113 self._span_end()
1.114
1.115 @@ -856,7 +876,7 @@
1.116 self._span_start("compare")
1.117 self.dispatch(node.expr)
1.118 for op_name, expr in node.ops:
1.119 - self._op(op_name, 1)
1.120 + self._op(op_name, operator_functions.get(op_name), 1)
1.121 self.dispatch(expr)
1.122 self._span_end()
1.123
1.124 @@ -983,7 +1003,7 @@
1.125 self._span_end()
1.126
1.127 def visitPower(self, node):
1.128 - self._visitBinary(node, "power", "**")
1.129 + self._visitBinary(node, "pow", "**")
1.130
1.131 def visitSlice(self, node):
1.132 self._span_start("slice")