1.1 --- a/micropython/report.py Sun Aug 29 02:40:57 2010 +0200
1.2 +++ b/micropython/report.py Mon Aug 30 01:04:30 2010 +0200
1.3 @@ -57,6 +57,7 @@
1.4 .class { margin-top: 1em; margin-bottom: 1em; }
1.5 .function { margin-top: 1em; margin-bottom: 1em; }
1.6 .body { padding-left: 2em; }
1.7 + .for, .if, .tryexcept, .tryfinally, .while { margin-bottom: 1em; }
1.8 .keyword { color: yellow; }
1.9 .comment { color: blue; }
1.10 .class-name { color: cyan; }
1.11 @@ -213,12 +214,15 @@
1.12
1.13 def _doc(self, node):
1.14 if node.doc is not None:
1.15 - self.stream.write("<pre class='doc'>")
1.16 - self.stream.write('"""')
1.17 - output = textwrap.dedent(node.doc.replace('"""', '\\"\\"\\"'))
1.18 - self.stream.write(self._text(output))
1.19 - self.stream.write('"""')
1.20 - self.stream.write("</pre>\n")
1.21 + self._docstring(node.doc)
1.22 +
1.23 + def _docstring(self, s):
1.24 + self.stream.write("<pre class='doc'>")
1.25 + self.stream.write('"""')
1.26 + output = textwrap.dedent(s.replace('"""', '\\"\\"\\"'))
1.27 + self.stream.write(self._text(output))
1.28 + self.stream.write('"""')
1.29 + self.stream.write("</pre>\n")
1.30
1.31 def _object_name_def(self, module, obj, classes=None):
1.32
1.33 @@ -443,6 +447,7 @@
1.34
1.35 def visitClass(self, node):
1.36 if not used_by_unit(node):
1.37 + self._docstring('"Class %s not generated."' % node.name)
1.38 return
1.39
1.40 # Use inspected details where possible.
1.41 @@ -547,6 +552,7 @@
1.42
1.43 def visitFunction(self, node):
1.44 if not used_by_unit(node):
1.45 + self._docstring('"Function %s not generated."' % node.name)
1.46 return
1.47
1.48 if hasattr(node, "unit"):
1.49 @@ -1054,7 +1060,14 @@
1.50 for n, param in enumerate(fn.positional_names):
1.51 if not first:
1.52 self.stream.write(", ")
1.53 - self._assname(param, node)
1.54 +
1.55 + # Handle tuple parameters.
1.56 +
1.57 + if isinstance(param, tuple):
1.58 + self._tuple_parameter(param, node)
1.59 + else:
1.60 + self._assname(param, node)
1.61 +
1.62 n_default = n - first_with_default
1.63 if n_default >= 0:
1.64 self._default(fn.defaults[n_default])
1.65 @@ -1070,6 +1083,25 @@
1.66 self.stream.write(", **")
1.67 self._name(fn.dstar_name)
1.68
1.69 + def _tuple_parameter(self, parameters, node):
1.70 + self.stream.write("(")
1.71 +
1.72 + first = 1
1.73 + for param in parameters:
1.74 + if not first:
1.75 + self.stream.write(", ")
1.76 +
1.77 + # Handle tuples.
1.78 +
1.79 + if isinstance(param, tuple):
1.80 + self._tuple_parameter(param, node)
1.81 + else:
1.82 + self._assname(param, node)
1.83 +
1.84 + first = 0
1.85 +
1.86 + self.stream.write(")")
1.87 +
1.88 def _default(self, default):
1.89 self.stream.write("=")
1.90 self.dispatch(default)