module DStringF(
  stringF,stringF',--stringF'',
  passwdF,passwdF',passwdF'',
  intF,intF',intF''
  ,stringInputF,intInputF,passwdInputF
  ,stringInputF',intInputF',passwdInputF'
  ) where
import FDefaults
import StringF
--import Fudget
import CompOps
--import Geometry(Rect)
--import Xtypes
--import SpEither(filterRightSP)
import InputMsg(InputMsg,mapInp)
import InputSP(inputDoneSP)--InF(..),
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 -- . setInitSize "1999999999"
    read' :: String -> p
read' String
"" = p
0
    read' String
s = String -> p
forall a. Read a => String -> a
read String
s