From 45d646be10af585b2d784b7f95f20b18e5cc59d1 Mon Sep 17 00:00:00 2001 From: Bruce Hill Date: Tue, 13 Feb 2024 13:15:28 -0500 Subject: Improvements to cording --- compile.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'compile.c') 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, ", "); -- cgit v1.2.3