diff --git a/hugolib/pageSort.go b/hugolib/pageSort.go index 40c18e4c6..248e3ed5d 100644 --- a/hugolib/pageSort.go +++ b/hugolib/pageSort.go @@ -158,6 +158,24 @@ func (p Pages) ByPublishDate() Pages { 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. diff --git a/hugolib/pageSort_test.go b/hugolib/pageSort_test.go index f3fecb0be..7f0e89091 100644 --- a/hugolib/pageSort_test.go +++ b/hugolib/pageSort_test.go @@ -68,6 +68,7 @@ func TestSortByN(t *testing.T) { {(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 @@ func setSortVals(dates [3]time.Time, titles [3]string, weights [3]int, pages Pag // 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