diff options
author | Jesse Duffield <jessedduffield@gmail.com> | 2022-03-19 19:12:58 +1100 |
---|---|---|
committer | Jesse Duffield <jessedduffield@gmail.com> | 2022-03-24 20:14:41 +1100 |
commit | 1b75ed37403ac2997cb6a5ede92d87f1a1eb96b1 (patch) | |
tree | 6a1b70201901725cd689c90f32a75fe34e77a603 /pkg/gui/filetree | |
parent | bf4f06ab4e6ceefe388e0efefcc553526f3d96c2 (diff) |
many more generics
Diffstat (limited to 'pkg/gui/filetree')
-rw-r--r-- | pkg/gui/filetree/commit_file_node.go | 33 | ||||
-rw-r--r-- | pkg/gui/filetree/file_node.go | 34 | ||||
-rw-r--r-- | pkg/gui/filetree/file_tree.go | 9 |
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) { |