]> Sergey Matveev's repositories - public-inbox.git/commitdiff
lei q: put keywords on one line in --pretty output
authorEric Wong <e@80x24.org>
Sat, 20 Mar 2021 10:04:05 +0000 (19:04 +0900)
committerEric Wong <e@80x24.org>
Sun, 21 Mar 2021 09:45:48 +0000 (09:45 +0000)
Don't waste precious terminal space when there are only a small
number of possible keywords supported/reserved for JMAP.  In the
future, we may implement more sophisticated wrapping for labels,
but it we'll cross tha bridge when we come to it.

lib/PublicInbox/LeiOverview.pm
t/lei-q-kw.t

index 48237f8ab5b3c6f89895133c5958a7b180c8f893..521bca502a86fdf98275db71abe1fca3d4d3fa06 100644 (file)
@@ -176,7 +176,10 @@ sub _json_pretty {
                                        $pair =~ s/(null|"),"/$1, "/g;
                                        $pair;
                                } @$v) . ']';
-                       } else { # references
+                       } elsif ($k eq 'kw') { # keywords are short, one-line
+                               $v = $json->encode($v);
+                               $v =~ s/","/", "/g;
+                       } else { # refs, labels, ...
                                $v = '[' . join($sep, map {
                                        substr($json->encode([$_]), 1, -1);
                                } @$v) . ']';
index e7e14221858b53b93a8405dd4bf010b9916e91f3..de2c775aacbfda5328353d2e56e0daa1bdeaedc1 100644 (file)
@@ -144,7 +144,7 @@ lei_ok(qw(q -o), "mboxrd:$o", "m:$m", @inc);
 # emulate MUA marking mboxrd message as unread
 open my $fh, '<', $o or BAIL_OUT;
 my $s = do { local $/; <$fh> };
-$s =~ s/^Status: OR\n/Status: O\nX-Status: A\n/sm or
+$s =~ s/^Status: OR\n/Status: O\nX-Status: AF\n/sm or
        fail "failed to clear R flag in $s";
 open $fh, '>', $o or BAIL_OUT;
 print $fh $s or BAIL_OUT;
@@ -156,7 +156,10 @@ lei_ok(qw(q -o), "mboxrd:$o", "m:$m", @inc);
 open $fh, '<', $o or BAIL_OUT;
 $s = do { local $/; <$fh> };
 like($s, qr/^Status: O\n/ms, 'seen keyword gone in mbox');
-like($s, qr/^X-Status: A\n/ms, 'answered flag set');
+like($s, qr/^X-Status: AF\n/ms, 'answered + flagged set');
 
+lei_ok(qw(q --pretty), "m:$m", @inc);
+like($lei_out, qr/^  "kw": \["answered", "flagged"\],\n/sm,
+       '--pretty JSON output shows kw: on one line');
 }); # test_lei
 done_testing;