module Cursor.Tree.Collapse ( treeCursorCloseCurrentForest , treeCursorOpenCurrentForest , treeCursorToggleCurrentForest ) where import qualified Data.List.NonEmpty as NE import Cursor.Tree.Types treeCursorOpenCurrentForest :: TreeCursor a b -> Maybe (TreeCursor a b) treeCursorOpenCurrentForest tc = case treeBelow tc of EmptyCForest -> Nothing ClosedForest ts -> Just $ tc {treeBelow = OpenForest $ NE.map makeCTree ts} OpenForest _ -> Nothing treeCursorCloseCurrentForest :: TreeCursor a b -> Maybe (TreeCursor a b) treeCursorCloseCurrentForest tc = case treeBelow tc of EmptyCForest -> Nothing ClosedForest _ -> Nothing OpenForest ts -> Just $ tc {treeBelow = ClosedForest $ NE.map rebuildCTree ts} treeCursorToggleCurrentForest :: TreeCursor a b -> Maybe (TreeCursor a b) treeCursorToggleCurrentForest tc = case treeBelow tc of EmptyCForest -> Nothing ClosedForest ts -> Just $ tc {treeBelow = OpenForest $ NE.map makeCTree ts} OpenForest ts -> Just $ tc {treeBelow = ClosedForest $ NE.map rebuildCTree ts}