-- | -- Module : Text.LDAP.InternalParser -- Copyright : 2014 Kei Hibino -- License : BSD3 -- -- Maintainer : ex8k.hibino@gmail.com -- Stability : experimental -- Portability : unknown -- -- Module of internal share parsers. module Text.LDAP.InternalParser ( LdapParser , satisfyW8 , ldifSafeString ) where import Control.Applicative ((<$>), (<*>), many) import Data.Word (Word8) import Data.ByteString (ByteString, pack) import Data.Attoparsec.ByteString.Char8 (Parser, satisfy) import Text.LDAP.Data (ordW8, inBounds) import qualified Text.LDAP.Data as Data type LdapParser = Parser satisfyW8 :: (Char -> Bool) -> LdapParser Word8 satisfyW8 = (ordW8 <$>) . satisfy ldifSafeString :: LdapParser ByteString ldifSafeString = (pack <$>) $ (:) <$> satisfyW8 (`inBounds` Data.ldifSafeInitBounds) <*> many (satisfyW8 (`inBounds` Data.ldifSafeBounds))