shithub: hugo

Download patch

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]) }