snap-predicates-0.2.0: src/Snap/Predicates/Parsers/Shared.hs
{-# LANGUAGE OverloadedStrings, BangPatterns #-}
module Snap.Predicates.Parsers.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 = flip elem . S.unpack
chr :: Char -> Parser Word8
chr = word8 . w
w :: Char -> Word8
w = fromIntegral . ord