]> 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 6d09aee5673634d273d0296623404b5f29704761..de7780c538992f696d1d7aa322685f2f8d13192f 100644 (file)
@@ -5,6 +5,7 @@
   , OverloadedStrings
   , RecordWildCards
   , TemplateHaskell
+  , TypeSynonymInstances
   , UnicodeSyntax
   #-}
 -- |An internal module for entity tags.
@@ -12,18 +13,16 @@ module Network.HTTP.Lucu.ETag
     ( ETag(..)
     , strongETag
     , weakETag
-    , eTag
-    , eTagList
     )
     where
 import Control.Applicative
-import Control.Monad
 import Data.Ascii (Ascii, AsciiBuilder)
 import Data.Attoparsec.Char8
 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,17 +80,12 @@ weakETag ∷ Ascii → ETag
 {-# INLINE weakETag #-}
 weakETag = ETag True
 
--- |'Parser' for an 'ETag'.
-eTag ∷ Parser ETag
-{-# INLINEABLE eTag #-}
-eTag = 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
 
--- |'Parser' for a list of 'ETag's.
-eTagList ∷ Parser [ETag]
-{-# INLINEABLE eTagList #-}
-eTagList = do xs ← listOf eTag
-              when (null xs) $
-                  fail "empty list of ETags"
-              return xs
+instance Default (Parser [ETag]) where
+    {-# INLINE def #-}
+    def = listOf def