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