summaryrefslogtreecommitdiffstats
path: root/tpl/collections/sort.go
diff options
context:
space:
mode:
Diffstat (limited to 'tpl/collections/sort.go')
-rw-r--r--tpl/collections/sort.go12
1 files changed, 7 insertions, 5 deletions
diff --git a/tpl/collections/sort.go b/tpl/collections/sort.go
index 206a19cb5..1ab4409b6 100644
--- a/tpl/collections/sort.go
+++ b/tpl/collections/sort.go
@@ -31,21 +31,23 @@ func (ns *Namespace) Sort(seq interface{}, args ...interface{}) (interface{}, er
return nil, errors.New("sequence must be provided")
}
- seqv := reflect.ValueOf(seq)
- seqv, isNil := indirect(seqv)
+ seqv, isNil := indirect(reflect.ValueOf(seq))
if isNil {
return nil, errors.New("can't iterate over a nil value")
}
+ var sliceType reflect.Type
switch seqv.Kind() {
- case reflect.Array, reflect.Slice, reflect.Map:
- // ok
+ case reflect.Array, reflect.Slice:
+ sliceType = seqv.Type()
+ case reflect.Map:
+ sliceType = reflect.SliceOf(seqv.Type().Elem())
default:
return nil, errors.New("can't sort " + reflect.ValueOf(seq).Type().String())
}
// Create a list of pairs that will be used to do the sort
- p := pairList{SortAsc: true, SliceType: reflect.SliceOf(seqv.Type().Elem())}
+ p := pairList{SortAsc: true, SliceType: sliceType}
p.Pairs = make([]pair, seqv.Len())
var sortByField string