Split long lines in n_const_list

This commit is contained in:
rocky
2022-04-28 18:03:15 -04:00
parent f35231a6f5
commit 5e1ba2baa1

View File

@@ -226,6 +226,7 @@ class NonterminalActions:
self.indent_more(INDENT_PER_LEVEL) self.indent_more(INDENT_PER_LEVEL)
sep = "" sep = ""
line_len = len(self.indent)
if is_dict: if is_dict:
keys = flat_elems[-1].attr keys = flat_elems[-1].attr
assert isinstance(keys, tuple) assert isinstance(keys, tuple)
@@ -235,26 +236,44 @@ class NonterminalActions:
value = elem.pattr value = elem.pattr
if elem.linestart is not None: if elem.linestart is not None:
if elem.linestart != self.line_number: if elem.linestart != self.line_number:
sep += "\n" + self.indent + INDENT_PER_LEVEL[:-1] next_indent = self.indent + INDENT_PER_LEVEL[:-1]
line_len = len(next_indent)
sep += "\n" + next_indent
self.line_number = elem.linestart self.line_number = elem.linestart
else: else:
if sep != "": if sep != "":
sep += " " sep += " "
self.write(f"{sep} {repr(keys[i])}: {value}") elif line_len > 80:
sep = "," next_indent = self.indent + INDENT_PER_LEVEL[:-1]
line_len = len(next_indent)
sep += "\n" + next_indent
sep_key_value = f" {repr(keys[i])}: {value}"
line_len += len(sep_key_value)
self.write(sep_key_value)
sep = ", "
else: else:
for elem in flat_elems: for elem in flat_elems:
assert elem.kind == "ADD_VALUE" assert elem.kind == "ADD_VALUE"
value = elem.pattr value = elem.pattr
if elem.linestart is not None: if elem.linestart is not None:
if elem.linestart != self.line_number: if elem.linestart != self.line_number:
sep += "\n" + self.indent + INDENT_PER_LEVEL[:-1] next_indent = self.indent + INDENT_PER_LEVEL[:-1]
line_len += len(next_indent)
sep += "\n" + next_indent
self.line_number = elem.linestart self.line_number = elem.linestart
else: else:
if sep != "": if sep != "":
sep += " " sep += " "
line_len += len(sep)
elif line_len > 80:
next_indent = self.indent + INDENT_PER_LEVEL[:-1]
line_len = len(next_indent)
sep += "\n" + next_indent
line_len += len(sep) + len(str(value)) + 1
self.write(sep, value) self.write(sep, value)
sep = "," sep = ", "
self.write(endchar) self.write(endchar)
self.indent_less(INDENT_PER_LEVEL) self.indent_less(INDENT_PER_LEVEL)