X-Git-Url: http://git.cielonegro.org/gitweb.cgi?p=Lucu.git;a=blobdiff_plain;f=Network%2FHTTP%2FLucu%2FMIMEParams.hs;h=a3722a34958bfae90194a724e823c5c380fca553;hp=ce0b6915a4118c2dbf178b786960ce8556f85355;hb=68afccfff5a39e92903c467fac3a99734ce8a404;hpb=6df5f92e37d27641f53e271f043c66dd3d085bb7 diff --git a/Network/HTTP/Lucu/MIMEParams.hs b/Network/HTTP/Lucu/MIMEParams.hs index ce0b691..a3722a3 100644 --- a/Network/HTTP/Lucu/MIMEParams.hs +++ b/Network/HTTP/Lucu/MIMEParams.hs @@ -10,6 +10,9 @@ , TypeSynonymInstances , UnicodeSyntax #-} +{-# OPTIONS_GHC -ddump-splices #-} -- FIXME +-- THINKME: GHC 7.0.3 gives us a false warning. +{-# OPTIONS_GHC -fno-warn-missing-methods #-} -- |Parsing and printing MIME parameter values -- (). module Network.HTTP.Lucu.MIMEParams @@ -19,7 +22,6 @@ module Network.HTTP.Lucu.MIMEParams ) where import Control.Applicative hiding (empty) -import Control.Arrow import Control.Monad hiding (mapM) import Control.Monad.Unicode import Data.Ascii (Ascii, CIAscii, AsciiBuilder) @@ -30,6 +32,7 @@ import qualified Data.ByteString.Char8 as BS import Data.Char import Data.Collections import Data.Collections.BaseInstances () +import qualified Data.Collections.Newtype.TH as C import qualified Data.Map as M (Map) import Data.Monoid import Data.Monoid.Unicode @@ -53,46 +56,13 @@ newtype MIMEParams = MIMEParams (M.Map CIAscii Text) deriving (Eq, Show, Read, Monoid, Typeable) --- FIXME: auto-derive -instance Unfoldable MIMEParams (CIAscii, Text) where - {-# INLINE insert #-} - insert p (MIMEParams m) - = MIMEParams $ insert p m - {-# INLINE empty #-} - empty - = MIMEParams empty - {-# INLINE singleton #-} - singleton p - = MIMEParams $ singleton p - {-# INLINE insertMany #-} - insertMany f (MIMEParams m) - = MIMEParams $ insertMany f m - {-# INLINE insertManySorted #-} - insertManySorted f (MIMEParams m) - = MIMEParams $ insertManySorted f m - --- FIXME: auto-derive -instance Foldable MIMEParams (CIAscii, Text) where - {-# INLINE null #-} - null (MIMEParams m) = null m - {-# INLINE size #-} - size (MIMEParams m) = size m - {-# INLINE foldr #-} - foldr f b (MIMEParams m) = foldr f b m - --- FIXME: auto-derive -instance Collection MIMEParams (CIAscii, Text) where - {-# INLINE filter #-} - filter f (MIMEParams m) = MIMEParams $ filter f m - --- FIXME: auto-derive -instance Indexed MIMEParams CIAscii Text where - {-# INLINE index #-} - index k (MIMEParams m) = index k m - {-# INLINE adjust #-} - adjust f k (MIMEParams m) = MIMEParams $ adjust f k m - {-# INLINE inDomain #-} - inDomain k (MIMEParams m) = inDomain k m +C.derive [d| instance Unfoldable MIMEParams (CIAscii, Text) + instance Foldable MIMEParams (CIAscii, Text) + instance Collection MIMEParams (CIAscii, Text) + instance Indexed MIMEParams CIAscii Text + -- instance Map MIMEParams CIAscii Text + instance SortingCollection MIMEParams (CIAscii, Text) + |] -- FIXME: auto-derive instance Map MIMEParams CIAscii Text where @@ -117,11 +87,6 @@ instance Map MIMEParams CIAscii Text where isProperSubmapBy f (MIMEParams α) (MIMEParams β) = isProperSubmapBy f α β --- FIXME: auto-derive -instance SortingCollection MIMEParams (CIAscii, Text) where - {-# INLINE minView #-} - minView (MIMEParams m) = second MIMEParams <$> minView m - -- |Convert MIME parameter values to an 'AsciiBuilder'. printMIMEParams ∷ MIMEParams → AsciiBuilder {-# INLINEABLE printMIMEParams #-}