1.1 --- a/micropython/report.py Mon Apr 19 01:14:59 2010 +0200
1.2 +++ b/micropython/report.py Mon Apr 19 01:30:02 2010 +0200
1.3 @@ -58,68 +58,6 @@
1.4 .doc { color: #FF00FF; margin-top: 1em; margin-bottom: 1em; }
1.5 .invocation a { color: white; text-decoration: none; }
1.6
1.7 - .popup {
1.8 - display: none; z-index: 2;
1.9 - position: absolute; top: 2ex; left: 0;
1.10 - padding: 0.2em; background-color: #000000; color: white;
1.11 - border: 2px solid #dddddd;
1.12 - }
1.13 -
1.14 - .invocations {
1.15 - padding: 0.5em; background-color: #770000;
1.16 - clear: all;
1.17 - }
1.18 -
1.19 - .types {
1.20 - padding: 0.5em; background-color: #0000FF;
1.21 - float: right;
1.22 - }
1.23 -
1.24 - .raises {
1.25 - padding: 0.5em; background-color: #7700FF;
1.26 - float: right;
1.27 - }
1.28 -
1.29 - .scopes {
1.30 - padding: 0.5em; background-color: #007700;
1.31 - float: left;
1.32 - }
1.33 -
1.34 - .non-scopes {
1.35 - padding: 0.5em; background-color: #FF0000;
1.36 - float: left;
1.37 - }
1.38 -
1.39 - .no-types {
1.40 - background-color: #FF0000;
1.41 - }
1.42 -
1.43 - .op,
1.44 - .name,
1.45 - .attr,
1.46 - .conditional,
1.47 - .operator,
1.48 - .iterator,
1.49 - .call,
1.50 - .returns,
1.51 - .failure
1.52 - {
1.53 - position: relative;
1.54 - }
1.55 -
1.56 - .op:hover > .popup,
1.57 - .name:hover > .popup,
1.58 - .attr:hover > .popup,
1.59 - .conditional:hover > .popup,
1.60 - .operator:hover > .popup,
1.61 - .iterator:hover > .popup,
1.62 - .call:hover > .popup,
1.63 - .returns:hover > .popup,
1.64 - .failure:hover > .popup
1.65 - {
1.66 - display: block;
1.67 - }
1.68 -
1.69 .summary-class {
1.70 background-color: #004400;
1.71 }
1.72 @@ -175,24 +113,25 @@
1.73 self.stream.write('"""')
1.74 self.stream.write("</pre>\n")
1.75
1.76 - def _name(self, name):
1.77 - self.stream.write("<span class='name'>%s</span>\n" % name)
1.78 + def _name(self, name, classes=None):
1.79 + self.stream.write("<span class='%s'>%s</span>" % (classes or "name", name))
1.80
1.81 - def _name_link(self, module_name, full_name, name):
1.82 - self.stream.write("<a class='name' href='%s%sxhtml#%s'>%s</a>" % (
1.83 - module_name, os.path.extsep, self._attr(full_name), self._text(name)))
1.84 + def _name_link(self, module_name, full_name, name, classes=None):
1.85 + self.stream.write("<a class='%s' href='%s%sxhtml#%s'>%s</a>" % (
1.86 + classes or "name", module_name, os.path.extsep,
1.87 + self._attr(full_name), self._text(name)))
1.88
1.89 - def _summary_link(self, module_name, full_name, name):
1.90 - self.stream.write("<a class='name' href='%s-summary%sxhtml#%s'>%s</a>" % (
1.91 - module_name, os.path.extsep, self._attr(full_name), self._text(name)))
1.92 + def _summary_link(self, module_name, full_name, name, classes=None):
1.93 + self._name_link("%s-summary" % module_name, full_name, name, classes)
1.94
1.95 - def _object_name_def(self, module, obj):
1.96 + def _object_name_def(self, module, obj, classes=None):
1.97
1.98 """
1.99 - Link to the summary for 'module' using 'obj'.
1.100 + Link to the summary for 'module' using 'obj'. The optional 'classes'
1.101 + can be used to customise the CSS classes employed.
1.102 """
1.103
1.104 - self._summary_link(module.full_name(), obj.full_name(), obj.name)
1.105 + self._summary_link(module.full_name(), obj.full_name(), obj.name, classes)
1.106
1.107 # Summary classes.
1.108
1.109 @@ -336,7 +275,7 @@
1.110
1.111 self.stream.write("<div>\n")
1.112 self._keyword("class")
1.113 - self._object_name_def(self.module, cls)
1.114 + self._object_name_def(self.module, cls, "class-name")
1.115
1.116 # Suppress the "object" class appearing alone.
1.117
1.118 @@ -345,7 +284,7 @@
1.119 first = 1
1.120 for base in bases:
1.121 if not first:
1.122 - self.stream.write(",\n")
1.123 + self.stream.write(", ")
1.124
1.125 self._object_name_def(base.module, base)
1.126
1.127 @@ -403,7 +342,7 @@
1.128 first = 1
1.129 for (name, alias), _name in map(None, node.names, node._names):
1.130 if not first:
1.131 - self.stream.write(",\n")
1.132 + self.stream.write(", ")
1.133 if alias:
1.134 self.stream.write(name + " ")
1.135 self._keyword("as")
1.136 @@ -423,7 +362,7 @@
1.137
1.138 self.stream.write("<div>\n")
1.139 self._keyword("def")
1.140 - self._object_name_def(self.module, fn)
1.141 + self._object_name_def(self.module, fn, "function-name")
1.142
1.143 self.stream.write("(")
1.144 self._parameters(fn)
1.145 @@ -443,7 +382,7 @@
1.146 first = 1
1.147 for name in node.names:
1.148 if not first:
1.149 - self.stream.write(",\n")
1.150 + self.stream.write(", ")
1.151 self.stream.write(name)
1.152 first = 0
1.153 self.stream.write("</div>\n")
1.154 @@ -480,7 +419,7 @@
1.155 first = 1
1.156 for n in node.nodes:
1.157 if not first:
1.158 - self.stream.write(",\n")
1.159 + self.stream.write(", ")
1.160 self.dispatch(n)
1.161 first = 0
1.162
1.163 @@ -488,38 +427,39 @@
1.164 first = 1
1.165 for k, v in node.items:
1.166 if not first:
1.167 - self.stream.write(",\n")
1.168 + self.stream.write(", ")
1.169 self.dispatch(k)
1.170 - self.stream.write(":\n")
1.171 + self.stream.write(" : ")
1.172 self.dispatch(v)
1.173 first = 0
1.174
1.175 def _parameters(self, fn):
1.176 - first = 1
1.177 nparams = len(fn.positional_names)
1.178 ndefaults = len(fn.defaults)
1.179 first_with_default = nparams - ndefaults
1.180
1.181 + first = 1
1.182 for n, param in enumerate(fn.positional_names):
1.183 if not first:
1.184 - self.stream.write(",\n")
1.185 + self.stream.write(", ")
1.186 self._name(param)
1.187 n_default = n - first_with_default
1.188 if n_default >= 0:
1.189 self._default(fn.defaults[n_default])
1.190 + first = 0
1.191
1.192 if fn.has_star:
1.193 if not first:
1.194 - self.stream.write(", *\n")
1.195 + self.stream.write(", *")
1.196 self._name(fn.star_name)
1.197
1.198 if fn.has_dstar:
1.199 if not first:
1.200 - self.stream.write(", **\n")
1.201 + self.stream.write(", **")
1.202 self._name(fn.dstar_name)
1.203
1.204 def _default(self, default):
1.205 - self.stream.write("=\n")
1.206 + self.stream.write("=")
1.207 self.dispatch(default)
1.208
1.209 # Convenience functions.