From b7b64d43027f4f2be10e5e616cf03fe9be9477d8 Mon Sep 17 00:00:00 2001 From: Lars Karlslund Date: Wed, 17 May 2023 11:17:09 +0200 Subject: [PATCH] Added sort and limit primitives to object slices --- modules/engine/objectslice.go | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/modules/engine/objectslice.go b/modules/engine/objectslice.go index a43d8ef..c5adc94 100644 --- a/modules/engine/objectslice.go +++ b/modules/engine/objectslice.go @@ -196,3 +196,22 @@ func (os *ObjectSlice) Sort(attr Attribute, reverse bool) { sort.Slice(os.objects, orderf) } + +func (os *ObjectSlice) SortFunc(lessthan func(o, o2 *Object) bool) { + sort.Slice(os.objects, func(i int, j int) bool { + return lessthan(os.objects[i], os.objects[j]) + }) +} + +func (os *ObjectSlice) Limit(count int) { + if count >= 0 { + if count > len(os.objects) { + os.objects = os.objects[:count] + } + } else { + count = -count + if count > len(os.objects) { + os.objects = os.objects[len(os.objects)-count:] + } + } +}