X-Git-Url: http://git.cielonegro.org/gitweb.cgi?p=Lucu.git;a=blobdiff_plain;f=Data%2FAttoparsec%2FParsable.hs;fp=Data%2FAttoparsec%2FParsable.hs;h=a991607845646e86ba64b38b6775bb84aa24a0e6;hp=0000000000000000000000000000000000000000;hb=2dfd3e662204585dd64f2ddbe3b3eed0c708c68f;hpb=5f2ef377345fc47aabc63c1325df82c1cd9da9ed diff --git a/Data/Attoparsec/Parsable.hs b/Data/Attoparsec/Parsable.hs new file mode 100644 index 0000000..a991607 --- /dev/null +++ b/Data/Attoparsec/Parsable.hs @@ -0,0 +1,65 @@ +{-# LANGUAGE MultiParamTypeClasses #-} +module Data.Attoparsec.Parsable + ( Parsable(..) + ) + where +import qualified Data.Attoparsec.ByteString as B +import qualified Data.Attoparsec.ByteString.Char8 as B +import qualified Data.Attoparsec.Text as T +import Data.Attoparsec.Number +import Data.Attoparsec.Types +import qualified Data.ByteString as B +import qualified Data.ByteString.Lazy as LB +import qualified Data.Text as T +import qualified Data.Text.Lazy as LT +import Data.Word + +-- |Class of types which have their corresponding parsers. +-- +-- Minimal complete definition: 'parse' +class Parsable t a where + parse :: Parser t a + +instance Parsable B.ByteString Word8 where + {-# INLINE CONLIKE parse #-} + parse = B.anyWord8 + +instance Parsable B.ByteString Char where + {-# INLINE CONLIKE parse #-} + parse = B.anyChar + +instance Parsable B.ByteString B.ByteString where + {-# INLINE CONLIKE parse #-} + parse = B.takeByteString + +instance Parsable B.ByteString LB.ByteString where + {-# INLINE CONLIKE parse #-} + parse = B.takeLazyByteString + +instance Parsable B.ByteString Double where + {-# INLINE CONLIKE parse #-} + parse = B.double + +instance Parsable B.ByteString Number where + {-# INLINE CONLIKE parse #-} + parse = B.number + +instance Parsable T.Text Char where + {-# INLINE CONLIKE parse #-} + parse = T.anyChar + +instance Parsable T.Text T.Text where + {-# INLINE CONLIKE parse #-} + parse = T.takeText + +instance Parsable T.Text LT.Text where + {-# INLINE CONLIKE parse #-} + parse = T.takeLazyText + +instance Parsable T.Text Double where + {-# INLINE CONLIKE parse #-} + parse = T.double + +instance Parsable T.Text Number where + {-# INLINE CONLIKE parse #-} + parse = T.number