51 lines
1.0 KiB
Go
51 lines
1.0 KiB
Go
// Copyright © 2018 Inanc Gumus
|
|
// Learn Go Programming Course
|
|
// License: https://creativecommons.org/licenses/by-nc-sa/4.0/
|
|
//
|
|
// For more tutorials : https://learngoprogramming.com
|
|
// In-person training : https://www.linkedin.com/in/inancgumus/
|
|
// Follow me on twitter: https://twitter.com/inancgumus
|
|
|
|
package report
|
|
|
|
import (
|
|
"fmt"
|
|
"io"
|
|
"text/tabwriter"
|
|
|
|
"github.com/inancgumus/learngo/logparser/v6/logly/record"
|
|
)
|
|
|
|
// Text generates a text report.
|
|
func Text(w io.Writer, rs []record.Record) error {
|
|
tw := tabwriter.NewWriter(
|
|
w,
|
|
0, // minWidth
|
|
4, // tabWidth
|
|
4, // padding
|
|
' ', // padChar
|
|
0, // flags
|
|
)
|
|
|
|
fmt.Fprintf(tw, "DOMAINS\tPAGES\tVISITS\tUNIQUES\n")
|
|
fmt.Fprintf(tw, "-------\t-----\t------\t-------\n")
|
|
|
|
var total record.Record
|
|
for _, r := range rs {
|
|
total.Sum(r)
|
|
|
|
fmt.Fprintf(tw, "%s\t%s\t%d\t%d\n",
|
|
r.Domain, r.Page,
|
|
r.Visits, r.Uniques,
|
|
)
|
|
}
|
|
|
|
fmt.Fprintf(tw, "\t\t\t\n")
|
|
fmt.Fprintf(tw, "%s\t%s\t%d\t%d\n",
|
|
"TOTAL", "",
|
|
total.Visits, total.Uniques,
|
|
)
|
|
|
|
return tw.Flush()
|
|
}
|