sys path modifications

This commit is contained in:
David Halter
2012-09-14 03:05:31 +02:00
parent 65064b1312
commit 9a2ec13230
8 changed files with 140 additions and 6 deletions

View File

@@ -900,6 +900,17 @@ class Call(Base):
for y in self.next.generate_call_path():
yield y
def get_code(self):
if self.type == Call.NAME:
s = self.name.get_code()
else:
s = repr(self.name)
if self.execution is not None:
s += '(%s)' % self.execution.get_code()
if self.next is not None:
s += self.next.get_code()
return s
def __repr__(self):
return "<%s: %s>" % \
(self.__class__.__name__, self.name)
@@ -991,6 +1002,34 @@ class Array(Call):
else:
return iter(self.values)
def get_code(self):
def to_str(el):
try:
return el.get_code()
except AttributeError:
return str(el)
map = {Array.NOARRAY: '%s',
Array.TUPLE: '(%s)',
Array.LIST: '[%s]',
Array.DICT: '{%s}',
Array.SET: '{%s}'
}
inner = []
for i, value in enumerate(self.values):
s = ''
try:
key = self.keys[i]
except IndexError:
pass
else:
for el in key[i]:
s += to_str(el)
for el in value:
s += to_str(el)
inner.append(s)
return map[self.type] % ', '.join(inner)
def __repr__(self):
if self.type == self.NOARRAY:
type = 'noarray'