Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/gohugoio/hugo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2019-08-01 11:19:19 +0300
committerGitHub <noreply@github.com>2019-08-01 11:19:19 +0300
commit53077b0da54906feee64a03612e5186043e17341 (patch)
treec99b1456485cfc2ed41f3a1b732e44c4acbc3061 /resources/page
parenta4f96a9d8c2d2da40796757f7e9a3023157abd2f (diff)
Merge pull request #6149 from bep/sort-caseinsensitive
Implement lexicographically string sorting
Diffstat (limited to 'resources/page')
-rw-r--r--resources/page/pagegroup.go2
-rw-r--r--resources/page/pages_sort.go22
2 files changed, 14 insertions, 10 deletions
diff --git a/resources/page/pagegroup.go b/resources/page/pagegroup.go
index 3d87d9014..fbb6e7e53 100644
--- a/resources/page/pagegroup.go
+++ b/resources/page/pagegroup.go
@@ -52,7 +52,7 @@ func (s mapKeyByInt) Less(i, j int) bool { return s.mapKeyValues[i].Int() < s.ma
type mapKeyByStr struct{ mapKeyValues }
func (s mapKeyByStr) Less(i, j int) bool {
- return s.mapKeyValues[i].String() < s.mapKeyValues[j].String()
+ return compare.LessStrings(s.mapKeyValues[i].String(), s.mapKeyValues[j].String())
}
func sortKeys(v []reflect.Value, order string) []reflect.Value {
diff --git a/resources/page/pages_sort.go b/resources/page/pages_sort.go
index 7b2a34a6a..b32d56ed8 100644
--- a/resources/page/pages_sort.go
+++ b/resources/page/pages_sort.go
@@ -18,6 +18,7 @@ import (
"github.com/gohugoio/hugo/resources/resource"
+ "github.com/gohugoio/hugo/compare"
"github.com/spf13/cast"
)
@@ -50,13 +51,14 @@ func (by pageBy) Sort(pages Pages) {
var DefaultPageSort = func(p1, p2 Page) bool {
if p1.Weight() == p2.Weight() {
if p1.Date().Unix() == p2.Date().Unix() {
- if p1.LinkTitle() == p2.LinkTitle() {
+ c := compare.Strings(p1.LinkTitle(), p2.LinkTitle())
+ if c == 0 {
if p1.File().IsZero() || p2.File().IsZero() {
return p1.File().IsZero()
}
- return p1.File().Filename() < p2.File().Filename()
+ return compare.LessStrings(p1.File().Filename(), p2.File().Filename())
}
- return (p1.LinkTitle() < p2.LinkTitle())
+ return c < 0
}
return p1.Date().Unix() > p2.Date().Unix()
}
@@ -76,12 +78,13 @@ var languagePageSort = func(p1, p2 Page) bool {
if p1.Language().Weight == p2.Language().Weight {
if p1.Date().Unix() == p2.Date().Unix() {
- if p1.LinkTitle() == p2.LinkTitle() {
+ c := compare.Strings(p1.LinkTitle(), p2.LinkTitle())
+ if c == 0 {
if !p1.File().IsZero() && !p2.File().IsZero() {
- return p1.File().Filename() < p2.File().Filename()
+ return compare.LessStrings(p1.File().Filename(), p2.File().Filename())
}
}
- return (p1.LinkTitle() < p2.LinkTitle())
+ return c < 0
}
return p1.Date().Unix() > p2.Date().Unix()
}
@@ -137,7 +140,7 @@ func (p Pages) ByTitle() Pages {
const key = "pageSort.ByTitle"
title := func(p1, p2 Page) bool {
- return p1.Title() < p2.Title()
+ return compare.LessStrings(p1.Title(), p2.Title())
}
pages, _ := spc.get(key, pageBy(title).Sort, p)
@@ -154,7 +157,7 @@ func (p Pages) ByLinkTitle() Pages {
const key = "pageSort.ByLinkTitle"
linkTitle := func(p1, p2 Page) bool {
- return p1.LinkTitle() < p2.LinkTitle()
+ return compare.LessStrings(p1.LinkTitle(), p2.LinkTitle())
}
pages, _ := spc.get(key, pageBy(linkTitle).Sort, p)
@@ -339,7 +342,8 @@ func (p Pages) ByParam(paramsKey interface{}) Pages {
s1 := cast.ToString(v1)
s2 := cast.ToString(v2)
- return s1 < s2
+ return compare.LessStrings(s1, s2)
+
}
pages, _ := spc.get(key, pageBy(paramsKeyComparator).Sort, p)