summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThalia Archibald <thalia@archibald.dev>2024-02-06 18:50:25 -0800
committerNico Williams <nico@cryptonector.com>2024-02-08 00:11:54 -0600
commit3c37522aaaa46de3763916072813d64a01ba7094 (patch)
tree3f4e15a6cc6ca7f65d428fd5b68bbed12075f833
parent8a9a74dc122aeb5fb3b9daf69f1b46a3145e3aeb (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.c35
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);