text-ldap-0.1.1.0: src/Text/LDAP/InternalParser.hs
-- |
-- 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))