module Gamgine.Zipper where
import qualified Data.List as L
import qualified Data.List.Zipper as LZ
before :: LZ.Zipper a -> LZ.Zipper a
before :: forall a. Zipper a -> Zipper a
before (LZ.Zip [] [a]
_) = Zipper a
forall a. Zipper a
LZ.empty
before (LZ.Zip (a
a:[a]
ls) [a]
_) = [a] -> [a] -> Zipper a
forall a. [a] -> [a] -> Zipper a
LZ.Zip [a]
ls [a
a]
after :: LZ.Zipper a -> LZ.Zipper a
after :: forall a. Zipper a -> Zipper a
after (LZ.Zip [a]
_ []) = Zipper a
forall a. Zipper a
LZ.empty
after (LZ.Zip [a]
_ (a
a:[a]
rs)) = [a] -> [a] -> Zipper a
forall a. [a] -> [a] -> Zipper a
LZ.Zip [] [a]
rs
current :: LZ.Zipper a -> a
current :: forall a. Zipper a -> a
current = Zipper a -> a
forall a. Zipper a -> a
LZ.cursor
previous :: LZ.Zipper a -> a
previous :: forall a. Zipper a -> a
previous (LZ.Zip (a
p:[a]
ls) [a]
_) = a
p
next :: LZ.Zipper a -> a
next :: forall a. Zipper a -> a
next (LZ.Zip [a]
_ (a
c:a
n:[a]
_)) = a
n
atLast :: LZ.Zipper a -> Bool
atLast :: forall a. Zipper a -> Bool
atLast (LZ.Zip [a]
_ (a
a:[])) = Bool
True
atLast Zipper a
_ = Bool
False
atFirst :: LZ.Zipper a -> Bool
atFirst :: forall a. Zipper a -> Bool
atFirst (LZ.Zip [] (a
a:[a]
ls)) = Bool
True
atFirst Zipper a
_ = Bool
False