pipes-attoparsec-0.5.1.5: Attoparsec and Pipes integration.
Safe HaskellNone
LanguageHaskell98

Pipes.Attoparsec

Description

pipes utilities for incrementally running attoparsec-based parsers.

This module assumes familiarity with pipes-parse, you can learn about it in Pipes.Parse.Tutorial.

Synopsis

Parsing

parse Source #

Arguments

:: (Monad m, ParserInput a) 
=> Parser a b

Attoparsec parser

-> Parser a m (Maybe (Either ParsingError b))

Pipes parser

Convert an attoparsec Parser to a pipes-parse Parser.

This Parser is compatible with the tools from Pipes.Parse.

It returns Nothing if the underlying Producer is exhausted, otherwise it attempts to run the given attoparsec Parser on the underlying Producer, possibly failing with ParsingError.

parsed Source #

Arguments

:: (Monad m, ParserInput a) 
=> Parser a b

Attoparsec parser

-> Producer a m r

Raw input

-> Producer b m (Either (ParsingError, Producer a m r) r) 

Convert a producer of ParserInput to a producer of parsed values.

This producer returns Right when end-of-input is reached sucessfully, otherwise it returns a ParsingError and the leftovers including the malformed input that couldn't be parsed. You can use errorP to promote the Either return value to an ErrorT monad transformer.

Including input length

Like the functions above, but these also provide information about the length of input consumed in order to fully parse each value.

parseL Source #

Arguments

:: (Monad m, ParserInput a) 
=> Parser a b

Attoparsec parser

-> Parser a m (Maybe (Either ParsingError (Int, b)))

Pipes parser

Like parse, but also returns the length of input consumed to parse the value.

parsedL Source #

Arguments

:: (Monad m, ParserInput a) 
=> Parser a b

Attoparsec parser

-> Producer a m r

Raw input

-> Producer (Int, b) m (Either (ParsingError, Producer a m r) r) 

Like parsed, except this tags each parsed value with the length of input consumed to parse the value.

Utils

isEndOfParserInput :: (Monad m, ParserInput a) => Parser a m Bool Source #

Like isEndOfInput, except that it also consumes and discards leading empty chunks.

Types

class (Eq a, Monoid a) => ParserInput a Source #

A class for valid attoparsec input types

Minimal complete definition

_parse, _length

Instances

Instances details
ParserInput ByteString Source #

Strict ByteString.

Instance details

Defined in Pipes.Attoparsec

Methods

_parse :: Parser ByteString b -> ByteString -> IResult ByteString b

_length :: ByteString -> Int

ParserInput Text Source #

Strict Text.

Instance details

Defined in Pipes.Attoparsec

Methods

_parse :: Parser Text b -> Text -> IResult Text b

_length :: Text -> Int

data ParsingError Source #

A parsing error report, as provided by Attoparsec's Fail.

Constructors

ParsingError 

Fields

  • peContexts :: [String]

    Contexts where the parsing error occurred.

  • peMessage :: String

    Parsing error description message.

Instances

Instances details
Eq ParsingError Source # 
Instance details

Defined in Pipes.Attoparsec

Methods

(==) :: ParsingError -> ParsingError -> Bool

(/=) :: ParsingError -> ParsingError -> Bool

Data ParsingError Source # 
Instance details

Defined in Pipes.Attoparsec

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> ParsingError -> c ParsingError

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c ParsingError

toConstr :: ParsingError -> Constr

dataTypeOf :: ParsingError -> DataType

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c ParsingError)

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c ParsingError)

gmapT :: (forall b. Data b => b -> b) -> ParsingError -> ParsingError

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> ParsingError -> r

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> ParsingError -> r

gmapQ :: (forall d. Data d => d -> u) -> ParsingError -> [u]

gmapQi :: Int -> (forall d. Data d => d -> u) -> ParsingError -> u

gmapM :: Monad m => (forall d. Data d => d -> m d) -> ParsingError -> m ParsingError

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> ParsingError -> m ParsingError

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> ParsingError -> m ParsingError

Read ParsingError Source # 
Instance details

Defined in Pipes.Attoparsec

Methods

readsPrec :: Int -> ReadS ParsingError

readList :: ReadS [ParsingError]

readPrec :: ReadPrec ParsingError

readListPrec :: ReadPrec [ParsingError]

Show ParsingError Source # 
Instance details

Defined in Pipes.Attoparsec

Methods

showsPrec :: Int -> ParsingError -> ShowS

show :: ParsingError -> String

showList :: [ParsingError] -> ShowS

Exception ParsingError Source # 
Instance details

Defined in Pipes.Attoparsec

Methods

toException :: ParsingError -> SomeException

fromException :: SomeException -> Maybe ParsingError

displayException :: ParsingError -> String

Error ParsingError Source # 
Instance details

Defined in Pipes.Attoparsec

Methods

noMsg :: ParsingError

strMsg :: String -> ParsingError

Error (ParsingError, Producer a m r) Source #

This instance allows using errorP with parsed and parsedL

Instance details

Defined in Pipes.Attoparsec

Methods

noMsg :: (ParsingError, Producer a m r)

strMsg :: String -> (ParsingError, Producer a m r)