, OverloadedStrings
, RecordWildCards
, TemplateHaskell
+ , TypeSynonymInstances
, UnicodeSyntax
#-}
-- |An internal module for entity tags.
)
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 ()
{-# 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