module DStringF(
stringF,stringF',
passwdF,passwdF',passwdF'',
intF,intF',intF''
,stringInputF,intInputF,passwdInputF
,stringInputF',intInputF',passwdInputF'
) where
import FDefaults
import StringF
import CompOps
import InputMsg(InputMsg,mapInp)
import InputSP(inputDoneSP)
import EitherUtils(mapEither)
import Data.Char(isDigit)
stringInputF :: F String String
stringInputF = Customiser StringF -> F String String
stringInputF' Customiser StringF
forall a. Customiser a
standard
intInputF :: F Int Int
intInputF = Customiser StringF -> F Int Int
intInputF' Customiser StringF
forall a. Customiser a
standard
passwdInputF :: F String String
passwdInputF = Customiser StringF -> F String String
passwdInputF' Customiser StringF
forall a. Customiser a
standard
stringInputF' :: Customiser StringF -> F String String
stringInputF' Customiser StringF
pmod = SP (InputMsg String) String
forall b. SP (InputMsg b) b
inputDoneSP SP (InputMsg String) String
-> F String (InputMsg String) -> F String String
forall a b e. SP a b -> F e a -> F e b
>^^=< Customiser StringF -> F String (InputMsg String)
stringF' Customiser StringF
pmod
intInputF' :: Customiser StringF -> F Int Int
intInputF' Customiser StringF
pmod = SP (InputMsg Int) Int
forall b. SP (InputMsg b) b
inputDoneSP SP (InputMsg Int) Int -> F Int (InputMsg Int) -> F Int Int
forall a b e. SP a b -> F e a -> F e b
>^^=< Customiser StringF -> F Int (InputMsg Int)
intF' Customiser StringF
pmod
passwdInputF' :: Customiser StringF -> F String String
passwdInputF' Customiser StringF
pmod = SP (InputMsg String) String
forall b. SP (InputMsg b) b
inputDoneSP SP (InputMsg String) String
-> F String (InputMsg String) -> F String String
forall a b e. SP a b -> F e a -> F e b
>^^=< Customiser StringF -> F String (InputMsg String)
passwdF' Customiser StringF
pmod
stringF :: F String (InputMsg String)
stringF = Customiser StringF -> F String (InputMsg String)
stringF' Customiser StringF
forall a. Customiser a
standard
stringF' :: Customiser StringF -> F String (InputMsg String)
stringF' = PF StringF String (InputMsg String) -> F String (InputMsg String)
forall p a b. PF p a b -> F a b
noPF (PF StringF String (InputMsg String) -> F String (InputMsg String))
-> (Customiser StringF -> PF StringF String (InputMsg String))
-> Customiser StringF
-> F String (InputMsg String)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Customiser StringF -> PF StringF String (InputMsg String)
stringF''
passwdF :: F String (InputMsg String)
passwdF = Customiser StringF -> F String (InputMsg String)
passwdF' Customiser StringF
forall a. Customiser a
standard
passwdF' :: Customiser StringF -> F String (InputMsg String)
passwdF' = PF StringF String (InputMsg String) -> F String (InputMsg String)
forall p a b. PF p a b -> F a b
noPF (PF StringF String (InputMsg String) -> F String (InputMsg String))
-> (Customiser StringF -> PF StringF String (InputMsg String))
-> Customiser StringF
-> F String (InputMsg String)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Customiser StringF -> PF StringF String (InputMsg String)
passwdF''
passwdF'' :: Customiser StringF -> PF StringF String (InputMsg String)
passwdF'' = Customiser StringF -> PF StringF String (InputMsg String)
stringF'' (Customiser StringF -> PF StringF String (InputMsg String))
-> (Customiser StringF -> Customiser StringF)
-> Customiser StringF
-> PF StringF String (InputMsg String)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Customiser StringF -> Customiser StringF -> Customiser StringF
forall b c a. (b -> c) -> (a -> b) -> a -> c
.(String -> String) -> Customiser StringF
setShowString ((Char -> Char) -> String -> String
forall a b. (a -> b) -> [a] -> [b]
map (Char -> Char -> Char
forall a b. a -> b -> a
const Char
'*')))
intF :: F Int (InputMsg Int)
intF = Customiser StringF -> F Int (InputMsg Int)
intF' Customiser StringF
forall a. Customiser a
standard
intF' :: Customiser StringF -> F Int (InputMsg Int)
intF' = PF StringF Int (InputMsg Int) -> F Int (InputMsg Int)
forall p a b. PF p a b -> F a b
noPF (PF StringF Int (InputMsg Int) -> F Int (InputMsg Int))
-> (Customiser StringF -> PF StringF Int (InputMsg Int))
-> Customiser StringF
-> F Int (InputMsg Int)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Customiser StringF -> PF StringF Int (InputMsg Int)
intF''
intF'' :: (Customiser StringF) -> PF StringF Int (InputMsg Int)
intF'' :: Customiser StringF -> PF StringF Int (InputMsg Int)
intF'' Customiser StringF
pmod = (String -> Int) -> InputMsg String -> InputMsg Int
forall t a. (t -> a) -> InputMsg t -> InputMsg a
mapInp String -> Int
forall p. (Num p, Read p) => String -> p
read' (InputMsg String -> InputMsg Int)
-> PF StringF String (InputMsg String)
-> F (Either (Customiser StringF) String) (InputMsg Int)
forall a b e. (a -> b) -> F e a -> F e b
>^=<
Customiser StringF -> PF StringF String (InputMsg String)
stringF'' (Customiser StringF
pmodCustomiser StringF -> Customiser StringF -> Customiser StringF
forall b c a. (b -> c) -> (a -> b) -> a -> c
.Customiser StringF
pm) F (Either (Customiser StringF) String) (InputMsg Int)
-> (Either (Customiser StringF) Int
-> Either (Customiser StringF) String)
-> PF StringF Int (InputMsg Int)
forall c d e. F c d -> (e -> c) -> F e d
>=^<
(Customiser StringF -> Customiser StringF)
-> (Int -> String)
-> Either (Customiser StringF) Int
-> Either (Customiser StringF) String
forall t1 a t2 b.
(t1 -> a) -> (t2 -> b) -> Either t1 t2 -> Either a b
mapEither Customiser StringF -> Customiser StringF
forall a. Customiser a
id Int -> String
forall a. Show a => a -> String
show
where
pm :: Customiser StringF
pm = (Char -> Bool) -> Customiser StringF
setAllowedChar Char -> Bool
isDigit
read' :: String -> p
read' String
"" = p
0
read' String
s = String -> p
forall a. Read a => String -> a
read String
s