diff --git a/src/jv_print.c b/src/jv_print.c index 08ba2656b4..44ff36f3e4 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); @@ -342,11 +334,13 @@ 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); if (color) put_str(color, F, S, flags & JV_PRINT_ISATTY); - put_str((flags & JV_PRINT_PRETTY) ? ": " : ":", 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(' ', 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); diff --git a/tests/shtest b/tests/shtest index 06bd881f7e..6cc2e1725b 100755 --- a/tests/shtest +++ b/tests/shtest @@ -436,41 +436,96 @@ printf '\033[4;31mnull\033[0m\n' > $d/expect cmp $d/color $d/expect ## Default colors, complex input -$JQ -Ccn '[{"a":true,"b":false},123,null]' > $d/color +$JQ -Ccn '[{"a":true,"b":false},"abc",123,null]' > $d/color { - printf '\033[1;39m[\033[1;39m{' - printf '\033[0m\033[1;34m"a"\033[' - printf '0m\033[1;39m:\033[0m\033[' - printf '0;39mtrue\033[0m\033[1' - printf ';39m,\033[0m\033[1;34m' - printf '"b"\033[0m\033[1;39m:\033' - printf '[0m\033[0;39mfalse\033' - printf '[0m\033[1;39m\033[1;39' - printf 'm}\033[0m\033[1;39m,\033[' - printf '0;39m123\033[0m\033[1;' - printf '39m,\033[0;90mnull\033' - printf '[0m\033[1;39m\033[1;39' - printf 'm]\033[0m\n' + printf '\033[1;39m[\033[0m' + printf '\033[1;39m{\033[0m' + printf '\033[1;34m"a"\033[0m' + printf '\033[1;39m:\033[0m' + printf '\033[0;39mtrue\033[0m' + printf '\033[1;39m,\033[0m' + printf '\033[1;34m"b"\033[0m' + printf '\033[1;39m:\033[0m' + printf '\033[0;39mfalse\033[0m' + printf '\033[1;39m}\033[0m' + printf '\033[1;39m,\033[0m' + printf '\033[0;32m"abc"\033[0m' + printf '\033[1;39m,\033[0m' + printf '\033[0;39m123\033[0m' + printf '\033[1;39m,\033[0m' + printf '\033[0;90mnull\033[0m' + printf '\033[1;39m]\033[0m\n' } > $d/expect cmp $d/color $d/expect ## Set non-default colors, complex input JQ_COLORS='0;30:0;31:0;32:0;33:0;34:1;35:1;36:1;37' \ - $JQ -Ccn '[{"a":true,"b":false},123,null]' > $d/color + $JQ -Ccn '[{"a":true,"b":false},"abc",123,null]' > $d/color { - printf '\033[1;35m[\033[1;36m{' - printf '\033[0m\033[1;37m"a"\033[' - printf '0m\033[1;36m:\033[0m\033[' - printf '0;32mtrue\033[0m\033[1' - printf ';36m,\033[0m\033[1;37m' - printf '"b"\033[0m\033[1;36m:\033' - printf '[0m\033[0;31mfalse\033' - printf '[0m\033[1;36m\033[1;36' - printf 'm}\033[0m\033[1;35m,\033[' - printf '0;33m123\033[0m\033[1;' - printf '35m,\033[0;30mnull\033' - printf '[0m\033[1;35m\033[1;35' - printf 'm]\033[0m\n' + printf '\033[1;35m[\033[0m' + printf '\033[1;36m{\033[0m' + printf '\033[1;37m"a"\033[0m' + printf '\033[1;36m:\033[0m' + printf '\033[0;32mtrue\033[0m' + printf '\033[1;36m,\033[0m' + printf '\033[1;37m"b"\033[0m' + printf '\033[1;36m:\033[0m' + printf '\033[0;31mfalse\033[0m' + printf '\033[1;36m}\033[0m' + printf '\033[1;35m,\033[0m' + printf '\033[0;34m"abc"\033[0m' + printf '\033[1;35m,\033[0m' + printf '\033[0;33m123\033[0m' + printf '\033[1;35m,\033[0m' + printf '\033[0;30mnull\033[0m' + printf '\033[1;35m]\033[0m\n' +} > $d/expect +cmp $d/color $d/expect + +## Default colors, complex input, indented +$JQ -Cn '[{"a":true,"b":false},"abc",123,null]' > $d/color +{ + printf '\033[1;39m[\033[0m\n' + printf ' \033[1;39m{\033[0m\n' + printf ' \033[1;34m"a"\033[0m' + printf '\033[1;39m:\033[0m ' + printf '\033[0;39mtrue\033[0m' + printf '\033[1;39m,\033[0m\n' + printf ' \033[1;34m"b"\033[0m' + printf '\033[1;39m:\033[0m ' + printf '\033[0;39mfalse\033[0m\n' + printf ' \033[1;39m}\033[0m' + printf '\033[1;39m,\033[0m\n' + printf ' \033[0;32m"abc"\033[0m' + printf '\033[1;39m,\033[0m\n' + printf ' \033[0;39m123\033[0m' + printf '\033[1;39m,\033[0m\n' + printf ' \033[0;90mnull\033[0m\n' + printf '\033[1;39m]\033[0m\n' +} > $d/expect +cmp $d/color $d/expect + +## Set non-default colors, complex input, indented +JQ_COLORS='0;30:0;31:0;32:0;33:0;34:1;35:1;36:1;37' \ + $JQ -Cn '[{"a":true,"b":false},"abc",123,null]' > $d/color +{ + printf '\033[1;35m[\033[0m\n' + printf ' \033[1;36m{\033[0m\n' + printf ' \033[1;37m"a"\033[0m' + printf '\033[1;36m:\033[0m ' + printf '\033[0;32mtrue\033[0m' + printf '\033[1;36m,\033[0m\n' + printf ' \033[1;37m"b"\033[0m' + printf '\033[1;36m:\033[0m ' + printf '\033[0;31mfalse\033[0m\n' + printf ' \033[1;36m}\033[0m' + printf '\033[1;35m,\033[0m\n' + printf ' \033[0;34m"abc"\033[0m' + printf '\033[1;35m,\033[0m\n' + printf ' \033[0;33m123\033[0m' + printf '\033[1;35m,\033[0m\n' + printf ' \033[0;30mnull\033[0m\n' + printf '\033[1;35m]\033[0m\n' } > $d/expect cmp $d/color $d/expect @@ -480,25 +535,25 @@ cmp $d/color $d/expect # on stderr. set -vx echo 'Failed to set $JQ_COLORS' > $d/expect_warning -$JQ -Ccn '[{"a":true,"b":false},123,null]' > $d/expect +$JQ -Ccn '[{"a":true,"b":false},"abc",123,null]' > $d/expect JQ_COLORS='garbage;30:*;31:,;3^:0;$%:0;34:1;35:1;36' \ - $JQ -Ccn '[{"a":true,"b":false},123,null]' > $d/color 2>$d/warning + $JQ -Ccn '[{"a":true,"b":false},"abc",123,null]' > $d/color 2>$d/warning cmp $d/color $d/expect cmp $d/warning $d/expect_warning JQ_COLORS='1234567890123456789;30:0;31:0;32:0;33:0;34:1;35:1;36' \ - $JQ -Ccn '[{"a":true,"b":false},123,null]' > $d/color 2>$d/warning + $JQ -Ccn '[{"a":true,"b":false},"abc",123,null]' > $d/color 2>$d/warning cmp $d/color $d/expect cmp $d/warning $d/expect_warning JQ_COLORS='1;31234567890123456789:0;31:0;32:0;33:0;34:1;35:1;36' \ - $JQ -Ccn '[{"a":true,"b":false},123,null]' > $d/color 2>$d/warning + $JQ -Ccn '[{"a":true,"b":false},"abc",123,null]' > $d/color 2>$d/warning cmp $d/color $d/expect cmp $d/warning $d/expect_warning JQ_COLORS='1234567890123456;1234567890123456:1234567890123456;1234567890123456:1234567890123456;1234567890123456:1234567890123456;1234567890123456:1234567890123456;1234567890123456:1234567890123456;1234567890123456:1234567890123456;1234567890123456' \ - $JQ -Ccn '[{"a":true,"b":false},123,null]' > $d/color 2>$d/warning + $JQ -Ccn '[{"a":true,"b":false},"abc",123,null]' > $d/color 2>$d/warning cmp $d/color $d/expect cmp $d/warning $d/expect_warning JQ_COLORS="0123456789123:0123456789123:0123456789123:0123456789123:0123456789123:0123456789123:0123456789123:0123456789123:" \ - $JQ -Ccn '[{"a":true,"b":false},123,null]' > $d/color 2>$d/warning + $JQ -Ccn '[{"a":true,"b":false},"abc",123,null]' > $d/color 2>$d/warning cmp $d/color $d/expect cmp $d/warning $d/expect_warning