]> gitweb @ CieloNegro.org - Lucu.git/blob - Data/Attoparsec/Parsable.hs
a991607845646e86ba64b38b6775bb84aa24a0e6
[Lucu.git] / Data / Attoparsec / Parsable.hs
1 {-# LANGUAGE MultiParamTypeClasses #-}
2 module Data.Attoparsec.Parsable
3     ( Parsable(..)
4     )
5     where
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
15 import Data.Word
16
17 -- |Class of types which have their corresponding parsers.
18 --
19 -- Minimal complete definition: 'parse'
20 class Parsable t a where
21     parse :: Parser t a
22
23 instance Parsable B.ByteString Word8 where
24     {-# INLINE CONLIKE parse #-}
25     parse = B.anyWord8
26
27 instance Parsable B.ByteString Char where
28     {-# INLINE CONLIKE parse #-}
29     parse = B.anyChar
30
31 instance Parsable B.ByteString B.ByteString where
32     {-# INLINE CONLIKE parse #-}
33     parse = B.takeByteString
34
35 instance Parsable B.ByteString LB.ByteString where
36     {-# INLINE CONLIKE parse #-}
37     parse = B.takeLazyByteString
38
39 instance Parsable B.ByteString Double where
40     {-# INLINE CONLIKE parse #-}
41     parse = B.double
42
43 instance Parsable B.ByteString Number where
44     {-# INLINE CONLIKE parse #-}
45     parse = B.number
46
47 instance Parsable T.Text Char where
48     {-# INLINE CONLIKE parse #-}
49     parse = T.anyChar
50
51 instance Parsable T.Text T.Text where
52     {-# INLINE CONLIKE parse #-}
53     parse = T.takeText
54
55 instance Parsable T.Text LT.Text where
56     {-# INLINE CONLIKE parse #-}
57     parse = T.takeLazyText
58
59 instance Parsable T.Text Double where
60     {-# INLINE CONLIKE parse #-}
61     parse = T.double
62
63 instance Parsable T.Text Number where
64     {-# INLINE CONLIKE parse #-}
65     parse = T.number