import Control.Monad
import Data.Ascii (Ascii)
import qualified Data.Ascii as A
-import Data.Attoparsec.Char8 as P hiding (scan)
-import qualified Data.Attoparsec.FastSet as FS
+import Data.Attoparsec.Char8
import qualified Data.ByteString.Char8 as BS
import Network.HTTP.Lucu.Parser
import Prelude.Unicode
-- separators.
isSeparator ∷ Char → Bool
{-# INLINE isSeparator #-}
-isSeparator = flip FS.memberChar set
- where
- {-# NOINLINE set #-}
- set = FS.charClass "()<>@,;:\\\"/[]?={}\x20\x09"
+isSeparator = inClass "()<>@,;:\\\"/[]?={}\x20\x09"
-- |@'isChar' c@ returns 'True' iff @c <= 0x7f@.
isChar ∷ Char → Bool
quotedStr ∷ Parser Ascii
{-# INLINEABLE quotedStr #-}
quotedStr = do void $ char '"'
- xs ← P.many (qdtext <|> quotedPair)
+ xs ← many (qdtext <|> quotedPair)
void $ char '"'
return ∘ A.unsafeFromByteString $ BS.pack xs
<?>