1
0
mirror of https://github.com/gohugoio/hugo.git synced 2024-05-11 05:54:58 +00:00

Add sort and grouping functions for publish date and param of Page

`GroupBy` is modified to allow it to receive a method name argument for
example `Type` as its first argument. It is only allowed to call with
a method which takes no arguments and returns a result or a pair of
a result and an error.

The functions discussed at #443 are also added

- `ByPublishDate`: Order contents by `PublishDate` front matter variable
- `GroupByPublishDate(format, order)`: Group contents by `PublishDate`
  front matter variable formatted in string like `GroupByDate`
- `GroupByParam(key, order)`: Group contents by `Param` front matter
  variable specified by `key` argument
- `GroupByParamDate(key, format, order)`: Group contents by `Param`
  front matter variable specified by `key` argument and formatted in
  string like `GroupByDate`. It's effective against `time.Time` type
  front matter variable
This commit is contained in:
Tatsushi Demachi
2014-10-18 00:10:19 +09:00
committed by spf13
parent d013edb7f8
commit 5e28606b84
4 changed files with 308 additions and 17 deletions

View File

@@ -96,6 +96,15 @@ func (p Pages) ByDate() Pages {
return p
}
func (p Pages) ByPublishDate() Pages {
pubDate := func(p1, p2 *Page) bool {
return p1.PublishDate.Unix() < p2.PublishDate.Unix()
}
PageBy(pubDate).Sort(p)
return p
}
func (p Pages) ByLength() Pages {
length := func(p1, p2 *Page) bool {
return len(p1.Content) < len(p2.Content)