]> gitweb @ CieloNegro.org - Lucu.git/blobdiff - Network/HTTP/Lucu/MIMEParams.hs
auto-derive Map
[Lucu.git] / Network / HTTP / Lucu / MIMEParams.hs
index a3722a34958bfae90194a724e823c5c380fca553..89b2bfda4e0ecb15beb5781f7d45a88e48e2bd4a 100644 (file)
@@ -10,8 +10,7 @@
   , TypeSynonymInstances
   , UnicodeSyntax
   #-}
-{-# OPTIONS_GHC -ddump-splices #-} -- FIXME
--- THINKME: GHC 7.0.3 gives us a false warning.
+{-# OPTIONS_GHC -fno-warn-orphans #-}
 {-# OPTIONS_GHC -fno-warn-missing-methods #-}
 -- |Parsing and printing MIME parameter values
 -- (<http://tools.ietf.org/html/rfc2231>).
@@ -34,59 +33,28 @@ 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
 import Data.Sequence (Seq)
 import Data.Text (Text)
 import qualified Data.Text as T
 import Data.Text.Encoding
 import Data.Text.Encoding.Error
-import Data.Typeable
 import Data.Word
+import Network.HTTP.Lucu.MIMEParams.Internal
 import Network.HTTP.Lucu.OrphanInstances ()
 import Network.HTTP.Lucu.Parser.Http
 import Network.HTTP.Lucu.Utils
-import Prelude hiding (concat, filter, foldr, lookup, mapM, null, takeWhile)
+import Prelude hiding (concat, lookup, mapM, takeWhile)
 import Prelude.Unicode
 
--- |A 'Map' from MIME parameter attributes to values. Attributes are
--- always case-insensitive according to RFC 2045
--- (<http://tools.ietf.org/html/rfc2045#section-5.1>).
-newtype MIMEParams
-    = MIMEParams (M.Map CIAscii Text)
-    deriving (Eq, Show, Read, Monoid, Typeable)
-
 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 Map        MIMEParams  CIAscii  Text
              instance SortingCollection MIMEParams (CIAscii, Text)
            |]
 
--- FIXME: auto-derive
-instance Map MIMEParams CIAscii Text where
-    {-# INLINE lookup #-}
-    lookup k (MIMEParams m) = lookup k m
-    {-# INLINE mapWithKey #-}
-    mapWithKey f (MIMEParams m)
-        = MIMEParams $ mapWithKey f m
-    {-# INLINE unionWith #-}
-    unionWith f (MIMEParams α) (MIMEParams β)
-        = MIMEParams $ unionWith f α β
-    {-# INLINE intersectionWith #-}
-    intersectionWith f (MIMEParams α) (MIMEParams β)
-        = MIMEParams $ intersectionWith f α β
-    {-# INLINE differenceWith #-}
-    differenceWith f (MIMEParams α) (MIMEParams β)
-        = MIMEParams $ differenceWith f α β
-    {-# INLINE isSubmapBy #-}
-    isSubmapBy f (MIMEParams α) (MIMEParams β)
-        = isSubmapBy f α β
-    {-# INLINE isProperSubmapBy #-}
-    isProperSubmapBy f (MIMEParams α) (MIMEParams β)
-        = isProperSubmapBy f α β
-
 -- |Convert MIME parameter values to an 'AsciiBuilder'.
 printMIMEParams ∷ MIMEParams → AsciiBuilder
 {-# INLINEABLE printMIMEParams #-}