module Text.Format.Error
( ArgError(..)
, isArgKeyError
, catchArgError
, vferror
, errorNoParse
, errorCloseTag
, errorArgKey
, errorArgFmt
) where
import Control.Exception
data ArgError = ArgKeyError
| ArgFmtError
deriving (Show, Eq)
instance Exception ArgError
isArgKeyError :: SomeException -> Bool
isArgKeyError = maybe False (== ArgKeyError) . fromException
catchArgError :: a -> a -> SomeException -> a
catchArgError key fmt e = maybe (throw e) handle (fromException e)
where
handle ArgKeyError = key
handle ArgFmtError = fmt
vferror :: String -> a
vferror = errorWithoutStackTrace . ("vformat: " ++)
errorNoParse :: String -> a
errorNoParse = vferror . ("no parse " ++) . show
errorCloseTag :: String -> a
errorCloseTag = vferror . (++ " close tag '}' missing") . show
errorArgKey :: String -> a
errorArgKey = vferror . ("bad arg key " ++) . show
errorArgFmt :: String -> a
errorArgFmt = vferror . ("bad arg format " ++) . show