20 lines
605 B
Markdown
20 lines
605 B
Markdown
### PROBLEM
|
|
+ `summarize()` knows a lot about the internals of the `parser`.
|
|
+ coupled to the `parser`.
|
|
|
|
## SOLUTION
|
|
+ remove: `parser.go` `sum` and `domains` fields
|
|
+ remove: `parser.go/newParser()`
|
|
+ change: `parser.go/parse(p *parser) error` -> `parse() ([]result, error)`
|
|
+ initialize: `sum` inside `parse()`
|
|
+ remove: `update()`
|
|
+ call: `sum` update in the `parse()`
|
|
+ collect the grouped results and return them from `parser()`
|
|
|
|
+ `summarize(p *parser)` -> `summarize([]result)`
|
|
+ in `summarize()`
|
|
+ `sort.Slice`
|
|
+ range over `[]result`
|
|
|
|
+ `main.go`
|
|
+ just: `res, err := parse()` |