module ListRequest where
default (Int)
data ListRequest a
= ReplaceItems Int Int [a]
| HighlightItems [Int]
| PickItem Int
listEnd :: Int
listEnd = -Int
1
replaceAll :: [a] -> ListRequest a
replaceAll = forall a. Int -> Int -> [a] -> ListRequest a
ReplaceItems Int
0 Int
listEnd
replaceAllFrom :: Int -> [a] -> ListRequest a
replaceAllFrom Int
from = forall a. Int -> Int -> [a] -> ListRequest a
ReplaceItems Int
from Int
listEnd
deleteItems :: Int -> Int -> ListRequest a
deleteItems Int
from Int
cnt = forall a. Int -> Int -> [a] -> ListRequest a
ReplaceItems Int
from Int
cnt []
insertItems :: Int -> [a] -> ListRequest a
insertItems Int
from = forall a. Int -> Int -> [a] -> ListRequest a
ReplaceItems Int
from Int
0
appendItems :: [a] -> ListRequest a
appendItems = forall a. Int -> Int -> [a] -> ListRequest a
ReplaceItems Int
listEnd Int
listEnd
changeItems :: Int -> [a] -> ListRequest a
changeItems Int
from [a]
txt = forall a. Int -> Int -> [a] -> ListRequest a
ReplaceItems Int
from (forall (t :: * -> *) a. Foldable t => t a -> Int
length [a]
txt) [a]
txt
replaceItems :: Int -> Int -> [a] -> ListRequest a
replaceItems = forall a. Int -> Int -> [a] -> ListRequest a
ReplaceItems
highlightItems :: [Int] -> ListRequest a
highlightItems = forall a. [Int] -> ListRequest a
HighlightItems
pickItem :: Int -> ListRequest a
pickItem = forall a. Int -> ListRequest a
PickItem
applyListRequest :: ListRequest a -> [a] -> [a]
applyListRequest (ReplaceItems Int
from Int
cnt [a]
newtxt) [a]
oldtxt =
let before :: [a]
before = if Int
fromforall a. Eq a => a -> a -> Bool
==Int
listEnd
then [a]
oldtxt
else forall a. Int -> [a] -> [a]
take Int
from [a]
oldtxt
after :: [a]
after = if Int
fromforall a. Eq a => a -> a -> Bool
==Int
listEnd Bool -> Bool -> Bool
|| Int
cntforall a. Eq a => a -> a -> Bool
==Int
listEnd
then []
else forall a. Int -> [a] -> [a]
drop (Int
fromforall a. Num a => a -> a -> a
+Int
cnt) [a]
oldtxt
in [a]
beforeforall a. [a] -> [a] -> [a]
++[a]
newtxtforall a. [a] -> [a] -> [a]
++[a]
after
applyListRequest ListRequest a
_ [a]
oldtxt = [a]
oldtxt