wiki/recent.go

47 lines
614 B
Go
Raw Normal View History

2019-03-03 07:30:04 +00:00
package main
import (
"time"
)
func combine(x, y Change) Change {
x.Count++
if x.Body == "" {
x.Body = y.Body
} else {
x.Body += " " + y.Body
}
x.EndDate = y.Date
return x
}
func changeEqual(x, y Change) bool {
return x.Page == y.Page && x.Date.Truncate(24*time.Hour) == y.Date.Truncate(24*time.Hour)
}
func groupRecentChanges(changes []Change) int {
if len(changes) <= 1 {
return 0
}
f := len(changes) - 1
i := f - 1
for {
if changeEqual(changes[f], changes[i]) {
changes[f] = combine(changes[f], changes[i])
} else {
f--
}
if i <= 0 {
break
}
i--
}
return f
}