import qualified Data.ByteString.Char8 as BS
import qualified Data.ByteString.Lazy.Char8 as LS
import qualified Data.ByteString.Lazy.Internal as LS
-import qualified Data.Foldable as F
+import Data.Foldable
import Data.Monoid
import Data.Monoid.Unicode
import qualified Data.Sequence as S
listOf ∷ Parser a → Parser [a]
{-# INLINEABLE listOf #-}
listOf p
- = try $
- do skipMany lws
+ = do skipMany lws
sepBy p $ do skipMany lws
_ <- char ','
skipMany lws
-- |HTTP LWS: crlf? (sp | ht)+
lws ∷ Parser ()
{-# INLINEABLE lws #-}
-lws = try $
- do option () crlf
- _ ← satisfy isSPHT
- skipWhile isSPHT
+lws = do option () crlf
+ _ ← takeWhile1 isSPHT
+ return ()
-- |Returns 'True' for SP and HT.
isSPHT ∷ Char → Bool
lastChunk ∷ CharAccumState → BS.ByteString
{-# INLINE lastChunk #-}
-lastChunk = BS.pack ∘ F.toList ∘ casLastChunk
+lastChunk = BS.pack ∘ toList ∘ casLastChunk
snoc ∷ CharAccumState → Char → CharAccumState
{-# INLINEABLE snoc #-}
finish ∷ CharAccumState → LS.ByteString
{-# INLINEABLE finish #-}
finish cas
- = let chunks = F.toList $ casChunks cas ⊳ lastChunk cas
+ = let chunks = toList $ casChunks cas ⊳ lastChunk cas
str = LS.fromChunks chunks
in
str