DStringF

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 = stringInputF' standard
intInputF = intInputF' standard
passwdInputF = passwdInputF' standard
stringInputF' pmod = inputDoneSP >^^=< stringF' pmod
intInputF' pmod = inputDoneSP >^^=< intF' pmod
passwdInputF' pmod = inputDoneSP >^^=< passwdF' pmod

stringF = stringF' standard
stringF' = noPF . stringF''

passwdF = passwdF' standard
passwdF' = noPF . passwdF''
passwdF'' = stringF'' . (.setShowString (map (const '*')))

intF = intF' standard
intF' = noPF . intF''

intF'' :: (Customiser StringF) -> PF StringF Int (InputMsg Int)
intF'' pmod = mapInp read' >^=<
              stringF'' (pmod.pm) >=^<
	      mapEither id show
  where
    pm = setAllowedChar isDigit -- . setInitSize "1999999999"
    read' "" = 0
    read' s = read s