Right-align headers over all-numeric columns with --right-align-numeric (#380) (#2167)

With --right-align-numeric, PPRINT data cells right-align but headers
stayed left-aligned, so a header did not line up with its own column's
data -- the original ask in #380. Now a header is right-aligned when
every value in its column is numeric, for both non-barred and barred
PPRINT output. Mixed columns keep left-aligned headers.

For --omd-aligned, the raw header text of right-aligned columns is now
right-justified too, matching how Markdown viewers render the ---:
marker; this follows the same all-values-numeric per-column rule
already used for the separator markers.

Man-page regeneration also picks up previously-merged reorder help-text
edits that had not been regenerated.

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
John Kerl 2026-07-06 16:45:14 -04:00 committed by GitHub
parent a63ea57359
commit de013dc35c
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
21 changed files with 142 additions and 50 deletions

View file

@ -781,10 +781,12 @@
--fw {string} Shortcut for --fixed left-align-multi-word
--right Right-justifies all fields for PPRINT output.
--right-align-numeric Right-justifies fields with numeric values for PPRINT
output, leaving other fields (and header lines)
left-justified. Also applies to markdown output,
where numeric columns get right-alignment markers
(`---:`) in the header-separator line.
output, leaving other fields left-justified. Headers
are right-justified over columns whose values are all
numeric, so that header and data share the same
alignment. Also applies to markdown output, where
numeric columns get right-alignment markers (`---:`)
in the header-separator line.
1mPROFILING FLAGS0m
These are flags for profiling Miller performance.
@ -1827,8 +1829,10 @@
record start.
-f {a,b,c} Field names to reorder.
-r {a,b,c} Treat field names as regular expressions. Matched fields are moved to
start or end in record order. Example: -r '^YYY,^XXX' puts all YYY-
and XXX-prefixed fields first (in record order), then the rest.
start or end, grouped by the order the regexes are given; within each
group, fields keep their record order. Example: -r '^YYY,^XXX' puts
all YYY-prefixed fields first, then all XXX-prefixed fields, then the
rest.
-b {x} Put field names specified with -f before field name specified by {x},
if any. If {x} isn't present in a given record, the specified fields
will not be moved.
@ -1840,7 +1844,7 @@
Examples:
mlr reorder -f a,b sends input record "d=4,b=2,a=1,c=3" to "a=1,b=2,d=4,c=3".
mlr reorder -e -f a,b sends input record "d=4,b=2,a=1,c=3" to "d=4,c=3,a=1,b=2".
mlr reorder -r '^YYY,^XXX' puts YYY- and XXX-prefixed fields first (record order), then rest.
mlr reorder -r '^YYY,^XXX' puts YYY-prefixed fields first, then XXX-prefixed fields, then rest.
1mrepeat0m
Usage: mlr repeat [options]

View file

@ -933,10 +933,12 @@ These are flags which are applicable to PPRINT format.
--fw {string} Shortcut for --fixed left-align-multi-word
--right Right-justifies all fields for PPRINT output.
--right-align-numeric Right-justifies fields with numeric values for PPRINT
output, leaving other fields (and header lines)
left-justified. Also applies to markdown output,
where numeric columns get right-alignment markers
(`---:`) in the header-separator line.
output, leaving other fields left-justified. Headers
are right-justified over columns whose values are all
numeric, so that header and data share the same
alignment. Also applies to markdown output, where
numeric columns get right-alignment markers (`---:`)
in the header-separator line.
.fi
.if n \{\
.RE
@ -2267,8 +2269,10 @@ Options:
record start.
-f {a,b,c} Field names to reorder.
-r {a,b,c} Treat field names as regular expressions. Matched fields are moved to
start or end in record order. Example: -r '^YYY,^XXX' puts all YYY-
and XXX-prefixed fields first (in record order), then the rest.
start or end, grouped by the order the regexes are given; within each
group, fields keep their record order. Example: -r '^YYY,^XXX' puts
all YYY-prefixed fields first, then all XXX-prefixed fields, then the
rest.
-b {x} Put field names specified with -f before field name specified by {x},
if any. If {x} isn't present in a given record, the specified fields
will not be moved.
@ -2280,7 +2284,7 @@ Options:
Examples:
mlr reorder -f a,b sends input record "d=4,b=2,a=1,c=3" to "a=1,b=2,d=4,c=3".
mlr reorder -e -f a,b sends input record "d=4,b=2,a=1,c=3" to "d=4,c=3,a=1,b=2".
mlr reorder -r '^YYY,^XXX' puts YYY- and XXX-prefixed fields first (record order), then rest.
mlr reorder -r '^YYY,^XXX' puts YYY-prefixed fields first, then XXX-prefixed fields, then rest.
.fi
.if n \{\
.RE