github.com/expr-lang/expr@v1.16.9/vm/runtime/sort.go (about) 1 package runtime 2 3 type SortBy struct { 4 Desc bool 5 Array []any 6 Values []any 7 } 8 9 func (s *SortBy) Len() int { 10 return len(s.Array) 11 } 12 13 func (s *SortBy) Swap(i, j int) { 14 s.Array[i], s.Array[j] = s.Array[j], s.Array[i] 15 s.Values[i], s.Values[j] = s.Values[j], s.Values[i] 16 } 17 18 func (s *SortBy) Less(i, j int) bool { 19 a, b := s.Values[i], s.Values[j] 20 if s.Desc { 21 return Less(b, a) 22 } 23 return Less(a, b) 24 } 25 26 type Sort struct { 27 Desc bool 28 Array []any 29 } 30 31 func (s *Sort) Len() int { 32 return len(s.Array) 33 } 34 35 func (s *Sort) Swap(i, j int) { 36 s.Array[i], s.Array[j] = s.Array[j], s.Array[i] 37 } 38 39 func (s *Sort) Less(i, j int) bool { 40 a, b := s.Array[i], s.Array[j] 41 if s.Desc { 42 return Less(b, a) 43 } 44 return Less(a, b) 45 }