refactor: log parser names (again :))

This commit is contained in:
Inanc Gumus
2019-08-06 03:32:24 +03:00
parent 69094da997
commit 9c57aad7d9
5 changed files with 47 additions and 61 deletions

View File

@ -1,4 +1,4 @@
learngoprogramming.com.tr / 10 5 learngoprogramming.com / 10 5
learngoprogramming.com /courses 15 10 learngoprogramming.com /courses 15 10
learngoprogramming.com /courses 10 5 learngoprogramming.com /courses 10 5
learngoprogramming.com /articles 20 15 learngoprogramming.com /articles 20 15

View File

@ -16,15 +16,12 @@ func main() {
defer recoverErr() defer recoverErr()
_, err := newReport(). _, err := newReport().
from(os.Stdin). from(textReader(os.Stdin)).
to(os.Stdout). to(textWriter(os.Stdout)).
retrieveFrom(textReader). // filterBy(orgDomainsFilter).
filterBy(orgDomainsFilter). filterBy(notUsing(domainExtFilter("com", "io"))).
// filterBy(notUsing(domainExtFilter("org", "io"))).
// groupBy(pageGrouper).
groupBy(domainGrouper). groupBy(domainGrouper).
writeTo(textWriter). start()
run()
if err != nil { if err != nil {
fmt.Println("> Err:", err) fmt.Println("> Err:", err)
@ -49,12 +46,11 @@ Result -> report.Line
notUsing = report.Not notUsing = report.Not
_, err := stats.Parse(). _, err := report.New().
From(os.Stdin). From(report.TextReader(os.Stdin)).
To(os.Stdout). To(report.TextWriter(os.Stdout)).
RetrieveFrom(stats.TextReader). // FilterBy(report.OrgDomainsFilter).
FilterBy(notUsing(stats.DomainExtFilter("org", "io"))). FilterBy(notUsing(report.DomainExtFilter("com", "io"))).
GroupBy(stats.DomainGrouper). GroupBy(report.DomainGrouper).
WriteTo(stats.TextWriter). Start()
Run()
*/ */

View File

@ -1,19 +1,15 @@
package main package main
import "io"
type ( type (
retrieveFunc func(io.Reader) ([]result, error) inputFunc func() ([]result, error)
writeFunc func(io.Writer, []result) error outputFunc func([]result) error
) )
type report struct { type report struct {
input io.Reader input inputFunc
output io.Writer
retrieve retrieveFunc
filter filterFunc filter filterFunc
group groupFunc group groupFunc
write writeFunc output outputFunc
} }
func newReport() *report { func newReport() *report {
@ -22,18 +18,13 @@ func newReport() *report {
} }
} }
func (r *report) from(reader io.Reader) *report { func (r *report) from(fn inputFunc) *report {
r.input = reader r.input = fn
return r return r
} }
func (r *report) to(writer io.Writer) *report { func (r *report) to(fn outputFunc) *report {
r.output = writer r.output = fn
return r
}
func (r *report) retrieveFrom(fn retrieveFunc) *report {
r.retrieve = fn
return r return r
} }
@ -47,17 +38,12 @@ func (r *report) groupBy(fn groupFunc) *report {
return r return r
} }
func (r *report) writeTo(fn writeFunc) *report { func (r *report) start() ([]result, error) {
r.write = fn if r.input == nil {
return r panic("report input cannot be nil")
}
func (r *report) run() ([]result, error) {
if r.retrieve == nil {
panic("report retrieve cannot be nil")
} }
results, err := r.retrieve(r.input) results, err := r.input()
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -72,8 +58,8 @@ func (r *report) run() ([]result, error) {
} }
// TODO: prefer: noop writer // TODO: prefer: noop writer
if r.write != nil { if r.output != nil {
if err := r.write(r.output, results); err != nil { if err := r.output(results); err != nil {
return nil, err return nil, err
} }
} }

View File

@ -14,9 +14,11 @@ import (
"strings" "strings"
) )
func textReader(r io.Reader) ([]result, error) { func textReader(r io.Reader) inputFunc {
return func() ([]result, error) {
in := bufio.NewScanner(r) in := bufio.NewScanner(r)
return parseText(in) return parseText(in)
}
} }
func parseText(in *bufio.Scanner) ([]result, error) { func parseText(in *bufio.Scanner) ([]result, error) {

View File

@ -19,7 +19,8 @@ const (
dashLength = 58 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.Fprintf(w, header, "DOMAINS", "PAGES", "VISITS", "UNIQUES")
fmt.Fprintln(w, strings.Repeat("-", dashLength)) 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) fmt.Fprintf(w, footer, "", total.visits, total.uniques)
return nil return nil
}
} }