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=d801fb7b3eee1bb066c1348f111c77ba9290aff1;hp=0000000000000000000000000000000000000000;hb=1de2506621977a383b991cadce024f626023908b;hpb=5f2ef377345fc47aabc63c1325df82c1cd9da9ed diff --git a/Data/Attoparsec/Parsable.hs b/Data/Attoparsec/Parsable.hs new file mode 100644 index 0000000..d801fb7 --- /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: 'parser' +class Parsable t a where + parser :: Parser t a + +instance Parsable B.ByteString Word8 where + {-# INLINE CONLIKE parser #-} + parser = B.anyWord8 + +instance Parsable B.ByteString Char where + {-# INLINE CONLIKE parser #-} + parser = B.anyChar + +instance Parsable B.ByteString B.ByteString where + {-# INLINE CONLIKE parser #-} + parser = B.takeByteString + +instance Parsable B.ByteString LB.ByteString where + {-# INLINE CONLIKE parser #-} + parser = B.takeLazyByteString + +instance Parsable B.ByteString Double where + {-# INLINE CONLIKE parser #-} + parser = B.double + +instance Parsable B.ByteString Number where + {-# INLINE CONLIKE parser #-} + parser = B.number + +instance Parsable T.Text Char where + {-# INLINE CONLIKE parser #-} + parser = T.anyChar + +instance Parsable T.Text T.Text where + {-# INLINE CONLIKE parser #-} + parser = T.takeText + +instance Parsable T.Text LT.Text where + {-# INLINE CONLIKE parser #-} + parser = T.takeLazyText + +instance Parsable T.Text Double where + {-# INLINE CONLIKE parser #-} + parser = T.double + +instance Parsable T.Text Number where + {-# INLINE CONLIKE parser #-} + parser = T.number