X-Git-Url: http://git.cielonegro.org/gitweb.cgi?p=Lucu.git;a=blobdiff_plain;f=Network%2FHTTP%2FLucu%2FMIMEType.hs;fp=Network%2FHTTP%2FLucu%2FMIMEType.hs;h=768b4cf53d3227c1ff1fde966755acfa23eef780;hp=949bc44d2668219cef9b265eecc66b9eacae9774;hb=90fca0675b1694e69b8e431c989343855cbd125d;hpb=742b0cae221f12eafbf1379b91c473b059efa7d8 diff --git a/Network/HTTP/Lucu/MIMEType.hs b/Network/HTTP/Lucu/MIMEType.hs index 949bc44..768b4cf 100644 --- a/Network/HTTP/Lucu/MIMEType.hs +++ b/Network/HTTP/Lucu/MIMEType.hs @@ -5,6 +5,7 @@ , OverloadedStrings , RecordWildCards , TemplateHaskell + , TypeSynonymInstances , UnicodeSyntax , ViewPatterns #-} @@ -20,11 +21,10 @@ import Control.Monad.Unicode import Data.Ascii (Ascii, AsciiBuilder, CIAscii) import Data.Attempt 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.Default import Data.Monoid.Unicode import Data.Typeable import Language.Haskell.TH.Syntax @@ -75,21 +75,21 @@ deriveAttempts [ ([t| MIMEType |], [t| Ascii |]) instance ConvertAttempt Ascii MIMEType where {-# INLINEABLE convertAttempt #-} convertAttempt str - = case parseOnly (finishOff parser) (cs str) of + = case parseOnly (finishOff def) (cs str) of Right t → return t Left err → fail ("Unparsable MIME Type: " ⧺ cs str ⧺ ": " ⧺ err) -instance Parsable ByteString MIMEType where - {-# INLINEABLE parser #-} - parser = do media ← cs <$> token - _ ← char '/' - sub ← cs <$> token - params ← parser - return $ MIMEType media sub params +instance Default (Parser MIMEType) where + {-# INLINEABLE def #-} + def = do media ← cs <$> token + _ ← char '/' + sub ← cs <$> token + params ← def + return $ MIMEType media sub params -instance Parsable ByteString [MIMEType] where - {-# INLINE parser #-} - parser = listOf parser +instance Default (Parser [MIMEType]) where + {-# INLINE def #-} + def = listOf def -- |'QuasiQuoter' for 'MIMEType' literals. --