X-Git-Url: https://git.cielonegro.org/gitweb.cgi?a=blobdiff_plain;f=Network%2FHTTP%2FLucu%2FMIMEParams.hs;h=89b2bfda4e0ecb15beb5781f7d45a88e48e2bd4a;hb=b2da45926a7900603a5426e0c6d65e3ca630a1a2;hp=36982139ce257433018b4530f5f9058352c041a6;hpb=852d97c73c367bc7880600850d92463f580ca1ca;p=Lucu.git diff --git a/Network/HTTP/Lucu/MIMEParams.hs b/Network/HTTP/Lucu/MIMEParams.hs index 3698213..89b2bfd 100644 --- a/Network/HTTP/Lucu/MIMEParams.hs +++ b/Network/HTTP/Lucu/MIMEParams.hs @@ -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 -- (). @@ -22,7 +21,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) @@ -35,62 +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 --- (). -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 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 α β - --- 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 #-}