{-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE RecordWildCards #-} {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE DeriveFunctor #-} module Cursor.Simple.List.NonEmpty ( NonEmptyCursor , NEC.nonEmptyCursorPrev , NEC.nonEmptyCursorCurrent , NEC.nonEmptyCursorNext , makeNonEmptyCursor , makeNonEmptyCursorWithSelection , NEC.singletonNonEmptyCursor , rebuildNonEmptyCursor , mapNonEmptyCursor , NEC.nonEmptyCursorElemL , nonEmptyCursorSelectPrev , nonEmptyCursorSelectNext , nonEmptyCursorSelectFirst , nonEmptyCursorSelectLast , NEC.nonEmptyCursorSelection , nonEmptyCursorSelectIndex , NEC.nonEmptyCursorInsert , NEC.nonEmptyCursorAppend , nonEmptyCursorInsertAndSelect , nonEmptyCursorAppendAndSelect , NEC.nonEmptyCursorInsertAtStart , NEC.nonEmptyCursorAppendAtEnd , nonEmptyCursorInsertAtStartAndSelect , nonEmptyCursorAppendAtEndAndSelect , nonEmptyCursorRemoveElemAndSelectPrev , nonEmptyCursorDeleteElemAndSelectNext , nonEmptyCursorRemoveElem , nonEmptyCursorDeleteElem , nonEmptyCursorSearch , nonEmptyCursorSelectOrAdd ) where import Data.List.NonEmpty (NonEmpty(..)) import Cursor.Types import qualified Cursor.List.NonEmpty as NEC -- | A 'nonempty list' cursor type NonEmptyCursor a = NEC.NonEmptyCursor a a makeNonEmptyCursor :: NonEmpty a -> NonEmptyCursor a makeNonEmptyCursor = NEC.makeNonEmptyCursor id makeNonEmptyCursorWithSelection :: Int -> NonEmpty a -> Maybe (NonEmptyCursor a) makeNonEmptyCursorWithSelection = NEC.makeNonEmptyCursorWithSelection id rebuildNonEmptyCursor :: NonEmptyCursor a -> NonEmpty a rebuildNonEmptyCursor = NEC.rebuildNonEmptyCursor id mapNonEmptyCursor :: (a -> b) -> NonEmptyCursor a -> NonEmptyCursor b mapNonEmptyCursor f = NEC.mapNonEmptyCursor f f nonEmptyCursorSelectPrev :: NonEmptyCursor a -> Maybe (NonEmptyCursor a) nonEmptyCursorSelectPrev = NEC.nonEmptyCursorSelectPrev id id nonEmptyCursorSelectNext :: NonEmptyCursor a -> Maybe (NonEmptyCursor a) nonEmptyCursorSelectNext = NEC.nonEmptyCursorSelectNext id id nonEmptyCursorSelectFirst :: NonEmptyCursor a -> NonEmptyCursor a nonEmptyCursorSelectFirst = NEC.nonEmptyCursorSelectFirst id id nonEmptyCursorSelectLast :: NonEmptyCursor a -> NonEmptyCursor a nonEmptyCursorSelectLast = NEC.nonEmptyCursorSelectLast id id nonEmptyCursorSelectIndex :: Int -> NonEmptyCursor a -> Maybe (NonEmptyCursor a) nonEmptyCursorSelectIndex = NEC.nonEmptyCursorSelectIndex id id nonEmptyCursorInsertAndSelect :: a -> NonEmptyCursor a -> NonEmptyCursor a nonEmptyCursorInsertAndSelect = NEC.nonEmptyCursorInsertAndSelect id nonEmptyCursorAppendAndSelect :: a -> NonEmptyCursor a -> NonEmptyCursor a nonEmptyCursorAppendAndSelect = NEC.nonEmptyCursorAppendAndSelect id nonEmptyCursorInsertAtStartAndSelect :: a -> NonEmptyCursor a -> NonEmptyCursor a nonEmptyCursorInsertAtStartAndSelect = NEC.nonEmptyCursorInsertAtStartAndSelect id id nonEmptyCursorAppendAtEndAndSelect :: a -> NonEmptyCursor a -> NonEmptyCursor a nonEmptyCursorAppendAtEndAndSelect = NEC.nonEmptyCursorAppendAtEndAndSelect id id nonEmptyCursorRemoveElemAndSelectPrev :: NonEmptyCursor a -> Maybe (DeleteOrUpdate (NonEmptyCursor a)) nonEmptyCursorRemoveElemAndSelectPrev = NEC.nonEmptyCursorRemoveElemAndSelectPrev id nonEmptyCursorDeleteElemAndSelectNext :: NonEmptyCursor a -> Maybe (DeleteOrUpdate (NonEmptyCursor a)) nonEmptyCursorDeleteElemAndSelectNext = NEC.nonEmptyCursorDeleteElemAndSelectNext id nonEmptyCursorRemoveElem :: NonEmptyCursor a -> DeleteOrUpdate (NonEmptyCursor a) nonEmptyCursorRemoveElem = NEC.nonEmptyCursorRemoveElem id nonEmptyCursorDeleteElem :: NonEmptyCursor a -> DeleteOrUpdate (NonEmptyCursor a) nonEmptyCursorDeleteElem = NEC.nonEmptyCursorDeleteElem id nonEmptyCursorSearch :: (a -> Bool) -> NonEmptyCursor a -> Maybe (NonEmptyCursor a) nonEmptyCursorSearch = NEC.nonEmptyCursorSearch id id nonEmptyCursorSelectOrAdd :: (a -> Bool) -> a -> NonEmptyCursor a -> NonEmptyCursor a nonEmptyCursorSelectOrAdd = NEC.nonEmptyCursorSelectOrAdd id id