]> gitweb @ CieloNegro.org - Lucu.git/blobdiff - Network/HTTP/Lucu/ETag.hs
Destroy Data.Attoparsec.Parsable; use Data.Default instead
[Lucu.git] / Network / HTTP / Lucu / ETag.hs
index b04912002be300ad01ad2b17b9a167caff195ebc..de7780c538992f696d1d7aa322685f2f8d13192f 100644 (file)
@@ -5,6 +5,7 @@
   , OverloadedStrings
   , RecordWildCards
   , TemplateHaskell
+  , TypeSynonymInstances
   , UnicodeSyntax
   #-}
 -- |An internal module for entity tags.
@@ -15,15 +16,13 @@ module Network.HTTP.Lucu.ETag
     )
     where
 import Control.Applicative
-import Control.Monad
 import Data.Ascii (Ascii, AsciiBuilder)
 import Data.Attoparsec.Char8
-import Data.Attoparsec.Parsable
-import Data.ByteString (ByteString)
 import Data.Convertible.Base
 import Data.Convertible.Instances.Ascii ()
 import Data.Convertible.Utils
 import Data.Data
+import Data.Default
 import Data.Monoid.Unicode
 import Language.Haskell.TH.Syntax
 import Network.HTTP.Lucu.OrphanInstances ()
@@ -81,15 +80,12 @@ weakETag ∷ Ascii → ETag
 {-# INLINE weakETag #-}
 weakETag = ETag True
 
-instance Parsable ByteString ETag where
-    {-# INLINEABLE parser #-}
-    parser = do isWeak ← option False (string "W/" *> return True)
-                str    ← quotedStr
-                return $ ETag isWeak str
+instance Default (Parser ETag) where
+    {-# INLINEABLE def #-}
+    def = do isWeak ← option False (string "W/" *> return True)
+             str    ← quotedStr
+             return $ ETag isWeak str
 
-instance Parsable ByteString [ETag] where
-    {-# INLINEABLE parser #-}
-    parser = do xs ← listOf parser
-                when (null xs) $
-                    fail "empty list of ETags"
-                return xs
+instance Default (Parser [ETag]) where
+    {-# INLINE def #-}
+    def = listOf def