commit d8907e9

delthas  ·  2024-07-16 18:20:00 +0000 UTC
parent 8b9c2f0
Fix sorting members with multiple prefixes
1 files changed,  +13, -9
+13, -9
 1@@ -480,17 +480,21 @@ func (m members) Len() int {
 2 }
 3 
 4 func (m members) Less(i, j int) bool {
 5-	if m.m[i].PowerLevel != "" && m.m[j].PowerLevel == "" {
 6-		return true
 7-	} else if m.m[i].PowerLevel == "" && m.m[j].PowerLevel != "" {
 8-		return false
 9-	} else if m.m[i].PowerLevel != m.m[j].PowerLevel {
10-		pi := strings.IndexByte(m.prefixes, m.m[i].PowerLevel[0])
11-		pj := strings.IndexByte(m.prefixes, m.m[j].PowerLevel[0])
12-		return pi < pj
13+	var pi, pj int
14+	if m.m[i].PowerLevel != "" {
15+		pi = strings.IndexByte(m.prefixes, m.m[i].PowerLevel[0])
16+	} else {
17+		pi = len(m.prefixes)
18+	}
19+	if m.m[j].PowerLevel != "" {
20+		pj = strings.IndexByte(m.prefixes, m.m[j].PowerLevel[0])
21 	} else {
22-		return strings.ToLower(m.m[i].Name.Name) < strings.ToLower(m.m[j].Name.Name)
23+		pj = len(m.prefixes)
24+	}
25+	if pi != pj {
26+		return pi < pj
27 	}
28+	return strings.ToLower(m.m[i].Name.Name) < strings.ToLower(m.m[j].Name.Name)
29 }
30 
31 func (m members) Swap(i, j int) {