diff options
author | Thalia Archibald <thalia@archibald.dev> | 2024-02-06 18:50:25 -0800 |
---|---|---|
committer | Nico Williams <nico@cryptonector.com> | 2024-02-08 00:11:54 -0600 |
commit | 3c37522aaaa46de3763916072813d64a01ba7094 (patch) | |
tree | 3f4e15a6cc6ca7f65d428fd5b68bbed12075f833 | |
parent | 8a9a74dc122aeb5fb3b9daf69f1b46a3145e3aeb (diff) |
Consistently reset color formatting in `jv_dump_term`
Before, arrays would not reset colors after `[` and `,`, but objects
would; it would reset colors twice before `]` and `}`; and some cases of
indentation would have colors applied. Now, colors are reset immediately
after any token that is colored, before any indentation. This makes the
formatting consistent, for the benefit of custom `JQ_COLORS`.
-rw-r--r-- | src/jv_print.c | 35 |
1 files changed, 13 insertions, 22 deletions
diff --git a/src/jv_print.c b/src/jv_print.c index 08ba2656..8e68a271 100644 --- a/src/jv_print.c +++ b/src/jv_print.c @@ -260,21 +260,17 @@ static void jv_dump_term(struct dtoa_context* C, jv x, int flags, int indent, FI break; } put_str("[", F, S, flags & JV_PRINT_ISATTY); - if (flags & JV_PRINT_PRETTY) { - put_char('\n', F, S, flags & JV_PRINT_ISATTY); - put_indent(indent + 1, flags, F, S, flags & JV_PRINT_ISATTY); - } jv_array_foreach(x, i, elem) { if (i!=0) { - if (flags & JV_PRINT_PRETTY) { - put_str(",\n", F, S, flags & JV_PRINT_ISATTY); - put_indent(indent + 1, flags, F, S, flags & JV_PRINT_ISATTY); - } else { - put_str(",", F, S, flags & JV_PRINT_ISATTY); - } + if (color) put_str(color, F, S, flags & JV_PRINT_ISATTY); + put_char(',', F, S, flags & JV_PRINT_ISATTY); + } + if (color) put_str(COLRESET, F, S, flags & JV_PRINT_ISATTY); + if (flags & JV_PRINT_PRETTY) { + put_char('\n', F, S, flags & JV_PRINT_ISATTY); + put_indent(indent + 1, flags, F, S, flags & JV_PRINT_ISATTY); } jv_dump_term(C, elem, flags, indent + 1, F, S); - if (color) put_str(color, F, S, flags & JV_PRINT_ISATTY); } if (flags & JV_PRINT_PRETTY) { put_char('\n', F, S, flags & JV_PRINT_ISATTY); @@ -292,10 +288,6 @@ static void jv_dump_term(struct dtoa_context* C, jv x, int flags, int indent, FI break; } put_char('{', F, S, flags & JV_PRINT_ISATTY); - if (flags & JV_PRINT_PRETTY) { - put_char('\n', F, S, flags & JV_PRINT_ISATTY); - put_indent(indent + 1, flags, F, S, flags & JV_PRINT_ISATTY); - } int first = 1; int i = 0; jv keyset = jv_null(); @@ -326,14 +318,14 @@ static void jv_dump_term(struct dtoa_context* C, jv x, int flags, int indent, FI } if (!first) { - if (flags & JV_PRINT_PRETTY){ - put_str(",\n", F, S, flags & JV_PRINT_ISATTY); - put_indent(indent + 1, flags, F, S, flags & JV_PRINT_ISATTY); - } else { - put_str(",", F, S, flags & JV_PRINT_ISATTY); - } + if (color) put_str(color, F, S, flags & JV_PRINT_ISATTY); + put_char(',', F, S, flags & JV_PRINT_ISATTY); } if (color) put_str(COLRESET, F, S, flags & JV_PRINT_ISATTY); + if (flags & JV_PRINT_PRETTY) { + put_char('\n', F, S, flags & JV_PRINT_ISATTY); + put_indent(indent + 1, flags, F, S, flags & JV_PRINT_ISATTY); + } first = 0; if (color) put_str(FIELD_COLOR, F, S, flags & JV_PRINT_ISATTY); @@ -346,7 +338,6 @@ static void jv_dump_term(struct dtoa_context* C, jv x, int flags, int indent, FI if (color) put_str(COLRESET, F, S, flags & JV_PRINT_ISATTY); jv_dump_term(C, value, flags, indent + 1, F, S); - if (color) put_str(color, F, S, flags & JV_PRINT_ISATTY); } if (flags & JV_PRINT_PRETTY) { put_char('\n', F, S, flags & JV_PRINT_ISATTY); |