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()` |