module ReadFileF(readFileF,readBinaryFileF,readXdgFileF,readDirF) where
import Fudget()
import NullF
import FudgetIO
import IoF(ioF)
import HaskellIO(haskellIO)
import Message(Message(..))
import DialogueIO hiding (IOError)
readFileF :: F String (String, Either IOError String)
readFileF = K String (String, Either IOError String)
-> F String (String, Either IOError String)
forall a b. K a b -> F a b
ioF K String (String, Either IOError String)
readFileK
readBinaryFileF :: F String (String, Either IOError String)
readBinaryFileF = K String (String, Either IOError String)
-> F String (String, Either IOError String)
forall a b. K a b -> F a b
ioF K String (String, Either IOError String)
readBinaryFileK
readXdgFileF :: XdgDirectory -> F String (String, Either IOError String)
readXdgFileF = K String (String, Either IOError String)
-> F String (String, Either IOError String)
forall a b. K a b -> F a b
ioF (K String (String, Either IOError String)
-> F String (String, Either IOError String))
-> (XdgDirectory -> K String (String, Either IOError String))
-> XdgDirectory
-> F String (String, Either IOError String)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. XdgDirectory -> K String (String, Either IOError String)
readXdgFileK
readFileK :: K String (String, Either IOError String)
readFileK = (String -> Request) -> K String (String, Either IOError String)
readFileK' String -> Request
ReadFile
readBinaryFileK :: K String (String, Either IOError String)
readBinaryFileK = (String -> Request) -> K String (String, Either IOError String)
readFileK' String -> Request
ReadBinaryFile
readXdgFileK :: XdgDirectory -> K String (String, Either IOError String)
readXdgFileK = (String -> Request) -> K String (String, Either IOError String)
readFileK' ((String -> Request) -> K String (String, Either IOError String))
-> (XdgDirectory -> String -> Request)
-> XdgDirectory
-> K String (String, Either IOError String)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. XdgDirectory -> String -> Request
ReadXdgFile
readFileK' :: (String -> Request) -> K String (String, Either IOError String)
readFileK' String -> Request
req =
Cont (K String (String, Either IOError String)) (KEvent String)
forall hi ho. Cont (K hi ho) (KEvent hi)
getK Cont (K String (String, Either IOError String)) (KEvent String)
-> Cont (K String (String, Either IOError String)) (KEvent String)
forall a b. (a -> b) -> a -> b
$ \ KEvent String
msg ->
case KEvent String
msg of
High String
filename ->
Request
-> (Response -> K String (String, Either IOError String))
-> K String (String, Either IOError String)
forall (f :: * -> * -> *) b ho.
FudgetIO f =>
Request -> (Response -> f b ho) -> f b ho
haskellIO (String -> Request
req String
filename) ((Response -> K String (String, Either IOError String))
-> K String (String, Either IOError String))
-> (Response -> K String (String, Either IOError String))
-> K String (String, Either IOError String)
forall a b. (a -> b) -> a -> b
$ \ Response
resp ->
(String, Either IOError String)
-> K String (String, Either IOError String)
-> K String (String, Either IOError String)
forall (f :: * -> * -> *) ho hi.
FudgetIO f =>
ho -> f hi ho -> f hi ho
putHigh (String
filename,case Response
resp of
Str String
s -> String -> Either IOError String
forall a b. b -> Either a b
Right String
s
Failure IOError
err -> IOError -> Either IOError String
forall a b. a -> Either a b
Left IOError
err)
K String (String, Either IOError String)
readFileK
KEvent String
_ -> K String (String, Either IOError String)
readFileK
readDirF :: F String (String, Either IOError [String])
readDirF = K String (String, Either IOError [String])
-> F String (String, Either IOError [String])
forall a b. K a b -> F a b
ioF K String (String, Either IOError [String])
readDirK
readDirK :: K String (String, Either IOError [String])
readDirK =
Cont (K String (String, Either IOError [String])) (KEvent String)
forall hi ho. Cont (K hi ho) (KEvent hi)
getK Cont (K String (String, Either IOError [String])) (KEvent String)
-> Cont
(K String (String, Either IOError [String])) (KEvent String)
forall a b. (a -> b) -> a -> b
$ \ KEvent String
msg ->
case KEvent String
msg of
High String
dirname ->
Request
-> (Response -> K String (String, Either IOError [String]))
-> K String (String, Either IOError [String])
forall (f :: * -> * -> *) b ho.
FudgetIO f =>
Request -> (Response -> f b ho) -> f b ho
haskellIO (String -> Request
ReadDirectory String
dirname) ((Response -> K String (String, Either IOError [String]))
-> K String (String, Either IOError [String]))
-> (Response -> K String (String, Either IOError [String]))
-> K String (String, Either IOError [String])
forall a b. (a -> b) -> a -> b
$ \ Response
resp ->
(String, Either IOError [String])
-> K String (String, Either IOError [String])
-> K String (String, Either IOError [String])
forall (f :: * -> * -> *) ho hi.
FudgetIO f =>
ho -> f hi ho -> f hi ho
putHigh (String
dirname,case Response
resp of
StrList [String]
filenames -> [String] -> Either IOError [String]
forall a b. b -> Either a b
Right [String]
filenames
Failure IOError
err -> IOError -> Either IOError [String]
forall a b. a -> Either a b
Left IOError
err)
K String (String, Either IOError [String])
readDirK
KEvent String
_ -> K String (String, Either IOError [String])
readDirK