module Network.Parser.Rfc2046 where
import Control.Monad (join)
import Control.Applicative as A hiding (many)
import Data.Attoparsec
import qualified Data.Attoparsec.Char8 as AC
import qualified Data.Attoparsec.FastSet as F (fromList, memberWord8)
import Data.ByteString as W
import Data.ByteString.Char8 as C
import Data.ByteString.Internal (c2w, w2c)
import Data.Word (Word8)
import Prelude hiding (take, takeWhile)
import Network.Parser.RfcCommon
import Network.Parser.Rfc2234
import Network.Parser.Rfc2045
import qualified Data.Map as M
import Prelude hiding (id)
bcharsnospaceSet' :: [Word8]
bcharsnospaceSet' = [39,40,41,43,95,44,45,46,47,58,61,63]
bcharsnospace_pred :: Word8 -> Bool
bcharsnospace_pred w = digit_pred w
|| alpha_pred w
|| F.memberWord8 w (F.fromList bcharsnospaceSet')
bcharsnospace :: Parser Word8
bcharsnospace = satisfy bcharsnospace_pred
bchars = bcharsnospace <|> satisfy (== 32)
boundary = many1 bchars
dashboundary = word8 45 *> word8 45 *> boundary