refactor: log parser names
This commit is contained in:
		| @@ -3,25 +3,24 @@ package main | ||||
| import "io" | ||||
|  | ||||
| type ( | ||||
| 	parserFunc func(io.Reader) ([]result, error) | ||||
| 	filterFunc func(result) bool | ||||
| 	groupFunc  func(result) string | ||||
| 	outputFunc func(io.Writer, []result) error | ||||
| 	retrieveFunc func(io.Reader) ([]result, error) | ||||
| 	filterFunc   func(result) bool | ||||
| 	groupFunc    func(result) string | ||||
| 	writeFunc    func(io.Writer, []result) error | ||||
| ) | ||||
|  | ||||
| type report struct { | ||||
| 	input     io.Reader | ||||
| 	output    io.Writer | ||||
| 	parser    parserFunc | ||||
| 	filterer  filterFunc | ||||
| 	grouper   groupFunc | ||||
| 	outputter outputFunc | ||||
| 	input    io.Reader | ||||
| 	output   io.Writer | ||||
| 	retrieve retrieveFunc | ||||
| 	filter   filterFunc | ||||
| 	group    groupFunc | ||||
| 	write    writeFunc | ||||
| } | ||||
|  | ||||
| func newReport() *report { | ||||
| 	return &report{ | ||||
| 		// parser:   textParser, | ||||
| 		filterer: noopFilter, | ||||
| 		filter: noopFilter, | ||||
| 	} | ||||
| } | ||||
|  | ||||
| @@ -35,48 +34,48 @@ func (r *report) to(writer io.Writer) *report { | ||||
| 	return r | ||||
| } | ||||
|  | ||||
| func (r *report) retrieveFrom(fn parserFunc) *report { | ||||
| 	r.parser = fn | ||||
| func (r *report) retrieveFrom(fn retrieveFunc) *report { | ||||
| 	r.retrieve = fn | ||||
| 	return r | ||||
| } | ||||
|  | ||||
| func (r *report) filterBy(fn filterFunc) *report { | ||||
| 	r.filterer = fn | ||||
| 	r.filter = fn | ||||
| 	return r | ||||
| } | ||||
|  | ||||
| func (r *report) groupBy(fn groupFunc) *report { | ||||
| 	r.grouper = fn | ||||
| 	r.group = fn | ||||
| 	return r | ||||
| } | ||||
|  | ||||
| func (r *report) writeTo(fn outputFunc) *report { | ||||
| 	r.outputter = fn | ||||
| func (r *report) writeTo(fn writeFunc) *report { | ||||
| 	r.write = fn | ||||
| 	return r | ||||
| } | ||||
|  | ||||
| func (r *report) run() ([]result, error) { | ||||
| 	if r.parser == nil { | ||||
| 		panic("report retriever cannot be nil") | ||||
| 	if r.retrieve == nil { | ||||
| 		panic("report retrieve cannot be nil") | ||||
| 	} | ||||
|  | ||||
| 	results, err := r.parser(r.input) | ||||
| 	results, err := r.retrieve(r.input) | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
|  | ||||
| 	// noop if filterer is nil | ||||
| 	results = filterBy(results, r.filterer) | ||||
| 	// noop if filter is nil | ||||
| 	results = filterBy(results, r.filter) | ||||
|  | ||||
| 	// grouper is more tricky | ||||
| 	// group func is more tricky | ||||
| 	// you don't want to create an unnecessary map | ||||
| 	if r.grouper != nil { | ||||
| 		results = groupBy(results, r.grouper) | ||||
| 	if r.group != nil { | ||||
| 		results = groupBy(results, r.group) | ||||
| 	} | ||||
|  | ||||
| 	// prefer: noop output | ||||
| 	if r.output != nil { | ||||
| 		if err := r.outputter(r.output, results); err != nil { | ||||
| 	// TODO: prefer: noop writer | ||||
| 	if r.write != nil { | ||||
| 		if err := r.write(r.output, results); err != nil { | ||||
| 			return nil, err | ||||
| 		} | ||||
| 	} | ||||
|   | ||||
		Reference in New Issue
	
	Block a user