{-# LANGUAGE OverloadedStrings #-} module Snap.Predicate.Parser.Shared where import Control.Applicative import Data.Attoparsec import Data.ByteString (ByteString) import Data.Char (ord) import Data.Word import qualified Data.ByteString as S spaces :: Parser () spaces = skipWhile (== w ' ') trim :: Parser a -> Parser a trim p = spaces *> p <* spaces oneof :: ByteString -> Word8 -> Bool oneof s c = S.any (== c) s chr :: Char -> Parser Word8 chr = word8 . w w :: Char -> Word8 w = fromIntegral . ord