diff options
| author | Bruce Hill <bruce@bruce-hill.com> | 2025-08-25 14:12:36 -0400 |
|---|---|---|
| committer | Bruce Hill <bruce@bruce-hill.com> | 2025-08-25 14:12:36 -0400 |
| commit | 15f3227ae693b6b9c07f8a89909faaff297ceb9a (patch) | |
| tree | 4116b09a84a45cf53f5901b68340af8c4aad1407 | |
| parent | 1f78aa8783eba223427509834d64f8f5214f1a98 (diff) | |
Incremental improvements
| -rw-r--r-- | src/formatter.c | 23 |
1 files changed, 19 insertions, 4 deletions
diff --git a/src/formatter.c b/src/formatter.c index 2b367e3d..9b7439c3 100644 --- a/src/formatter.c +++ b/src/formatter.c @@ -171,6 +171,12 @@ OptionalText_t format_inline_code(ast_t *ast, Table_t comments) { if (if_->else_body) code = Texts(code, " else ", must(format_inline_code(if_->else_body, comments))); return code; } + case Repeat: return Texts("repeat ", must(format_inline_code(Match(ast, Repeat)->body, comments))); + case While: { + DeclareMatch(loop, ast, While); + return Texts("while ", must(format_inline_code(loop->condition, comments)), " do ", + must(format_inline_code(loop->body, comments))); + } default: { Text_t code = Text$from_strn(ast->start, (int64_t)(ast->end - ast->start)); if (Text$has(code, Text("\n"))) return NONE_TEXT; @@ -195,7 +201,7 @@ Text_t format_code(ast_t *ast, Table_t comments, Text_t indent) { add_line(&code, Text(""), indent); gap_before_comment = false; } - add_line(&code, Texts("# ", Text$trim(comment, Text("# \t\r\n\v"), true, true)), indent); + add_line(&code, Text$trim(comment, Text(" \t\r\n"), false, true), indent); } add_line(&code, format_code(stmt->ast, comments, indent), indent); @@ -210,7 +216,7 @@ Text_t format_code(ast_t *ast, Table_t comments, Text_t indent) { add_line(&code, Text(""), indent); gap_before_comment = false; } - add_line(&code, Texts("# ", Text$trim(comment, Text("# \t\r\n\v"), true, true)), indent); + add_line(&code, Text$trim(comment, Text(" \t\r\n"), false, true), indent); } return code; } @@ -225,6 +231,15 @@ Text_t format_code(ast_t *ast, Table_t comments, Text_t indent) { format_code(if_->else_body, comments, Texts(indent, single_indent))); return code; } + case Repeat: { + return Texts("repeat\n", indent, single_indent, + format_code(Match(ast, Repeat)->body, comments, Texts(indent, single_indent))); + } + case While: { + DeclareMatch(loop, ast, While); + return Texts("while ", format_code(loop->condition, comments, indent), "\n", indent, single_indent, + format_code(loop->body, comments, Texts(indent, single_indent))); + } case FunctionDef: { DeclareMatch(func, ast, FunctionDef); // ast_t *name; @@ -280,11 +295,11 @@ Text_t format_file(const char *path) { const char *fmt_pos = file->text; Text_t code = EMPTY_TEXT; for (OptionalText_t comment; (comment = next_comment(ctx.comments, &fmt_pos, ast->start)).length > 0;) { - code = Texts(code, Texts("# ", Text$trim(comment, Text("# \t\r\n\v"), true, true)), "\n"); + code = Texts(code, Text$trim(comment, Text(" \t\r\n"), false, true), "\n"); } code = Texts(code, format_code(ast, ctx.comments, EMPTY_TEXT)); for (OptionalText_t comment; (comment = next_comment(ctx.comments, &fmt_pos, ast->start)).length > 0;) { - code = Texts(code, Texts("# ", Text$trim(comment, Text("# \t\r\n\v"), true, true)), "\n"); + code = Texts(code, Text$trim(comment, Text(" \t\r\n"), false, true), "\n"); } return code; } |
