diff options
author | Jesse Duffield <jessedduffield@gmail.com> | 2022-03-19 15:36:46 +1100 |
---|---|---|
committer | Jesse Duffield <jessedduffield@gmail.com> | 2022-03-24 20:14:41 +1100 |
commit | eda8f4a5d4302691d99efd066f9851809c984bc0 (patch) | |
tree | 0cb13f767ca52682a62d09314f8d9f2f2c1cd4a1 /pkg/gui/filetree | |
parent | c7a629c4401ae0d4aad06767c88ce1e9e418dbf3 (diff) |
lots more generics
Diffstat (limited to 'pkg/gui/filetree')
-rw-r--r-- | pkg/gui/filetree/inode.go | 16 |
1 files changed, 6 insertions, 10 deletions
diff --git a/pkg/gui/filetree/inode.go b/pkg/gui/filetree/inode.go index 7c8b9fb75..48cdc3be3 100644 --- a/pkg/gui/filetree/inode.go +++ b/pkg/gui/filetree/inode.go @@ -1,8 +1,6 @@ package filetree -import ( - "sort" -) +import "github.com/jesseduffield/generics/slices" type INode interface { IsNil() bool @@ -27,19 +25,17 @@ func sortChildren(node INode) { return } - children := node.GetChildren() - sortedChildren := make([]INode, len(children)) - copy(sortedChildren, children) + sortedChildren := slices.Clone(node.GetChildren()) - sort.Slice(sortedChildren, func(i, j int) bool { - if !sortedChildren[i].IsLeaf() && sortedChildren[j].IsLeaf() { + slices.SortFunc(sortedChildren, func(a, b INode) bool { + if !a.IsLeaf() && b.IsLeaf() { return true } - if sortedChildren[i].IsLeaf() && !sortedChildren[j].IsLeaf() { + if a.IsLeaf() && !b.IsLeaf() { return false } - return sortedChildren[i].GetPath() < sortedChildren[j].GetPath() + return a.GetPath() < b.GetPath() }) // TODO: think about making this in-place |