# HG changeset patch # User Paul Boddie # Date 1283123070 -7200 # Node ID f64739faec2e0707c9b94dc6720e60401cbcbdfb # Parent 495c6ac589ed02a11e66cd5427da89f51e7d2629 Fixed report generation for non-generated classes and functions. Added report support for tuple parameters. Added spacing after various statements in reports. diff -r 495c6ac589ed -r f64739faec2e micropython/common.py --- a/micropython/common.py Sun Aug 29 02:40:57 2010 +0200 +++ b/micropython/common.py Mon Aug 30 01:04:30 2010 +0200 @@ -76,7 +76,7 @@ program unit within which it is found. """ - return node.unit.parent.has_key(node.unit.name) + return hasattr(node, "unit") and node.unit.parent.has_key(node.unit.name) # Errors. diff -r 495c6ac589ed -r f64739faec2e micropython/report.py --- a/micropython/report.py Sun Aug 29 02:40:57 2010 +0200 +++ b/micropython/report.py Mon Aug 30 01:04:30 2010 +0200 @@ -57,6 +57,7 @@ .class { margin-top: 1em; margin-bottom: 1em; } .function { margin-top: 1em; margin-bottom: 1em; } .body { padding-left: 2em; } + .for, .if, .tryexcept, .tryfinally, .while { margin-bottom: 1em; } .keyword { color: yellow; } .comment { color: blue; } .class-name { color: cyan; } @@ -213,12 +214,15 @@ def _doc(self, node): if node.doc is not None: - self.stream.write("
")
-            self.stream.write('"""')
-            output = textwrap.dedent(node.doc.replace('"""', '\\"\\"\\"'))
-            self.stream.write(self._text(output))
-            self.stream.write('"""')
-            self.stream.write("
\n") + self._docstring(node.doc) + + def _docstring(self, s): + self.stream.write("
")
+        self.stream.write('"""')
+        output = textwrap.dedent(s.replace('"""', '\\"\\"\\"'))
+        self.stream.write(self._text(output))
+        self.stream.write('"""')
+        self.stream.write("
\n") def _object_name_def(self, module, obj, classes=None): @@ -443,6 +447,7 @@ def visitClass(self, node): if not used_by_unit(node): + self._docstring('"Class %s not generated."' % node.name) return # Use inspected details where possible. @@ -547,6 +552,7 @@ def visitFunction(self, node): if not used_by_unit(node): + self._docstring('"Function %s not generated."' % node.name) return if hasattr(node, "unit"): @@ -1054,7 +1060,14 @@ for n, param in enumerate(fn.positional_names): if not first: self.stream.write(", ") - self._assname(param, node) + + # Handle tuple parameters. + + if isinstance(param, tuple): + self._tuple_parameter(param, node) + else: + self._assname(param, node) + n_default = n - first_with_default if n_default >= 0: self._default(fn.defaults[n_default]) @@ -1070,6 +1083,25 @@ self.stream.write(", **") self._name(fn.dstar_name) + def _tuple_parameter(self, parameters, node): + self.stream.write("(") + + first = 1 + for param in parameters: + if not first: + self.stream.write(", ") + + # Handle tuples. + + if isinstance(param, tuple): + self._tuple_parameter(param, node) + else: + self._assname(param, node) + + first = 0 + + self.stream.write(")") + def _default(self, default): self.stream.write("=") self.dispatch(default)