aboutsummaryrefslogtreecommitdiff
path: root/compile.c
diff options
context:
space:
mode:
authorBruce Hill <bruce@bruce-hill.com>2024-02-13 13:15:28 -0500
committerBruce Hill <bruce@bruce-hill.com>2024-02-13 13:15:28 -0500
commit45d646be10af585b2d784b7f95f20b18e5cc59d1 (patch)
tree19bd2875144b46cb91855bef3e96b4f402f9ae6b /compile.c
parentcf70dac0be983ef8a395bd017ac9975760d3fe4b (diff)
Improvements to cording
Diffstat (limited to 'compile.c')
-rw-r--r--compile.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/compile.c b/compile.c
index 7b9b6698..87a4a764 100644
--- a/compile.c
+++ b/compile.c
@@ -279,9 +279,14 @@ CORD compile(ast_t *ast)
}
code = CORD_cat(code, "};\n");
CORD_sprintf(&code,
- "%rCORD %s__cord(%s_t *obj, void *userdata) {\n"
+ "%rCORD %s__cord(%s_t *obj, bool use_color) {\n"
"\tif (!obj) return \"%s\";\n"
- "\treturn CORD_asprintf(\"%s(", code, def->name, def->name, def->name, def->name);
+ "\treturn CORD_asprintf(use_color ? \"\\x1b[0;1m%s\\x1b[m(", code, def->name, def->name, def->name, def->name);
+ for (arg_ast_t *field = def->fields; field; field = field->next) {
+ CORD_sprintf(&code, "%r%s=\\x1b[35m%%r\\x1b[m", code, field->name);
+ if (field->next) code = CORD_cat(code, ", ");
+ }
+ CORD_appendf(&code, ")\" : \"%s(", def->name);
for (arg_ast_t *field = def->fields; field; field = field->next) {
CORD_sprintf(&code, "%r%s=%%r", code, field->name);
if (field->next) code = CORD_cat(code, ", ");