module AppStorage where import System.Directory(XdgDirectory(..)) import ReadFileF import WriteFile import HbcUtils(apSnd) import CompOps import NullF import Spops appStorageF :: (Read a,Show a) => String -> a -> F a a appStorageF :: String -> a -> F a a appStorageF String key a d = (IOError -> a) -> (String -> a) -> Either IOError String -> a forall a c b. (a -> c) -> (b -> c) -> Either a b -> c either (a -> IOError -> a forall a b. a -> b -> a const a d) (a -> (a -> a) -> Maybe a -> a forall b a. b -> (a -> b) -> Maybe a -> b maybe a d a -> a forall a. a -> a id (Maybe a -> a) -> (String -> Maybe a) -> String -> a forall b c a. (b -> c) -> (a -> b) -> a -> c . String -> Maybe a forall a. Read a => String -> Maybe a readM) (Either IOError String -> a) -> ((String, Either IOError String) -> Either IOError String) -> (String, Either IOError String) -> a forall b c a. (b -> c) -> (a -> b) -> a -> c . (String, Either IOError String) -> Either IOError String forall a b. (a, b) -> b snd ((String, Either IOError String) -> a) -> F String (String, Either IOError String) -> F String a forall a b e. (a -> b) -> F e a -> F e b >^=< [String] -> F String (String, Either IOError String) -> F String (String, Either IOError String) forall hi ho. [hi] -> F hi ho -> F hi ho startupF [String key] (XdgDirectory -> F String (String, Either IOError String) readXdgFileF XdgDirectory XdgData) F String a -> SP (String, Either IOError ()) String -> F (String, Either IOError ()) a forall c d e. F c d -> SP e c -> F e d >=^^< SP (String, Either IOError ()) String forall a b. SP a b nullSP F (String, Either IOError ()) a -> F a (String, Either IOError ()) -> F a a forall a1 b a2. F a1 b -> F a2 a1 -> F a2 b >==< XdgDirectory -> F (String, String) (String, Either IOError ()) writeXdgFileF XdgDirectory XdgData F (String, String) (String, Either IOError ()) -> (a -> (String, String)) -> F a (String, Either IOError ()) forall c d e. F c d -> (e -> c) -> F e d >=^< (,) String key (String -> (String, String)) -> (a -> String) -> a -> (String, String) forall b c a. (b -> c) -> (a -> b) -> a -> c . a -> String forall a. Show a => a -> String show readM :: String -> Maybe a readM String x = case ReadS a forall a. Read a => ReadS a reads String x of [(a x,String s)] | ReadS String lex String s [(String, String)] -> [(String, String)] -> Bool forall a. Eq a => a -> a -> Bool == [(String "",String "")] -> a -> Maybe a forall a. a -> Maybe a Just a x [(a, String)] _ -> Maybe a forall a. Maybe a Nothing