refactor: log parser names (again :))
This commit is contained in:
		| @@ -1,4 +1,4 @@ | ||||
| learngoprogramming.com.tr / 10 5 | ||||
| learngoprogramming.com / 10 5 | ||||
| learngoprogramming.com /courses 15 10 | ||||
| learngoprogramming.com /courses 10 5 | ||||
| learngoprogramming.com /articles 20 15 | ||||
|   | ||||
| @@ -16,15 +16,12 @@ func main() { | ||||
| 	defer recoverErr() | ||||
|  | ||||
| 	_, err := newReport(). | ||||
| 		from(os.Stdin). | ||||
| 		to(os.Stdout). | ||||
| 		retrieveFrom(textReader). | ||||
| 		filterBy(orgDomainsFilter). | ||||
| 		// filterBy(notUsing(domainExtFilter("org", "io"))). | ||||
| 		// groupBy(pageGrouper). | ||||
| 		from(textReader(os.Stdin)). | ||||
| 		to(textWriter(os.Stdout)). | ||||
| 		// filterBy(orgDomainsFilter). | ||||
| 		filterBy(notUsing(domainExtFilter("com", "io"))). | ||||
| 		groupBy(domainGrouper). | ||||
| 		writeTo(textWriter). | ||||
| 		run() | ||||
| 		start() | ||||
|  | ||||
| 	if err != nil { | ||||
| 		fmt.Println("> Err:", err) | ||||
| @@ -49,12 +46,11 @@ Result    -> report.Line | ||||
|  | ||||
| notUsing = report.Not | ||||
|  | ||||
| _, err := stats.Parse(). | ||||
| 	From(os.Stdin). | ||||
| 	To(os.Stdout). | ||||
| 	RetrieveFrom(stats.TextReader). | ||||
| 	FilterBy(notUsing(stats.DomainExtFilter("org", "io"))). | ||||
| 	GroupBy(stats.DomainGrouper). | ||||
| 	WriteTo(stats.TextWriter). | ||||
| 	Run() | ||||
| _, err := report.New(). | ||||
| 	From(report.TextReader(os.Stdin)). | ||||
| 	To(report.TextWriter(os.Stdout)). | ||||
| 	// FilterBy(report.OrgDomainsFilter). | ||||
| 	FilterBy(notUsing(report.DomainExtFilter("com", "io"))). | ||||
| 	GroupBy(report.DomainGrouper). | ||||
| 	Start() | ||||
| */ | ||||
|   | ||||
| @@ -1,19 +1,15 @@ | ||||
| package main | ||||
|  | ||||
| import "io" | ||||
|  | ||||
| type ( | ||||
| 	retrieveFunc func(io.Reader) ([]result, error) | ||||
| 	writeFunc    func(io.Writer, []result) error | ||||
| 	inputFunc  func() ([]result, error) | ||||
| 	outputFunc func([]result) error | ||||
| ) | ||||
|  | ||||
| type report struct { | ||||
| 	input    io.Reader | ||||
| 	output   io.Writer | ||||
| 	retrieve retrieveFunc | ||||
| 	input  inputFunc | ||||
| 	filter filterFunc | ||||
| 	group  groupFunc | ||||
| 	write    writeFunc | ||||
| 	output outputFunc | ||||
| } | ||||
|  | ||||
| func newReport() *report { | ||||
| @@ -22,18 +18,13 @@ func newReport() *report { | ||||
| 	} | ||||
| } | ||||
|  | ||||
| func (r *report) from(reader io.Reader) *report { | ||||
| 	r.input = reader | ||||
| func (r *report) from(fn inputFunc) *report { | ||||
| 	r.input = fn | ||||
| 	return r | ||||
| } | ||||
|  | ||||
| func (r *report) to(writer io.Writer) *report { | ||||
| 	r.output = writer | ||||
| 	return r | ||||
| } | ||||
|  | ||||
| func (r *report) retrieveFrom(fn retrieveFunc) *report { | ||||
| 	r.retrieve = fn | ||||
| func (r *report) to(fn outputFunc) *report { | ||||
| 	r.output = fn | ||||
| 	return r | ||||
| } | ||||
|  | ||||
| @@ -47,17 +38,12 @@ func (r *report) groupBy(fn groupFunc) *report { | ||||
| 	return r | ||||
| } | ||||
|  | ||||
| func (r *report) writeTo(fn writeFunc) *report { | ||||
| 	r.write = fn | ||||
| 	return r | ||||
| } | ||||
|  | ||||
| func (r *report) run() ([]result, error) { | ||||
| 	if r.retrieve == nil { | ||||
| 		panic("report retrieve cannot be nil") | ||||
| func (r *report) start() ([]result, error) { | ||||
| 	if r.input == nil { | ||||
| 		panic("report input cannot be nil") | ||||
| 	} | ||||
|  | ||||
| 	results, err := r.retrieve(r.input) | ||||
| 	results, err := r.input() | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| @@ -72,8 +58,8 @@ func (r *report) run() ([]result, error) { | ||||
| 	} | ||||
|  | ||||
| 	// TODO: prefer: noop writer | ||||
| 	if r.write != nil { | ||||
| 		if err := r.write(r.output, results); err != nil { | ||||
| 	if r.output != nil { | ||||
| 		if err := r.output(results); err != nil { | ||||
| 			return nil, err | ||||
| 		} | ||||
| 	} | ||||
|   | ||||
| @@ -14,9 +14,11 @@ import ( | ||||
| 	"strings" | ||||
| ) | ||||
|  | ||||
| func textReader(r io.Reader) ([]result, error) { | ||||
| func textReader(r io.Reader) inputFunc { | ||||
| 	return func() ([]result, error) { | ||||
| 		in := bufio.NewScanner(r) | ||||
| 		return parseText(in) | ||||
| 	} | ||||
| } | ||||
|  | ||||
| func parseText(in *bufio.Scanner) ([]result, error) { | ||||
|   | ||||
| @@ -19,7 +19,8 @@ const ( | ||||
| 	dashLength = 58 | ||||
| ) | ||||
|  | ||||
| func textWriter(w io.Writer, results []result) error { | ||||
| func textWriter(w io.Writer) outputFunc { | ||||
| 	return func(results []result) error { | ||||
| 		fmt.Fprintf(w, header, "DOMAINS", "PAGES", "VISITS", "UNIQUES") | ||||
| 		fmt.Fprintln(w, strings.Repeat("-", dashLength)) | ||||
|  | ||||
| @@ -32,4 +33,5 @@ func textWriter(w io.Writer, results []result) error { | ||||
| 		fmt.Fprintf(w, footer, "", total.visits, total.uniques) | ||||
|  | ||||
| 		return nil | ||||
| 	} | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user