getAbsPositionNode determines the selected screen cursor's location in the file tree, returning the selected FileNode.
(filterRegex *regexp.Regexp)
| 302 | |
| 303 | // getAbsPositionNode determines the selected screen cursor's location in the file tree, returning the selected FileNode. |
| 304 | func (vm *FileTreeViewModel) getAbsPositionNode(filterRegex *regexp.Regexp) (node *filetree.FileNode) { |
| 305 | var visitor func(*filetree.FileNode) error |
| 306 | var evaluator func(*filetree.FileNode) bool |
| 307 | var dfsCounter int |
| 308 | |
| 309 | visitor = func(curNode *filetree.FileNode) error { |
| 310 | if dfsCounter == vm.TreeIndex { |
| 311 | node = curNode |
| 312 | } |
| 313 | dfsCounter++ |
| 314 | return nil |
| 315 | } |
| 316 | |
| 317 | evaluator = func(curNode *filetree.FileNode) bool { |
| 318 | regexMatch := true |
| 319 | if filterRegex != nil { |
| 320 | match := filterRegex.Find([]byte(curNode.Path())) |
| 321 | regexMatch = match != nil |
| 322 | } |
| 323 | return !curNode.Parent.Data.ViewInfo.Collapsed && !curNode.Data.ViewInfo.Hidden && regexMatch |
| 324 | } |
| 325 | |
| 326 | err := vm.ModelTree.VisitDepthParentFirst(visitor, evaluator) |
| 327 | if err != nil { |
| 328 | logrus.Errorf("unable to get node position: %+v", err) |
| 329 | } |
| 330 | |
| 331 | return node |
| 332 | } |
| 333 | |
| 334 | // ToggleCollapse will collapse/expand the selected FileNode. |
| 335 | func (vm *FileTreeViewModel) ToggleCollapse(filterRegex *regexp.Regexp) error { |
no test coverage detected