mirror of
https://gitlab.gnome.org/jwestman/blueprint-compiler.git
synced 2025-05-04 15:59:08 -04:00
Merge branch 'formatter-lists-vs-childtypes' into 'formatter'
Formatter: Distinguish child types and lists See merge request gregorni/blueprint-compiler!2
This commit is contained in:
commit
aa4f23e08b
1 changed files with 29 additions and 10 deletions
|
@ -71,10 +71,10 @@ class Format:
|
||||||
|
|
||||||
for item in tokens:
|
for item in tokens:
|
||||||
if item.type != tokenizer.TokenType.WHITESPACE:
|
if item.type != tokenizer.TokenType.WHITESPACE:
|
||||||
item_as_string = str(item)
|
str_item = str(item)
|
||||||
|
|
||||||
if (
|
if (
|
||||||
item_as_string in WHITESPACE_BEFORE
|
str_item in WHITESPACE_BEFORE
|
||||||
and str(last_not_whitespace) not in NO_WHITESPACE_AFTER
|
and str(last_not_whitespace) not in NO_WHITESPACE_AFTER
|
||||||
) or (
|
) or (
|
||||||
(
|
(
|
||||||
|
@ -82,33 +82,52 @@ class Format:
|
||||||
or last_not_whitespace.type == tokenizer.TokenType.IDENT
|
or last_not_whitespace.type == tokenizer.TokenType.IDENT
|
||||||
)
|
)
|
||||||
and str(last_not_whitespace) not in NO_WHITESPACE_AFTER
|
and str(last_not_whitespace) not in NO_WHITESPACE_AFTER
|
||||||
and item_as_string not in NO_WHITESPACE_BEFORE
|
and str_item not in NO_WHITESPACE_BEFORE
|
||||||
):
|
):
|
||||||
current_line = current_line + " "
|
current_line += " "
|
||||||
|
|
||||||
current_line += item_as_string
|
current_line += str_item
|
||||||
|
|
||||||
if (
|
if (
|
||||||
item_as_string in NEWLINE_AFTER
|
str_item in NEWLINE_AFTER
|
||||||
or item.type == tokenizer.TokenType.COMMENT
|
or item.type == tokenizer.TokenType.COMMENT
|
||||||
):
|
):
|
||||||
if item_as_string in OPENING_TOKENS:
|
if str_item in OPENING_TOKENS:
|
||||||
|
if str_item == "[":
|
||||||
|
is_child_type = (current_line + "[").startswith("[")
|
||||||
|
if is_child_type:
|
||||||
|
NO_WHITESPACE_BEFORE.append("]")
|
||||||
|
last_not_whitespace = item
|
||||||
|
continue
|
||||||
|
else:
|
||||||
|
NEWLINE_AFTER.append(",")
|
||||||
|
WHITESPACE_AFTER.remove(",")
|
||||||
|
|
||||||
indent_levels += 1
|
indent_levels += 1
|
||||||
commit_current_line(
|
commit_current_line(
|
||||||
0 if prev_line_type == LineType.CHILD_TYPE else 1,
|
0 if prev_line_type == LineType.CHILD_TYPE else 1,
|
||||||
LineType.BLOCK_OPEN,
|
LineType.BLOCK_OPEN,
|
||||||
)
|
)
|
||||||
|
|
||||||
elif item_as_string in CLOSING_TOKENS:
|
elif str_item in CLOSING_TOKENS:
|
||||||
indent_levels -= 1
|
if str_item == "]":
|
||||||
|
if is_child_type:
|
||||||
|
NO_WHITESPACE_BEFORE.remove("]")
|
||||||
|
is_child_type = False
|
||||||
|
indent_levels += 1
|
||||||
|
else:
|
||||||
|
WHITESPACE_AFTER.append(",")
|
||||||
|
NEWLINE_AFTER.remove(",")
|
||||||
|
|
||||||
|
indent_levels -= 1
|
||||||
commit_current_line(
|
commit_current_line(
|
||||||
0,
|
0,
|
||||||
LineType.CHILD_TYPE
|
LineType.CHILD_TYPE
|
||||||
if current_line.strip().startswith("[")
|
if current_line.startswith("[")
|
||||||
else LineType.BLOCK_CLOSE,
|
else LineType.BLOCK_CLOSE,
|
||||||
True,
|
True,
|
||||||
)
|
)
|
||||||
|
|
||||||
else:
|
else:
|
||||||
commit_current_line()
|
commit_current_line()
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue