mirror of
https://github.com/johnkerl/miller.git
synced 2026-07-18 00:45:47 +00:00
Implements the plan in plans/recutils.md, addressing #378. Adds a hand-rolled reader/writer pair (pkg/input/record_reader_rec.go, pkg/output/record_writer_rec.go) supporting recutils' blank-line-separated "Key: value" records, "+"-continuation and backslash-newline continuation, and generic comment handling, with recutils' %rec-descriptor schema layer left unspecialized since Miller has no schema-enforcement concept. Registers the format under the "recutils" name (--irecutils/--orecutils/ --recutils flags, matching the --idcf/--odcf/--dcf pattern) in the reader/writer factories and pkg/cli/separators.go, adds docs and a sample data file, and adds unit tests plus test/cases/io-recutils regression cases covering round-tripping, continuation lines, comments, and the hard-error behavior on malformed input. Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| doc.go | ||
| errors.go | ||
| flag_json.go | ||
| flag_types.go | ||
| flag_types_test.go | ||
| flatten_unflatten.go | ||
| mlrcli_util.go | ||
| option_parse.go | ||
| option_types.go | ||
| README.md | ||
| separators.go | ||
| verb_utils.go | ||
Datatypes for parsing the Miller command line, and the flags table.
pkg/climainis the flag-parsing logic for supporting Miller's command-line interface. When you type something likemlr --icsv --ojson put '$sum = $a + $b' then filter '$sum > 1000' myfile.csv, it's the CLI parser which makes it possible for Miller to construct a CSV record-reader, a transformer chain ofputthenfilter, and a JSON record-writer.pkg/clicontains datatypes and the flags table for the CLI-parser, which was split out to avoid a Go package-import cycle.