bugfix utf8 byte-length -> rune-length in pprint writer

This commit is contained in:
John Kerl 2020-11-22 23:14:49 -05:00
parent 147a057964
commit eff0437a53
3 changed files with 20 additions and 16 deletions

View file

@ -1,8 +1,13 @@
#!/bin/bash
# See ./reg-test/run
diff_context_flag=""
for arg; do
expfile=./reg-test/expected/$arg.out
outfile=./output-reg-test/$arg.out
diff -a -I '^mlr' -I '^Miller:' -I '^cat' $expfile $outfile
if [ "$arg" = "-C5" ]; then
diff_context_flag="$arg"
else
expfile=./reg-test/expected/$arg.out
outfile=./output-reg-test/$arg.out
diff -a -I '^mlr' -I '^Miller:' -I '^cat' $expfile $outfile
fi
done

View file

@ -1,19 +1,18 @@
================================================================
BUG:
rrv ./reg-test/cases/case-c-altkv.sh
rrv ./reg-test/cases/case-c-dsl-argpass-typedecl.sh
rrv ./reg-test/cases/case-c-dsl-extended-typeof.sh
rrv ./reg-test/cases/case-c-dsl-functional-tests.sh
rrv ./reg-test/cases/case-c-dsl-haskey.sh
rrv ./reg-test/cases/case-c-dsl-multipart-scripts.sh
rrv ./reg-test/cases/case-c-dsl-null-empty-handling.sh
rrv ./reg-test/cases/case-c-dsl-triple-for-loops.sh
rrv ./reg-test/cases/case-c-label.sh
rrv ./reg-test/cases/case-c-remove-empty-columns.sh
================================================================
FORMATTING?
rrv ./reg-test/cases/case-c-clean-whitespace.sh
rrv ./reg-test/cases/case-c-localvar-unsets.sh
rrv ./reg-test/cases/case-c-dsl-operator-associativity.sh
rrv ./reg-test/cases/case-c-dsl-operator-precedence.sh
@ -21,7 +20,9 @@ rrv ./reg-test/cases/case-c-dsl-operator-precedence.sh
================================================================
PARTIALLY IMPLEMENTED:
rrv ./reg-test/cases/case-c-clean-whitespace.sh
rrv ./reg-test/cases/case-c-cut.sh
rrv ./reg-test/cases/case-c-localvar-unsets.sh
================================================================
PPRINT --BARRED --RIGHT
@ -47,7 +48,12 @@ rrv ./reg-test/cases/case-c-auxents.sh
rrv ./reg-test/cases/case-c-bar.sh
rrv ./reg-test/cases/case-c-compressed-input.sh
rrv ./reg-test/cases/case-c-count-distinct.sh
rrv ./reg-test/cases/case-c-csv-rs-environment-defaults.sh
rrv ./reg-test/cases/case-c-dsl-gmt-date-time-functions.sh
rrv ./reg-test/cases/case-c-dsl-local-date-time-functions.sh
rrv ./reg-test/cases/case-c-dsl-mapvars-udfs-subroutines.sh
rrv ./reg-test/cases/case-c-dsl-positional-indexing.sh
rrv ./reg-test/cases/case-c-dsl-redirects.sh
rrv ./reg-test/cases/case-c-dsl-regex-captures.sh
rrv ./reg-test/cases/case-c-dsl-regex-matching.sh
rrv ./reg-test/cases/case-c-fraction.sh
@ -114,23 +120,15 @@ rrv ./reg-test/cases/case-c-dsl-typed-overlay.sh
rrv ./reg-test/cases/case-c-dsl-user-defined-functions-and-subroutines.sh
rrv ./reg-test/cases/case-c-dsl-user-defined-functions.sh
rrv ./reg-test/cases/case-c-dsl-user-defined-subroutines.sh
rrv ./reg-test/cases/case-c-dsl-utf8-uppercase-lowercase.sh
rrv ./reg-test/cases/case-c-format-conversion-keystroke-savers.sh
rrv ./reg-test/cases/case-c-het-pprint-input.sh
================================================================
TBD:
rrv ./reg-test/cases/case-c-csv-rs-environment-defaults.sh
rrv ./reg-test/cases/case-c-dsl-gmt-date-time-functions.sh
rrv ./reg-test/cases/case-c-dsl-mapvars-udfs-subroutines.sh
rrv ./reg-test/cases/case-c-dsl-multipart-scripts.sh
rrv ./reg-test/cases/case-c-dsl-null-empty-handling.sh
rrv ./reg-test/cases/case-c-dsl-parameterized-emit.sh
rrv ./reg-test/cases/case-c-dsl-positional-indexing.sh
rrv ./reg-test/cases/case-c-dsl-prefixed-unprefixed-emit.sh
rrv ./reg-test/cases/case-c-dsl-print.sh
rrv ./reg-test/cases/case-c-dsl-redirects.sh
rrv ./reg-test/cases/case-c-dsl-scientific-notation.sh
rrv ./reg-test/cases/case-c-dsl-stack-allocation.sh
rrv ./reg-test/cases/case-c-format-values.sh

View file

@ -6,6 +6,7 @@ import (
"fmt"
"os"
"strings"
"unicode/utf8"
"miller/clitypes"
"miller/types"
@ -89,7 +90,7 @@ func (this *RecordWriterPPRINT) writeHeterogenousList(
for e := records.Front(); e != nil; e = e.Next() {
outrec := e.Value.(*types.Mlrmap)
for pe := outrec.Head; pe != nil; pe = pe.Next {
width := len(pe.Value.String())
width := utf8.RuneCountInString(pe.Value.String())
if width == 0 {
width = 1 // We'll rewrite "" to "-" below
}
@ -102,7 +103,7 @@ func (this *RecordWriterPPRINT) writeHeterogenousList(
// Column name may be longer/shorter than all data values in the column
for key, oldMaxWidth := range maxWidths {
width := len(key)
width := utf8.RuneCountInString(key)
if width > oldMaxWidth {
maxWidths[key] = width
}