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 15 10
|
||||||
learngoprogramming.com /courses 10 5
|
learngoprogramming.com /courses 10 5
|
||||||
learngoprogramming.com /articles 20 15
|
learngoprogramming.com /articles 20 15
|
||||||
|
@ -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()
|
|
||||||
*/
|
*/
|
||||||
|
@ -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
|
filter filterFunc
|
||||||
retrieve retrieveFunc
|
group groupFunc
|
||||||
filter filterFunc
|
output outputFunc
|
||||||
group groupFunc
|
|
||||||
write writeFunc
|
|
||||||
}
|
}
|
||||||
|
|
||||||
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
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -14,9 +14,11 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
)
|
)
|
||||||
|
|
||||||
func textReader(r io.Reader) ([]result, error) {
|
func textReader(r io.Reader) inputFunc {
|
||||||
in := bufio.NewScanner(r)
|
return func() ([]result, error) {
|
||||||
return parseText(in)
|
in := bufio.NewScanner(r)
|
||||||
|
return parseText(in)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func parseText(in *bufio.Scanner) ([]result, error) {
|
func parseText(in *bufio.Scanner) ([]result, error) {
|
||||||
|
@ -19,17 +19,19 @@ const (
|
|||||||
dashLength = 58
|
dashLength = 58
|
||||||
)
|
)
|
||||||
|
|
||||||
func textWriter(w io.Writer, results []result) error {
|
func textWriter(w io.Writer) outputFunc {
|
||||||
fmt.Fprintf(w, header, "DOMAINS", "PAGES", "VISITS", "UNIQUES")
|
return func(results []result) error {
|
||||||
fmt.Fprintln(w, strings.Repeat("-", dashLength))
|
fmt.Fprintf(w, header, "DOMAINS", "PAGES", "VISITS", "UNIQUES")
|
||||||
|
fmt.Fprintln(w, strings.Repeat("-", dashLength))
|
||||||
|
|
||||||
var total result
|
var total result
|
||||||
for _, r := range results {
|
for _, r := range results {
|
||||||
total = total.add(r)
|
total = total.add(r)
|
||||||
fmt.Fprintf(w, line, r.domain, r.page, r.visits, r.uniques)
|
fmt.Fprintf(w, line, r.domain, r.page, r.visits, r.uniques)
|
||||||
|
}
|
||||||
|
|
||||||
|
fmt.Fprintf(w, footer, "", total.visits, total.uniques)
|
||||||
|
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
fmt.Fprintf(w, footer, "", total.visits, total.uniques)
|
|
||||||
|
|
||||||
return nil
|
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user