From 481a894fd4c016cddb95d3b4d6bc24429990ffdd Mon Sep 17 00:00:00 2001 From: John Kerl Date: Wed, 26 Aug 2020 23:41:15 -0400 Subject: [PATCH] neaten --- ...c_dkvp_reader.go => record_reader_dkvp.go} | 0 go/src/mapping/mapper_nothing.go | 24 +++++++++++ go/src/mapping/record_mapper_factory.go | 1 + go/todo.txt | 43 ++++++------------- 4 files changed, 38 insertions(+), 30 deletions(-) rename go/src/input/{lrec_dkvp_reader.go => record_reader_dkvp.go} (100%) create mode 100644 go/src/mapping/mapper_nothing.go diff --git a/go/src/input/lrec_dkvp_reader.go b/go/src/input/record_reader_dkvp.go similarity index 100% rename from go/src/input/lrec_dkvp_reader.go rename to go/src/input/record_reader_dkvp.go diff --git a/go/src/mapping/mapper_nothing.go b/go/src/mapping/mapper_nothing.go new file mode 100644 index 000000000..2d230677b --- /dev/null +++ b/go/src/mapping/mapper_nothing.go @@ -0,0 +1,24 @@ +package mapping + +import ( + "containers" +) + +type MapperNothing struct { + // stateless +} + +func NewMapperNothing() *MapperNothing { + return &MapperNothing { + } +} + +func (this *MapperNothing) Name() string { + return "nothing" +} + +func (this *MapperNothing) Map(inrec *containers.Lrec, outrecs chan<- *containers.Lrec) { + if inrec == nil { // end of stream + outrecs <- inrec + } +} diff --git a/go/src/mapping/record_mapper_factory.go b/go/src/mapping/record_mapper_factory.go index 6804bc620..533f7513d 100644 --- a/go/src/mapping/record_mapper_factory.go +++ b/go/src/mapping/record_mapper_factory.go @@ -3,6 +3,7 @@ package mapping func Create(mapperName string) RecordMapper { switch mapperName { case "cat": return NewMapperCat() + case "nothing": return NewMapperNothing() case "tac": return NewMapperTac() default: return nil } diff --git a/go/todo.txt b/go/todo.txt index 0dd277639..a7beb8800 100644 --- a/go/todo.txt +++ b/go/todo.txt @@ -1,32 +1,15 @@ -* input.RecordReader interface -* impls: - o dkvp - o xtab - o csv - o streaming json - o etc -* factory -* remove argf -* needs fresh start on each new filename +* lots of trivial things are just a matter of keystroking +* defer them while focusing on what's hard (and maybe most worthwhile about the Go port) -* mapper interface -* impls: - o cat - o cut - o head - o tail - o count - o ... lots more over time (if ever) - o defer DSL for a good long while -* factory -* defer then-chaining for the merest of moments - o needs []mapchan in the streamer +harder / more worthy: +* streaming JSON reader +* streaming RFC-compliant CSV reader +* sort +* stats1 +* DSL +* calendar/DST/TZ -* output.RecordWriter interface -* impls: - o dkvp - o xtab - o csv - o json - o etc -* factory +easier: +* most of the verbs +* most of the file formats +* then-chaining