mirror of
				https://github.com/gohugoio/hugo.git
				synced 2024-05-11 05:54:58 +00:00 
			
		
		
		
	Merge pull request #6149 from bep/sort-caseinsensitive
Implement lexicographically string sorting
This commit is contained in:
		
				
					committed by
					
						
						GitHub
					
				
			
			
				
	
			
			
			
						parent
						
							a4f96a9d8c
						
					
				
				
					commit
					53077b0da5
				
			@@ -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 {
 | 
			
		||||
 
 | 
			
		||||
@@ -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)
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user