aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBruce Hill <bruce@bruce-hill.com>2024-02-18 00:49:23 -0500
committerBruce Hill <bruce@bruce-hill.com>2024-02-18 00:49:23 -0500
commitd502f5e55273d9d7b7e13c07e7cab64ef4eca561 (patch)
tree6dd7272887500cc0a703ebc3b7ab474d54dbed3c
parent24a703199b06e483fd28823be64b87ec2ca44645 (diff)
Clean up struc stringifying
-rw-r--r--compile.c18
1 files changed, 5 insertions, 13 deletions
diff --git a/compile.c b/compile.c
index 704898c7..14d4bbd3 100644
--- a/compile.c
+++ b/compile.c
@@ -479,22 +479,14 @@ CORD compile(env_t *env, ast_t *ast)
CORD_appendf(&cord_func, "\treturn use_color ? \"\\x1b[0;1m%s\\x1b[m(\\x1b[2m...\\x1b[m)\" : \"%s(...)\";\n}",
def->name, def->name);
} else {
- CORD_appendf(&cord_func, "\treturn StrF(use_color ? \"\\x1b[0;1m%s\\x1b[m(", def->name);
- for (arg_ast_t *field = def->fields; field; field = field->next) {
- CORD_appendf(&cord_func, "%s=\\x1b[35m%%r\\x1b[m", field->name);
- if (field->next) cord_func = CORD_cat(cord_func, ", ");
- }
- CORD_appendf(&cord_func, ")\" : \"%s(", def->name);
- for (arg_ast_t *field = def->fields; field; field = field->next) {
- CORD_appendf(&cord_func, "%s=%%r", field->name);
- if (field->next) cord_func = CORD_cat(cord_func, ", ");
- }
- cord_func = CORD_cat(cord_func, ")\"");
+ CORD_appendf(&cord_func, "\treturn CORD_all(use_color ? \"\\x1b[0;1m%s\\x1b[m(\" : \"%s(\"", def->name, def->name);
for (arg_ast_t *field = def->fields; field; field = field->next) {
type_t *field_t = parse_type_ast(env, field->type);
- CORD_appendf(&cord_func, ", %r", expr_as_string(env, CORD_cat("&obj->", field->name), field_t, "use_color"));
+ CORD field_str = expr_as_string(env, CORD_cat("&obj->", field->name), field_t, "use_color");
+ CORD_appendf(&cord_func, ", \"%s=\", %r", field->name, field_str);
+ if (field->next) CORD_appendf(&cord_func, ", \", \"");
}
- cord_func = CORD_cat(cord_func, ");\n}");
+ CORD_appendf(&cord_func, ", \")\");\n}\n");
}
env->code->funcs = CORD_cat(env->code->funcs, cord_func);