50 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			50 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| // For more tutorials: https://blog.learngoprogramming.com
 | |
| //
 | |
| // Copyright © 2018 Inanc Gumus
 | |
| // Learn Go Programming Course
 | |
| // License: https://creativecommons.org/licenses/by-nc-sa/4.0/
 | |
| //
 | |
| 
 | |
| package main
 | |
| 
 | |
| import (
 | |
| 	"fmt"
 | |
| 	"sort"
 | |
| 	"strings"
 | |
| )
 | |
| 
 | |
| // summarize summarizes and prints the parsing result
 | |
| // + violation: accesses the parsing internals: p.domains + p.sum + p.total
 | |
| // + give it the []result only.
 | |
| // + let it calculate the total.
 | |
| const (
 | |
| 
 | |
| 	//          DOMAINS PAGES VISITS UNIQUES
 | |
| 	//             ^      ^     ^    ^
 | |
| 	//             |      |     |    |
 | |
| 	header     = "%-25s %-10s %10s %10s\n"
 | |
| 	line       = "%-25s %-10s %10d %10d\n"
 | |
| 	footer     = "\n%-36s %10d %10d\n" // -> "" VISITS UNIQUES
 | |
| 	dash       = "-"
 | |
| 	dashLength = 58
 | |
| )
 | |
| 
 | |
| // summarize summarizes and prints the parsing result
 | |
| func summarize(res []result) {
 | |
| 	// sort.Strings(p.domains)
 | |
| 	sort.Slice(res, func(i, j int) bool {
 | |
| 		return res[i].domain <= res[j].domain
 | |
| 	})
 | |
| 
 | |
| 	fmt.Printf(header, "DOMAIN", "PAGES", "VISITS", "UNIQUES")
 | |
| 	fmt.Println(strings.Repeat("-", dashLength))
 | |
| 
 | |
| 	var total result
 | |
| 
 | |
| 	for _, r := range res {
 | |
| 		total = addResult(total, r)
 | |
| 		fmt.Printf(line, r.domain, r.page, r.visits, r.uniques)
 | |
| 	}
 | |
| 	fmt.Printf(footer, "TOTAL", total.visits, total.uniques)
 | |
| }
 |