comparison mercurial/parser.py @ 25254:060bdfef2517

parser: extract closure of prettyformat() to a top-level function There was no capture until I added 'leafnodes' argument.
author Yuya Nishihara <yuya@tcha.org>
date Wed, 06 May 2015 10:17:41 +0900
parents 3f1a9b44b8c2
children c87b05925054
comparison
equal deleted inserted replaced
25253:3f1a9b44b8c2 25254:060bdfef2517
92 t = self.parse(message) 92 t = self.parse(message)
93 if self._methods: 93 if self._methods:
94 return self.eval(t) 94 return self.eval(t)
95 return t 95 return t
96 96
97 def _prettyformat(tree, leafnodes, level, lines):
98 if not isinstance(tree, tuple) or tree[0] in leafnodes:
99 lines.append((level, str(tree)))
100 else:
101 lines.append((level, '(%s' % tree[0]))
102 for s in tree[1:]:
103 _prettyformat(s, leafnodes, level + 1, lines)
104 lines[-1:] = [(lines[-1][0], lines[-1][1] + ')')]
105
97 def prettyformat(tree, leafnodes): 106 def prettyformat(tree, leafnodes):
98 def _prettyformat(tree, level, lines):
99 if not isinstance(tree, tuple) or tree[0] in leafnodes:
100 lines.append((level, str(tree)))
101 else:
102 lines.append((level, '(%s' % tree[0]))
103 for s in tree[1:]:
104 _prettyformat(s, level + 1, lines)
105 lines[-1:] = [(lines[-1][0], lines[-1][1] + ')')]
106
107 lines = [] 107 lines = []
108 _prettyformat(tree, 0, lines) 108 _prettyformat(tree, leafnodes, 0, lines)
109 output = '\n'.join((' ' * l + s) for l, s in lines) 109 output = '\n'.join((' ' * l + s) for l, s in lines)
110 return output 110 return output