# HG changeset patch # User Paul Boddie # Date 1271633402 -7200 # Node ID b6469cba3861a7bd9a28aacdbf393fb88788d5d4 # Parent 2524e035061e4f03595db4c1d9c499c56c05e75e Tidied the output further, adding CSS class overrides for certain types of name. diff -r 2524e035061e -r b6469cba3861 micropython/report.py --- a/micropython/report.py Mon Apr 19 01:14:59 2010 +0200 +++ b/micropython/report.py Mon Apr 19 01:30:02 2010 +0200 @@ -58,68 +58,6 @@ .doc { color: #FF00FF; margin-top: 1em; margin-bottom: 1em; } .invocation a { color: white; text-decoration: none; } - .popup { - display: none; z-index: 2; - position: absolute; top: 2ex; left: 0; - padding: 0.2em; background-color: #000000; color: white; - border: 2px solid #dddddd; - } - - .invocations { - padding: 0.5em; background-color: #770000; - clear: all; - } - - .types { - padding: 0.5em; background-color: #0000FF; - float: right; - } - - .raises { - padding: 0.5em; background-color: #7700FF; - float: right; - } - - .scopes { - padding: 0.5em; background-color: #007700; - float: left; - } - - .non-scopes { - padding: 0.5em; background-color: #FF0000; - float: left; - } - - .no-types { - background-color: #FF0000; - } - - .op, - .name, - .attr, - .conditional, - .operator, - .iterator, - .call, - .returns, - .failure - { - position: relative; - } - - .op:hover > .popup, - .name:hover > .popup, - .attr:hover > .popup, - .conditional:hover > .popup, - .operator:hover > .popup, - .iterator:hover > .popup, - .call:hover > .popup, - .returns:hover > .popup, - .failure:hover > .popup - { - display: block; - } - .summary-class { background-color: #004400; } @@ -175,24 +113,25 @@ self.stream.write('"""') self.stream.write("\n") - def _name(self, name): - self.stream.write("%s\n" % name) + def _name(self, name, classes=None): + self.stream.write("%s" % (classes or "name", name)) - def _name_link(self, module_name, full_name, name): - self.stream.write("%s" % ( - module_name, os.path.extsep, self._attr(full_name), self._text(name))) + def _name_link(self, module_name, full_name, name, classes=None): + self.stream.write("%s" % ( + classes or "name", module_name, os.path.extsep, + self._attr(full_name), self._text(name))) - def _summary_link(self, module_name, full_name, name): - self.stream.write("%s" % ( - module_name, os.path.extsep, self._attr(full_name), self._text(name))) + def _summary_link(self, module_name, full_name, name, classes=None): + self._name_link("%s-summary" % module_name, full_name, name, classes) - def _object_name_def(self, module, obj): + def _object_name_def(self, module, obj, classes=None): """ - Link to the summary for 'module' using 'obj'. + Link to the summary for 'module' using 'obj'. The optional 'classes' + can be used to customise the CSS classes employed. """ - self._summary_link(module.full_name(), obj.full_name(), obj.name) + self._summary_link(module.full_name(), obj.full_name(), obj.name, classes) # Summary classes. @@ -336,7 +275,7 @@ self.stream.write("
\n") self._keyword("class") - self._object_name_def(self.module, cls) + self._object_name_def(self.module, cls, "class-name") # Suppress the "object" class appearing alone. @@ -345,7 +284,7 @@ first = 1 for base in bases: if not first: - self.stream.write(",\n") + self.stream.write(", ") self._object_name_def(base.module, base) @@ -403,7 +342,7 @@ first = 1 for (name, alias), _name in map(None, node.names, node._names): if not first: - self.stream.write(",\n") + self.stream.write(", ") if alias: self.stream.write(name + " ") self._keyword("as") @@ -423,7 +362,7 @@ self.stream.write("
\n") self._keyword("def") - self._object_name_def(self.module, fn) + self._object_name_def(self.module, fn, "function-name") self.stream.write("(") self._parameters(fn) @@ -443,7 +382,7 @@ first = 1 for name in node.names: if not first: - self.stream.write(",\n") + self.stream.write(", ") self.stream.write(name) first = 0 self.stream.write("
\n") @@ -480,7 +419,7 @@ first = 1 for n in node.nodes: if not first: - self.stream.write(",\n") + self.stream.write(", ") self.dispatch(n) first = 0 @@ -488,38 +427,39 @@ first = 1 for k, v in node.items: if not first: - self.stream.write(",\n") + self.stream.write(", ") self.dispatch(k) - self.stream.write(":\n") + self.stream.write(" : ") self.dispatch(v) first = 0 def _parameters(self, fn): - first = 1 nparams = len(fn.positional_names) ndefaults = len(fn.defaults) first_with_default = nparams - ndefaults + first = 1 for n, param in enumerate(fn.positional_names): if not first: - self.stream.write(",\n") + self.stream.write(", ") self._name(param) n_default = n - first_with_default if n_default >= 0: self._default(fn.defaults[n_default]) + first = 0 if fn.has_star: if not first: - self.stream.write(", *\n") + self.stream.write(", *") self._name(fn.star_name) if fn.has_dstar: if not first: - self.stream.write(", **\n") + self.stream.write(", **") self._name(fn.dstar_name) def _default(self, default): - self.stream.write("=\n") + self.stream.write("=") self.dispatch(default) # Convenience functions.