module System.Console.Quickterm.CanMarshall
( CanMarshall (..)
) where
import Text.Regex.Base hiding (empty)
import Text.Regex.TDFA hiding (empty)
import System.Console.Quickterm.Deserializer
import System.Console.Quickterm.Help
class CanMarshall a where
defaultM :: a
helpU :: a -> Int -> String
deserializer :: Deserializer a
asInput :: a -> String
instance CanMarshall Int where
defaultM = 0
helpU _ = indent "<Integer>"
deserializer = tryConvert $ \st ->
if st =~ "((0|1|2|3|4|5|6|7|8|9)+)"
then [(read st,0)]
else [(0,length st * 2)]
asInput = show
instance CanMarshall String where
defaultM = "<value>"
helpU _ = indent "<String>"
deserializer = tryConvert $ \st ->
if st =~ "([^-]+)"
then [(st,0)]
else [("str",length st * 2)]
asInput = id