summaryrefslogtreecommitdiff
path: root/top/main.go
diff options
context:
space:
mode:
Diffstat (limited to 'top/main.go')
-rw-r--r--top/main.go79
1 files changed, 0 insertions, 79 deletions
diff --git a/top/main.go b/top/main.go
deleted file mode 100644
index 6632b8e..0000000
--- a/top/main.go
+++ /dev/null
@@ -1,79 +0,0 @@
-package main
-
-import (
- "bufio"
- "encoding/gob"
- "fmt"
- "log"
- "os"
- "regexp"
- "sort"
-)
-
-const (
- logfile = `/home/demon/irclogs/RusNet/#lor.log`
- gobfile = `score.gob`
-)
-
-var (
- re = regexp.MustCompile(`[^ ]+ <.([^ ]+)> .*`)
- score = make(map[string]int)
-)
-
-type Score struct {
- Nick string
- Count int
-}
-
-type Scores []Score
-
-func (s Scores) Len() int { return len(s) }
-func (s Scores) Swap(i, j int) { s[i], s[j] = s[j], s[i] }
-func (s Scores) Less(i, j int) bool { return s[i].Count < s[j].Count }
-
-func newScore(m map[string]int) (s Scores) {
- for k, v := range m {
- s = append(s, Score{
- Nick: k,
- Count: v,
- })
- }
- sort.Sort(sort.Reverse(s))
- if len(s) > 10 {
- s = s[:10]
- }
- return
-}
-
-func main() {
- fd, err := os.Open(logfile)
- if err != nil {
- log.Fatal(err)
- }
- defer fd.Close()
-
- scanner := bufio.NewScanner(fd)
- for scanner.Scan() {
- m := re.FindAllStringSubmatch(scanner.Text(), -1)
- if m != nil {
- user := m[0][1]
- score[user]++
- }
- }
- if err := scanner.Err(); err != nil {
- log.Fatal(err)
- }
-
- for n, s := range newScore(score) {
- fmt.Printf("%2d %v (%v)\n", n+1, s.Nick, s.Count)
- }
-
- gd, err := os.Create(gobfile)
- if err != nil {
- log.Fatal(err)
- }
- defer gd.Close()
-
- g := gob.NewEncoder(gd)
- g.Encode(score)
-}