X-Git-Url: http://git.cielonegro.org/gitweb.cgi?p=Lucu.git;a=blobdiff_plain;f=Network%2FHTTP%2FLucu%2FContentCoding.hs;fp=Network%2FHTTP%2FLucu%2FContentCoding.hs;h=45a8b4e7dcd903deed0b9cecf92640c0b17ba7ff;hp=033b48b4d941b6d462cfa4ebac231d0f3f1869d2;hb=90fca0675b1694e69b8e431c989343855cbd125d;hpb=742b0cae221f12eafbf1379b91c473b059efa7d8 diff --git a/Network/HTTP/Lucu/ContentCoding.hs b/Network/HTTP/Lucu/ContentCoding.hs index 033b48b..45a8b4e 100644 --- a/Network/HTTP/Lucu/ContentCoding.hs +++ b/Network/HTTP/Lucu/ContentCoding.hs @@ -1,6 +1,7 @@ {-# LANGUAGE FlexibleInstances , MultiParamTypeClasses + , TypeSynonymInstances , OverloadedStrings , UnicodeSyntax #-} @@ -13,8 +14,7 @@ module Network.HTTP.Lucu.ContentCoding import Control.Applicative import Data.Ascii (CIAscii, toCIAscii) import Data.Attoparsec.Char8 -import Data.Attoparsec.Parsable -import Data.ByteString (ByteString) +import Data.Default import Data.Ord import Data.Maybe import Network.HTTP.Lucu.Parser.Http @@ -36,18 +36,18 @@ instance Ord AcceptEncoding where q1' = fromMaybe 0 q1 q2' = fromMaybe 0 q2 -instance Parsable ByteString [AcceptEncoding] where - {-# INLINE parser #-} - parser = listOf parser +instance Default (Parser [AcceptEncoding]) where + {-# INLINE def #-} + def = listOf def -instance Parsable ByteString AcceptEncoding where - {-# INLINE parser #-} - parser = do coding ← toCIAscii <$> token - qVal ← option Nothing - $ do _ ← string ";q=" - q ← qvalue - return $ Just q - return $ AcceptEncoding (normalizeCoding coding) qVal +instance Default (Parser AcceptEncoding) where + {-# INLINEABLE def #-} + def = do coding ← toCIAscii <$> token + qVal ← option Nothing + $ do _ ← string ";q=" + q ← qvalue + return $ Just q + return $ AcceptEncoding (normalizeCoding coding) qVal normalizeCoding ∷ CIAscii → CIAscii {-# INLINEABLE normalizeCoding #-}