1.1 --- a/simplify.py Mon Oct 16 23:39:35 2006 +0200
1.2 +++ b/simplify.py Tue Oct 17 20:10:07 2006 +0200
1.3 @@ -1003,8 +1003,15 @@
1.4
1.5 def visitFunction(self, function):
1.6
1.7 - # Make a subprogram for the function and record it outside the main
1.8 - # tree.
1.9 + """
1.10 + Make a subprogram for the 'function' and record it outside the main
1.11 + tree. Produce something like the following:
1.12 +
1.13 + StoreName (name)
1.14 + (expr) -> Subprogram (params)
1.15 + (star)
1.16 + (dstar)
1.17 + """
1.18
1.19 subprogram = Subprogram(function, name=function.name, acquire_locals=0, returns_value=1, star=None, dstar=None)
1.20 self.current_subprograms.append(subprogram)
2.1 --- a/viewer.py Mon Oct 16 23:39:35 2006 +0200
2.2 +++ b/viewer.py Tue Oct 17 20:10:07 2006 +0200
2.3 @@ -238,12 +238,19 @@
2.4 for param, default in subprogram.params:
2.5 if not first:
2.6 self.stream.write(",\n")
2.7 - self._name_start(param)
2.8 - if hasattr(subprogram, "paramtypes"):
2.9 - self._popup_start()
2.10 - self._types_list(subprogram.paramtypes[param])
2.11 - self._popup_end()
2.12 - self._name_end()
2.13 + self._parameter(subprogram, param)
2.14 + first = 0
2.15 + if subprogram.star is not None:
2.16 + if not first:
2.17 + self.stream.write(", *\n")
2.18 + param, default = subprogram.star
2.19 + self._parameter(subprogram, param)
2.20 + first = 0
2.21 + if subprogram.dstar is not None:
2.22 + if not first:
2.23 + self.stream.write(", **\n")
2.24 + param, default = subprogram.dstar
2.25 + self._parameter(subprogram, param)
2.26 first = 0
2.27 self.stream.write(")")
2.28 self.stream.write(":\n")
2.29 @@ -271,6 +278,30 @@
2.30
2.31 # Expressions.
2.32
2.33 + def visitCallFunc(self, node):
2.34 + invocation = node._node
2.35 + self.stream.write("<span class='callfunc'>\n")
2.36 + self.dispatch(node.node)
2.37 + self.stream.write("(")
2.38 + first = 1
2.39 + for arg in node.args:
2.40 + if not first:
2.41 + self.stream.write(",\n")
2.42 + self.dispatch(arg)
2.43 + first = 0
2.44 + if node.star_args is not None:
2.45 + if not first:
2.46 + self.stream.write(", *\n")
2.47 + self.dispatch(node.star_args)
2.48 + first = 0
2.49 + if node.dstar_args is not None:
2.50 + if not first:
2.51 + self.stream.write(", **\n")
2.52 + self.dispatch(node.dstar_args)
2.53 + first = 0
2.54 + self.stream.write(")\n")
2.55 + self.stream.write("</span>\n")
2.56 +
2.57 def visitTuple(self, node):
2.58 self.stream.write("<span class='tuple'>\n")
2.59 self.stream.write("(")
2.60 @@ -361,6 +392,14 @@
2.61 self.dispatch(n)
2.62 first = 0
2.63
2.64 + def _parameter(self, subprogram, param):
2.65 + self._name_start(param)
2.66 + if hasattr(subprogram, "paramtypes"):
2.67 + self._popup_start()
2.68 + self._types_list(subprogram.paramtypes[param])
2.69 + self._popup_end()
2.70 + self._name_end()
2.71 +
2.72 def _name(self, name):
2.73 self.stream.write("<span class='name'>%s</span>\n" % name)
2.74