1
0
forked from VimPlug/jedi

fix __repr__ functions

This commit is contained in:
David Halter
2013-02-08 02:22:02 +01:00
parent 80d4c6e884
commit 5737e3ad1d
+22 -17
View File
@@ -710,10 +710,17 @@ class Statement(Simple):
return list(result) return list(result)
def get_code(self, new_line=True): def get_code(self, new_line=True):
code = ''
for c in self.get_assignment_calls():
if isinstance(c, Call):
code += c.get_code()
else:
code += c
if new_line: if new_line:
return self.code + '\n' return code + '\n'
else: else:
return self.code return code
def get_set_vars(self): def get_set_vars(self):
""" Get the names for the statement. """ """ Get the names for the statement. """
@@ -760,6 +767,8 @@ class Statement(Simple):
else: else:
is_key = maybe_dict and break_tok == ':' is_key = maybe_dict and break_tok == ':'
arr.add_statement(stmt, is_key) arr.add_statement(stmt, is_key)
if break_tok in closing_brackets:
break
if not arr.values and maybe_dict: if not arr.values and maybe_dict:
# this is a really special case - empty brackets {} are # this is a really special case - empty brackets {} are
# always dictionaries and not sets. # always dictionaries and not sets.
@@ -775,7 +784,7 @@ class Statement(Simple):
def parse_array_el(token_iterator, start_pos, maybe_dict=False): def parse_array_el(token_iterator, start_pos, maybe_dict=False):
token_list = [] token_list = []
level = 0 level = 1
tok = None tok = None
for i, tok_temp in token_iterator: for i, tok_temp in token_iterator:
try: try:
@@ -791,7 +800,7 @@ class Statement(Simple):
elif tok in brackets.keys(): elif tok in brackets.keys():
level += 1 level += 1
if level == 0 and tok in closing_brackets + (',',): if level == 0 and tok in closing_brackets or level == 1 and tok == ',':
break break
token_list.append(tok_temp) token_list.append(tok_temp)
@@ -854,10 +863,14 @@ class Statement(Simple):
close_brackets = False close_brackets = False
elif tok in brackets.keys(): elif tok in brackets.keys():
arr = parse_array(token_iterator, brackets[tok], start_pos) arr = parse_array(token_iterator, brackets[tok], start_pos)
if result and (type(result[-1]) == Call or close_brackets): if result and (isinstance(result[-1], Call) or close_brackets):
print 'x', arr
result[-1].set_execution(arr) result[-1].set_execution(arr)
else: else:
print arr
arr.parent = self
result.append(arr) result.append(arr)
#print(tok, result)
close_brackets = True close_brackets = True
elif tok == '.': elif tok == '.':
close_brackets = False close_brackets = False
@@ -866,7 +879,7 @@ class Statement(Simple):
elif tok == ',': # implies a tuple elif tok == ',': # implies a tuple
close_brackets = False close_brackets = False
# rewrite `result`, because now the whole thing is a tuple # rewrite `result`, because now the whole thing is a tuple
add_el = parse_array_el(iter(result), start_pos) add_el, t = parse_array_el(enumerate(result), start_pos)
arr = parse_array(token_iterator, Array.TUPLE, start_pos, arr = parse_array(token_iterator, Array.TUPLE, start_pos,
add_el) add_el)
result = [arr] result = [arr]
@@ -1038,12 +1051,6 @@ class Array(Call):
return iter(self.values) return iter(self.values)
def get_code(self): def get_code(self):
def to_str(el):
try:
return el.get_code()
except AttributeError:
return str(el)
map = {Array.NOARRAY: '%s', map = {Array.NOARRAY: '%s',
Array.TUPLE: '(%s)', Array.TUPLE: '(%s)',
Array.LIST: '[%s]', Array.LIST: '[%s]',
@@ -1051,17 +1058,15 @@ class Array(Call):
Array.SET: '{%s}' Array.SET: '{%s}'
} }
inner = [] inner = []
for i, value in enumerate(self.values): for i, stmt in enumerate(self.values):
s = '' s = ''
try: try:
key = self.keys[i] key = self.keys[i]
except IndexError: except IndexError:
pass pass
else: else:
for el in key[i]: s += key.get_code(new_line=False) + ': '
s += to_str(el) s += stmt.get_code(new_line=False)
for el in value:
s += to_str(el)
inner.append(s) inner.append(s)
return map[self.type] % ', '.join(inner) return map[self.type] % ', '.join(inner)