summaryrefslogtreecommitdiffstats
path: root/pkg/gui/filetree
diff options
context:
space:
mode:
authorJesse Duffield <jessedduffield@gmail.com>2022-03-19 19:12:58 +1100
committerJesse Duffield <jessedduffield@gmail.com>2022-03-24 20:14:41 +1100
commit1b75ed37403ac2997cb6a5ede92d87f1a1eb96b1 (patch)
tree6a1b70201901725cd689c90f32a75fe34e77a603 /pkg/gui/filetree
parentbf4f06ab4e6ceefe388e0efefcc553526f3d96c2 (diff)
many more generics
Diffstat (limited to 'pkg/gui/filetree')
-rw-r--r--pkg/gui/filetree/commit_file_node.go33
-rw-r--r--pkg/gui/filetree/file_node.go34
-rw-r--r--pkg/gui/filetree/file_tree.go9
3 files changed, 28 insertions, 48 deletions
diff --git a/pkg/gui/filetree/commit_file_node.go b/pkg/gui/filetree/commit_file_node.go
index ac2057da5..ad794c0c2 100644
--- a/pkg/gui/filetree/commit_file_node.go
+++ b/pkg/gui/filetree/commit_file_node.go
@@ -1,6 +1,7 @@
package filetree
import (
+ "github.com/jesseduffield/generics/slices"
"github.com/jesseduffield/lazygit/pkg/commands/models"
"github.com/jesseduffield/lazygit/pkg/gui/types"
)
@@ -40,19 +41,15 @@ func (s *CommitFileNode) GetPath() string {
}
func (s *CommitFileNode) GetChildren() []INode {
- result := make([]INode, len(s.Children))
- for i, child := range s.Children {
- result[i] = child
- }
-
- return result
+ return slices.Map(s.Children, func(child *CommitFileNode) INode {
+ return child
+ })
}
func (s *CommitFileNode) SetChildren(children []INode) {
- castChildren := make([]*CommitFileNode, len(children))
- for i, child := range children {
- castChildren[i] = child.(*CommitFileNode)
- }
+ castChildren := slices.Map(children, func(child INode) *CommitFileNode {
+ return child.(*CommitFileNode)
+ })
s.Children = castChildren
}
@@ -102,12 +99,10 @@ func (s *CommitFileNode) EveryFile(test func(file *models.CommitFile) bool) bool
func (n *CommitFileNode) Flatten(collapsedPaths *CollapsedPaths) []*CommitFileNode {
results := flatten(n, collapsedPaths)
- nodes := make([]*CommitFileNode, len(results))
- for i, result := range results {
- nodes[i] = result.(*CommitFileNode)
- }
- return nodes
+ return slices.Map(results, func(result INode) *CommitFileNode {
+ return result.(*CommitFileNode)
+ })
}
func (node *CommitFileNode) GetNodeAtIndex(index int, collapsedPaths *CollapsedPaths) *CommitFileNode {
@@ -149,12 +144,10 @@ func (s *CommitFileNode) Compress() {
func (s *CommitFileNode) GetLeaves() []*CommitFileNode {
leaves := getLeaves(s)
- castLeaves := make([]*CommitFileNode, len(leaves))
- for i := range leaves {
- castLeaves[i] = leaves[i].(*CommitFileNode)
- }
- return castLeaves
+ return slices.Map(leaves, func(leaf INode) *CommitFileNode {
+ return leaf.(*CommitFileNode)
+ })
}
// extra methods
diff --git a/pkg/gui/filetree/file_node.go b/pkg/gui/filetree/file_node.go
index e73504321..69663b000 100644
--- a/pkg/gui/filetree/file_node.go
+++ b/pkg/gui/filetree/file_node.go
@@ -1,6 +1,7 @@
package filetree
import (
+ "github.com/jesseduffield/generics/slices"
"github.com/jesseduffield/lazygit/pkg/commands/models"
"github.com/jesseduffield/lazygit/pkg/gui/types"
)
@@ -42,19 +43,15 @@ func (s *FileNode) GetPath() string {
}
func (s *FileNode) GetChildren() []INode {
- result := make([]INode, len(s.Children))
- for i, child := range s.Children {
- result[i] = child
- }
-
- return result
+ return slices.Map(s.Children, func(child *FileNode) INode {
+ return child
+ })
}
func (s *FileNode) SetChildren(children []INode) {
- castChildren := make([]*FileNode, len(children))
- for i, child := range children {
- castChildren[i] = child.(*FileNode)
- }
+ castChildren := slices.Map(children, func(child INode) *FileNode {
+ return child.(*FileNode)
+ })
s.Children = castChildren
}
@@ -89,12 +86,9 @@ func (s *FileNode) Any(test func(node *FileNode) bool) bool {
func (n *FileNode) Flatten(collapsedPaths *CollapsedPaths) []*FileNode {
results := flatten(n, collapsedPaths)
- nodes := make([]*FileNode, len(results))
- for i, result := range results {
- nodes[i] = result.(*FileNode)
- }
-
- return nodes
+ return slices.Map(results, func(result INode) *FileNode {
+ return result.(*FileNode)
+ })
}
func (node *FileNode) GetNodeAtIndex(index int, collapsedPaths *CollapsedPaths) *FileNode {
@@ -146,12 +140,10 @@ func (node *FileNode) GetFilePathsMatching(test func(*models.File) bool) []strin
func (s *FileNode) GetLeaves() []*FileNode {
leaves := getLeaves(s)
- castLeaves := make([]*FileNode, len(leaves))
- for i := range leaves {
- castLeaves[i] = leaves[i].(*FileNode)
- }
- return castLeaves
+ return slices.Map(leaves, func(leaf INode) *FileNode {
+ return leaf.(*FileNode)
+ })
}
// extra methods
diff --git a/pkg/gui/filetree/file_tree.go b/pkg/gui/filetree/file_tree.go
index 47d7f32f2..d4bb8e596 100644
--- a/pkg/gui/filetree/file_tree.go
+++ b/pkg/gui/filetree/file_tree.go
@@ -3,6 +3,7 @@ package filetree
import (
"fmt"
+ "github.com/jesseduffield/generics/slices"
"github.com/jesseduffield/lazygit/pkg/commands/models"
"github.com/sirupsen/logrus"
)
@@ -85,13 +86,7 @@ func (self *FileTree) getFilesForDisplay() []*models.File {
}
func (self *FileTree) FilterFiles(test func(*models.File) bool) []*models.File {
- result := make([]*models.File, 0)
- for _, file := range self.getFiles() {
- if test(file) {
- result = append(result, file)
- }
- }
- return result
+ return slices.Filter(self.getFiles(), test)
}
func (self *FileTree) SetFilter(filter FileTreeDisplayFilter) {