From 55a480a01687e669877dde5f2c27cc3faf46ff1c Mon Sep 17 00:00:00 2001 From: Inanc Gumus Date: Wed, 28 Aug 2019 12:46:43 +0300 Subject: [PATCH] refactor: oop log parser names --- interfaces/log-parser/oop/group.go | 2 +- interfaces/log-parser/oop/main.go | 2 +- interfaces/log-parser/oop/result.go | 22 ++++++++++++++-------- interfaces/log-parser/oop/textreport.go | 2 +- 4 files changed, 17 insertions(+), 11 deletions(-) diff --git a/interfaces/log-parser/oop/group.go b/interfaces/log-parser/oop/group.go index 3a3c86f..fad2f50 100644 --- a/interfaces/log-parser/oop/group.go +++ b/interfaces/log-parser/oop/group.go @@ -33,7 +33,7 @@ func (g *group) digest(results iterator) error { g.keys = append(g.keys, k) } - g.sum[k] = r.add(g.sum[k]) + g.sum[k] = r.sum(g.sum[k]) }) } diff --git a/interfaces/log-parser/oop/main.go b/interfaces/log-parser/oop/main.go index 80f8dee..ffbf74f 100644 --- a/interfaces/log-parser/oop/main.go +++ b/interfaces/log-parser/oop/main.go @@ -29,7 +29,7 @@ func main() { pipe := newPipeline( newTextLog(os.Stdin), newTextReport(), - filterBy(domainExtFilter("com", "io")), + filterBy(notUsing(domainExtFilter("com", "io"))), groupBy(domainGrouper), ) diff --git a/interfaces/log-parser/oop/result.go b/interfaces/log-parser/oop/result.go index df256e6..54984c9 100644 --- a/interfaces/log-parser/oop/result.go +++ b/interfaces/log-parser/oop/result.go @@ -16,7 +16,7 @@ type result struct { uniques int } -func (r result) add(other result) result { +func (r result) sum(other result) result { r.visits += other.visits r.uniques += other.uniques return r @@ -31,18 +31,24 @@ func (r *result) UnmarshalText(p []byte) (err error) { r.domain, r.page = fields[0], fields[1] - r.visits, err = strconv.Atoi(fields[2]) - if err != nil || r.visits < 0 { - return fmt.Errorf("wrong input %q", fields[2]) + if r.visits, err = parseStr("visits", fields[2]); err != nil { + return err } - - r.uniques, err = strconv.Atoi(fields[3]) - if err != nil || r.uniques < 0 { - return fmt.Errorf("wrong input %q", fields[3]) + if r.uniques, err = parseStr("uniques", fields[3]); err != nil { + return err } return nil } +// parseStr helps UnmarshalText for string to positive int parsing +func parseStr(name, v string) (int, error) { + n, err := strconv.Atoi(v) + if err != nil || n < 0 { + return 0, fmt.Errorf("result.UnmarshalText %q: %v", name, err) + } + return n, nil +} + // UnmarshalJSON to a *result func (r *result) UnmarshalJSON(data []byte) error { var re struct { diff --git a/interfaces/log-parser/oop/textreport.go b/interfaces/log-parser/oop/textreport.go index 7404b0a..e51c2d2 100644 --- a/interfaces/log-parser/oop/textreport.go +++ b/interfaces/log-parser/oop/textreport.go @@ -37,7 +37,7 @@ func (s *textReport) digest(results iterator) error { var total result results.each(func(r result) { - total = total.add(r) + total = total.sum(r) write(w, "%s\t%s\t%d\t%d\n", r.domain, r.page, r.visits, r.uniques) })