shithub: hugo

Download patch

ref: 091915c75d20c07384936fbc968e04f959ea7578
parent: 6472f158a43733583c77b2a0a3415847d342f2a6
author: Hanchen Wang <[email protected]>
date: Wed May 11 06:08:48 EDT 2016

hugolib: Add sort ByExpiryDate function

--- a/hugolib/pageSort.go
+++ b/hugolib/pageSort.go
@@ -158,6 +158,24 @@
 	return pages
 }
 
+// ByExpiryDate sorts the Pages by publish date and returns a copy.
+//
+// Adjacent invocactions on the same receiver will return a cached result.
+//
+// This may safely be executed  in parallel.
+func (p Pages) ByExpiryDate() Pages {
+
+	key := "pageSort.ByExpiryDate"
+
+	expDate := func(p1, p2 *Page) bool {
+		return p1.ExpiryDate.Unix() < p2.ExpiryDate.Unix()
+	}
+
+	pages, _ := spc.get(key, p, pageBy(expDate).Sort)
+
+	return pages
+}
+
 // ByLastmod sorts the Pages by the last modification date and returns a copy.
 //
 // Adjacent invocactions on the same receiver will return a cached result.
--- a/hugolib/pageSort_test.go
+++ b/hugolib/pageSort_test.go
@@ -68,6 +68,7 @@
 		{(Pages).ByLinkTitle, func(p Pages) bool { return p[0].LinkTitle() == "abl" }},
 		{(Pages).ByDate, func(p Pages) bool { return p[0].Date == d3 }},
 		{(Pages).ByPublishDate, func(p Pages) bool { return p[0].PublishDate == d3 }},
+		{(Pages).ByExpiryDate, func(p Pages) bool { return p[0].ExpiryDate == d3 }},
 		{(Pages).ByLastmod, func(p Pages) bool { return p[1].Lastmod == d2 }},
 		{(Pages).ByLength, func(p Pages) bool { return p[0].Content == "b_content" }},
 	} {
@@ -122,6 +123,7 @@
 		// make sure we compare apples and ... apples ...
 		pages[len(dates)-1-i].linkTitle = pages[i].Title + "l"
 		pages[len(dates)-1-i].PublishDate = dates[i]
+		pages[len(dates)-1-i].ExpiryDate = dates[i]
 		pages[len(dates)-1-i].Content = template.HTML(titles[i] + "_content")
 	}
 	lastLastMod := pages[2].Lastmod