1 {-# OPTIONS_HADDOCK prune #-}
3 -- |Manipulation of entity tags.
4 module Network.HTTP.Lucu.ETag
13 import Network.HTTP.Lucu.Parser.Http hiding (token)
14 import Network.HTTP.Lucu.Utils
16 -- |An entity tag is made of a weakness flag and a opaque string.
18 -- |The weakness flag. Weak tags looks like W\/\"blahblah\" and
19 -- strong tags are like \"blahblah\".
21 -- |An opaque string. Only characters from 0x20 (sp) to 0x7e (~)
23 , etagToken :: !String
26 instance Show ETag where
27 show (ETag isWeak token) = (if isWeak then
34 -- |This is equivalent to @'ETag' 'Prelude.False'@. If you want to
35 -- generate an ETag from a file, try using
36 -- 'Network.HTTP.Lucu.StaticFile.generateETagFromFile'.
37 strongETag :: String -> ETag
38 strongETag = ETag False
40 -- |This is equivalent to @'ETag' 'Prelude.True'@.
41 weakETag :: String -> ETag
46 eTagP = do isWeak <- option False (string "W/" >> return True)
48 return $ ETag isWeak str
51 eTagListP :: Parser [ETag]
53 $! do xs <- listOf eTagP