From d53e0276104bff8b5e6c74577c43a52cf7ca8989 Mon Sep 17 00:00:00 2001 From: gregorni Date: Tue, 22 Aug 2023 16:32:09 +0200 Subject: [PATCH] formatter.py: bundle adding to end string into function --- blueprintcompiler/formatter.py | 66 ++++++++++++++++++++++------------ 1 file changed, 43 insertions(+), 23 deletions(-) diff --git a/blueprintcompiler/formatter.py b/blueprintcompiler/formatter.py index f1209af..11bc3b2 100644 --- a/blueprintcompiler/formatter.py +++ b/blueprintcompiler/formatter.py @@ -49,6 +49,17 @@ class Format: current_line = "" prev_line_type = None + def commit_current_line(newlines, line_type, new_indent_levels): + nonlocal tokenized_str, current_line, prev_line_type + current_line += "\n" + (new_indent_levels * " ") + tokenized_str += ( + current_line + if newlines == 0 + else ("\n" * newlines) + (" " * indent_levels) + current_line + ) + current_line = "" + prev_line_type = line_type + for item in tokens: if item.type != tokenizer.TokenType.WHITESPACE: item_as_string = str(item) @@ -64,7 +75,7 @@ class Format: and str(last_not_whitespace) not in NO_WHITESPACE_AFTER and item_as_string not in NO_WHITESPACE_BEFORE ): - current_line = current_line + " " + current_line += " " current_line += item_as_string @@ -73,43 +84,52 @@ class Format: or item.type == tokenizer.TokenType.COMMENT ): if item_as_string in OPENING_TOKENS: - # tokenized_str += ( - # ("\n" * num_newlines) + (indent_levels * " ") + current_line + # num_newlines = 1 if prev_line_type == LineType.CHILD_TYPE else 2 + # prev_line_type = LineType.BLOCK_OPEN + # tokenized_str = ( + # tokenized_str.strip() + # + (num_newlines * "\n") + # + (indent_levels * " ") # ) + # current_line += "\n" + (indent_levels * " ") + # tokenized_str += current_line # current_line = "" - num_newlines = 1 if prev_line_type == LineType.CHILD_TYPE else 2 - prev_line_type = LineType.BLOCK_OPEN - tokenized_str = ( - tokenized_str.strip() - + (num_newlines * "\n") - + (indent_levels * " ") + commit_current_line( + 1 if prev_line_type == LineType.CHILD_TYPE else 2, + LineType.BLOCK_OPEN, + indent_levels + 1, ) indent_levels += 1 elif item_as_string in CLOSING_TOKENS: - indent_levels -= 1 - tokenized_str = ( - tokenized_str.strip() + "\n" + (indent_levels * " ") - ) - + # tokenized_str = ( + # tokenized_str.strip() + "\n" + (indent_levels * " ") + # ) + # current_line += "\n" + (indent_levels * " ") # tokenized_str += current_line # current_line = "" + indent_levels -= 1 + commit_current_line( + 0, + # LineType.CHILD_TYPE + # if current_line.strip().startswith("[") + # else LineType.BLOCK_CLOSE, + LineType.BLOCK_CLOSE, + indent_levels - 1, + ) + # indent_levels -= 1 # prev_line_type = ( - # LineType.CHILD_TYPE - # if current_line.strip().startswith("[") - # else LineType.BLOCK_CLOSE + # LineType.CHILD_TYPE + # if current_line.strip().startswith("[") + # else LineType.BLOCK_CLOSE # ) - current_line += "\n" + (indent_levels * " ") - tokenized_str += current_line - current_line = "" + else: + commit_current_line(0, prev_line_type, indent_levels) last_not_whitespace = item - # else: - # current_line = current_line.strip() + " " - print(tokenized_str) # TODO: Remove this when the MR is ready to be merged return tokenized_str