1 {-# LANGUAGE MultiParamTypeClasses #-}
2 module Data.Attoparsec.Parsable
6 import qualified Data.Attoparsec.ByteString as B
7 import qualified Data.Attoparsec.ByteString.Char8 as B
8 import qualified Data.Attoparsec.Text as T
9 import Data.Attoparsec.Number
10 import Data.Attoparsec.Types
11 import qualified Data.ByteString as B
12 import qualified Data.ByteString.Lazy as LB
13 import qualified Data.Text as T
14 import qualified Data.Text.Lazy as LT
17 -- |Class of types which have their corresponding parsers.
19 -- Minimal complete definition: 'parse'
20 class Parsable t a where
23 instance Parsable B.ByteString Word8 where
24 {-# INLINE CONLIKE parse #-}
27 instance Parsable B.ByteString Char where
28 {-# INLINE CONLIKE parse #-}
31 instance Parsable B.ByteString B.ByteString where
32 {-# INLINE CONLIKE parse #-}
33 parse = B.takeByteString
35 instance Parsable B.ByteString LB.ByteString where
36 {-# INLINE CONLIKE parse #-}
37 parse = B.takeLazyByteString
39 instance Parsable B.ByteString Double where
40 {-# INLINE CONLIKE parse #-}
43 instance Parsable B.ByteString Number where
44 {-# INLINE CONLIKE parse #-}
47 instance Parsable T.Text Char where
48 {-# INLINE CONLIKE parse #-}
51 instance Parsable T.Text T.Text where
52 {-# INLINE CONLIKE parse #-}
55 instance Parsable T.Text LT.Text where
56 {-# INLINE CONLIKE parse #-}
57 parse = T.takeLazyText
59 instance Parsable T.Text Double where
60 {-# INLINE CONLIKE parse #-}
63 instance Parsable T.Text Number where
64 {-# INLINE CONLIKE parse #-}