X-Git-Url: http://git.cielonegro.org/gitweb.cgi?p=Lucu.git;a=blobdiff_plain;f=Network%2FHTTP%2FLucu%2FChunk.hs;h=c2135ef1105ae96e85f0f39db1a32240b7ee5929;hp=a419464eefbc322989141167b8d4cbf8bcc741db;hb=90fca0675b1694e69b8e431c989343855cbd125d;hpb=e34910f85f459f049b9e6e6b79db9ef95dfccc13 diff --git a/Network/HTTP/Lucu/Chunk.hs b/Network/HTTP/Lucu/Chunk.hs index a419464..c2135ef 100644 --- a/Network/HTTP/Lucu/Chunk.hs +++ b/Network/HTTP/Lucu/Chunk.hs @@ -2,34 +2,36 @@ UnicodeSyntax #-} module Network.HTTP.Lucu.Chunk - ( chunkHeaderP -- Num a => Parser a - , chunkFooterP -- Parser () - , chunkTrailerP -- Parser Headers + ( chunkHeader + , chunkFooter + , chunkTrailer ) where import Control.Applicative import Data.Attoparsec.Char8 import Data.Bits +import Data.Default import Network.HTTP.Lucu.Headers import Network.HTTP.Lucu.Parser.Http -chunkHeaderP ∷ (Integral a, Bits a) ⇒ Parser a -{-# INLINEABLE chunkHeaderP #-} -chunkHeaderP = do len ← hexadecimal - extension - crlf - return len +chunkHeader ∷ (Integral a, Bits a) ⇒ Parser a +{-# INLINEABLE chunkHeader #-} +chunkHeader = do len ← hexadecimal + extension + crlf + return len where extension ∷ Parser () - extension = skipMany $ - do _ ← char ';' - _ ← token - _ ← char '=' - _ ← token <|> quotedStr - return () + extension + = skipMany ( char ';' *> + token *> + char '=' *> + (token <|> quotedStr) ) -chunkFooterP ∷ Parser () -chunkFooterP = crlf +chunkFooter ∷ Parser () +{-# INLINE chunkFooter #-} +chunkFooter = crlf -chunkTrailerP ∷ Parser Headers -chunkTrailerP = headersP +chunkTrailer ∷ Parser Headers +{-# INLINE chunkTrailer #-} +chunkTrailer = def