ref: 6aa3e512280e7b11d44ac6effb4e01e4e2c7af66
parent: c7083a5d36c040e2477f3c5b3f32dfb37a9c844d
author: Henry <[email protected]>
date: Sun Nov 24 17:10:20 EST 2013
Added PageSorter and PagesByDate
--- a/hugolib/index.go
+++ b/hugolib/index.go
@@ -45,6 +45,27 @@
return pages
}
+func (ip IndexedPages) PagesByDate(asc bool) Pages {
+ by := func(p1, p2 *Page) bool {
+ return p1.Date.Unix() < p2.Date.Unix()
+ }
+
+ if asc == false {
+ by = func(p1, p2 *Page) bool {
+ return p1.Date.Unix() > p2.Date.Unix()
+ }
+ }
+
+ ps := &PageSorter{
+ pages: ip.Pages(),
+ by: by,
+ }
+
+ sort.Sort(ps)
+
+ return ps.pages
+}
+
type Index map[string]IndexedPages
type IndexList map[string]Index
@@ -134,3 +155,13 @@
func (s *indexEntrySorter) Less(i, j int) bool {
return s.by(&s.indexEntrys[i], &s.indexEntrys[j])
}
+
+// Sorting pages
+type PageSorter struct {
+ pages Pages
+ by func(p1, p2 *Page) bool
+}
+
+func (ps *PageSorter) Len() int { return len(ps.pages) }
+func (ps *PageSorter) Swap(i, j int) { ps.pages[i], ps.pages[j] = ps.pages[j], ps.pages[i] }
+func (ps *PageSorter) Less(i, j int) bool { return ps.by(ps.pages[i], ps.pages[j]) }