cursor-0.1.0.0: src/Cursor/Simple/Forest.hs
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE DeriveFunctor #-}
module Cursor.Simple.Forest
( ForestCursor
, makeForestCursor
, rebuildForestCursor
, FC.drawForestCursor
, mapForestCursor
, FC.forestCursorListCursorL
, FC.forestCursorSelectedTreeL
, forestCursorSelectPrevTreeCursor
, forestCursorSelectNextTreeCursor
, forestCursorSelectFirstTreeCursor
, forestCursorSelectLastTreeCursor
, forestCursorSelectPrev
, forestCursorSelectNext
, forestCursorSelectPrevOnSameLevel
, forestCursorSelectNextOnSameLevel
, forestCursorSelectFirst
, forestCursorSelectLast
, forestCursorSelectAbove
, forestCursorSelectBelowAtPos
, forestCursorSelectBelowAtStart
, forestCursorSelectBelowAtEnd
, FC.forestCursorOpenCurrentForest
, FC.forestCursorCloseCurrentForest
, FC.forestCursorToggleCurrentForest
, FC.forestCursorOpenCurrentForestRecursively
, FC.forestCursorToggleCurrentForestRecursively
, FC.forestCursorSelection
, forestCursorSelectIndex
, FC.forestCursorInsertEntireTree
, forestCursorInsertAndSelectTreeCursor
, FC.forestCursorAppendEntireTree
, forestCursorAppendAndSelectTreeCursor
, FC.forestCursorInsertTree
, FC.forestCursorAppendTree
, forestCursorInsertAndSelectTree
, forestCursorAppendAndSelectTree
, FC.forestCursorInsert
, FC.forestCursorAppend
, forestCursorInsertAndSelect
, forestCursorAppendAndSelect
, FC.forestCursorAddChildTreeToNodeAtPos
, FC.forestCursorAddChildTreeToNodeAtStart
, FC.forestCursorAddChildTreeToNodeAtEnd
, FC.forestCursorAddChildToNodeAtPos
, FC.forestCursorAddChildToNodeAtStart
, FC.forestCursorAddChildToNodeAtEnd
, forestCursorRemoveElemAndSelectPrev
, forestCursorDeleteElemAndSelectNext
, forestCursorRemoveElem
, forestCursorDeleteElem
, forestCursorRemoveSubTreeAndSelectPrev
, forestCursorDeleteSubTreeAndSelectNext
, forestCursorRemoveSubTree
, forestCursorDeleteSubTree
, forestCursorAddRoot
, FC.forestCursorSwapPrev
, FC.forestCursorSwapNext
, forestCursorPromoteElem
, forestCursorPromoteSubTree
, forestCursorDemoteElem
, forestCursorDemoteSubTree
, FC.forestCursorDemoteElemUnder
, FC.forestCursorDemoteSubTreeUnder
, FC.CTree(..)
, FC.makeCTree
, FC.cTree
, FC.rebuildCTree
, FC.CForest(..)
, FC.makeCForest
, FC.cForest
, FC.rebuildCForest
) where
import Data.Validity.Tree ()
import Data.List.NonEmpty (NonEmpty)
import Data.Tree
import qualified Cursor.Forest as FC
import Cursor.Simple.Tree
import Cursor.Types
type ForestCursor a = FC.ForestCursor a a
makeForestCursor :: NonEmpty (CTree a) -> ForestCursor a
makeForestCursor = FC.makeForestCursor id
rebuildForestCursor :: ForestCursor a -> NonEmpty (CTree a)
rebuildForestCursor = FC.rebuildForestCursor id
mapForestCursor :: (a -> b) -> ForestCursor a -> ForestCursor b
mapForestCursor f = FC.mapForestCursor f f
forestCursorSelectPrevTreeCursor :: ForestCursor a -> Maybe (ForestCursor a)
forestCursorSelectPrevTreeCursor = FC.forestCursorSelectPrevTreeCursor id id
forestCursorSelectNextTreeCursor :: ForestCursor a -> Maybe (ForestCursor a)
forestCursorSelectNextTreeCursor = FC.forestCursorSelectNextTreeCursor id id
forestCursorSelectFirstTreeCursor :: ForestCursor a -> ForestCursor a
forestCursorSelectFirstTreeCursor = FC.forestCursorSelectFirstTreeCursor id id
forestCursorSelectLastTreeCursor :: ForestCursor a -> ForestCursor a
forestCursorSelectLastTreeCursor = FC.forestCursorSelectLastTreeCursor id id
forestCursorSelectNext :: ForestCursor a -> Maybe (ForestCursor a)
forestCursorSelectNext = FC.forestCursorSelectNext id id
forestCursorSelectPrev :: ForestCursor a -> Maybe (ForestCursor a)
forestCursorSelectPrev = FC.forestCursorSelectPrev id id
forestCursorSelectNextOnSameLevel :: ForestCursor a -> Maybe (ForestCursor a)
forestCursorSelectNextOnSameLevel = FC.forestCursorSelectNextOnSameLevel id id
forestCursorSelectPrevOnSameLevel :: ForestCursor a -> Maybe (ForestCursor a)
forestCursorSelectPrevOnSameLevel = FC.forestCursorSelectPrevOnSameLevel id id
forestCursorSelectFirst :: ForestCursor a -> ForestCursor a
forestCursorSelectFirst = FC.forestCursorSelectFirst id id
forestCursorSelectLast :: ForestCursor a -> ForestCursor a
forestCursorSelectLast = FC.forestCursorSelectLast id id
forestCursorSelectAbove :: ForestCursor a -> Maybe (ForestCursor a)
forestCursorSelectAbove = FC.forestCursorSelectAbove id id
forestCursorSelectBelowAtPos :: Int -> ForestCursor a -> Maybe (ForestCursor a)
forestCursorSelectBelowAtPos = FC.forestCursorSelectBelowAtPos id id
forestCursorSelectBelowAtStart :: ForestCursor a -> Maybe (ForestCursor a)
forestCursorSelectBelowAtStart = FC.forestCursorSelectBelowAtStart id id
forestCursorSelectBelowAtEnd :: ForestCursor a -> Maybe (ForestCursor a)
forestCursorSelectBelowAtEnd = FC.forestCursorSelectBelowAtEnd id id
forestCursorSelectIndex :: Int -> ForestCursor a -> Maybe (ForestCursor a)
forestCursorSelectIndex = FC.forestCursorSelectIndex id id
forestCursorInsertAndSelectTreeCursor ::
TreeCursor a -> ForestCursor a -> ForestCursor a
forestCursorInsertAndSelectTreeCursor =
FC.forestCursorInsertAndSelectTreeCursor id
forestCursorAppendAndSelectTreeCursor ::
TreeCursor a -> ForestCursor a -> ForestCursor a
forestCursorAppendAndSelectTreeCursor =
FC.forestCursorAppendAndSelectTreeCursor id
forestCursorInsertAndSelectTree :: Tree a -> ForestCursor a -> ForestCursor a
forestCursorInsertAndSelectTree = FC.forestCursorInsertAndSelectTree id id
forestCursorAppendAndSelectTree :: Tree a -> ForestCursor a -> ForestCursor a
forestCursorAppendAndSelectTree = FC.forestCursorAppendAndSelectTree id id
forestCursorInsertAndSelect :: a -> ForestCursor a -> ForestCursor a
forestCursorInsertAndSelect = FC.forestCursorInsertAndSelect id id
forestCursorAppendAndSelect :: a -> ForestCursor a -> ForestCursor a
forestCursorAppendAndSelect = FC.forestCursorAppendAndSelect id id
forestCursorRemoveElemAndSelectPrev ::
ForestCursor a -> Maybe (DeleteOrUpdate (ForestCursor a))
forestCursorRemoveElemAndSelectPrev = FC.forestCursorRemoveElemAndSelectPrev id
forestCursorDeleteElemAndSelectNext ::
ForestCursor a -> Maybe (DeleteOrUpdate (ForestCursor a))
forestCursorDeleteElemAndSelectNext = FC.forestCursorDeleteElemAndSelectNext id
forestCursorRemoveElem :: ForestCursor a -> DeleteOrUpdate (ForestCursor a)
forestCursorRemoveElem = FC.forestCursorRemoveElem id
forestCursorDeleteElem :: ForestCursor a -> DeleteOrUpdate (ForestCursor a)
forestCursorDeleteElem = FC.forestCursorDeleteElem id
forestCursorRemoveSubTreeAndSelectPrev ::
ForestCursor a -> Maybe (DeleteOrUpdate (ForestCursor a))
forestCursorRemoveSubTreeAndSelectPrev =
FC.forestCursorRemoveSubTreeAndSelectPrev id
forestCursorDeleteSubTreeAndSelectNext ::
ForestCursor a -> Maybe (DeleteOrUpdate (ForestCursor a))
forestCursorDeleteSubTreeAndSelectNext =
FC.forestCursorDeleteSubTreeAndSelectNext id
forestCursorRemoveSubTree :: ForestCursor a -> DeleteOrUpdate (ForestCursor a)
forestCursorRemoveSubTree = FC.forestCursorRemoveSubTree id
forestCursorDeleteSubTree :: ForestCursor a -> DeleteOrUpdate (ForestCursor a)
forestCursorDeleteSubTree = FC.forestCursorDeleteSubTree id
forestCursorAddRoot :: ForestCursor a -> a -> TreeCursor a
forestCursorAddRoot = FC.forestCursorAddRoot id id
forestCursorPromoteElem :: ForestCursor a -> Maybe (ForestCursor a)
forestCursorPromoteElem = FC.forestCursorPromoteElem id id
forestCursorPromoteSubTree :: ForestCursor a -> Maybe (ForestCursor a)
forestCursorPromoteSubTree = FC.forestCursorPromoteSubTree id id
forestCursorDemoteElem :: ForestCursor a -> Maybe (ForestCursor a)
forestCursorDemoteElem = FC.forestCursorDemoteElem id id
forestCursorDemoteSubTree :: ForestCursor a -> Maybe (ForestCursor a)
forestCursorDemoteSubTree = FC.forestCursorDemoteSubTree id id