pandoc

Portability | portable
Stability | alpha
Maintainer | John MacFarlane <jgm@berkeley.edu>

Text.Pandoc.Parsing

Description

A utility library with parsers used in pandoc readers.

Synopsis

- (>>~) :: Monad m => m a -> m b -> m a
- anyLine :: GenParser Char st [Char]
- many1Till :: GenParser tok st a -> GenParser tok st end -> GenParser tok st [a]
- notFollowedBy' :: Show b => GenParser a st b -> GenParser a st ()
- oneOfStrings :: [String] -> GenParser Char st String
- spaceChar :: CharParser st Char
- nonspaceChar :: CharParser st Char
- skipSpaces :: GenParser Char st ()
- blankline :: GenParser Char st Char
- blanklines :: GenParser Char st [Char]
- enclosed :: GenParser Char st t -> GenParser Char st end -> GenParser Char st a -> GenParser Char st [a]
- stringAnyCase :: [Char] -> CharParser st String
- parseFromString :: GenParser tok st a -> [tok] -> GenParser tok st a
- lineClump :: GenParser Char st String
- charsInBalanced :: Char -> Char -> GenParser Char st String
- charsInBalanced' :: Char -> Char -> GenParser Char st String
- romanNumeral :: Bool -> GenParser Char st Int
- emailAddress :: GenParser Char st (String, String)
- uri :: GenParser Char st (String, String)
- withHorizDisplacement :: GenParser Char st a -> GenParser Char st (a, Int)
- nullBlock :: GenParser Char st Block
- failIfStrict :: GenParser a ParserState ()
- failUnlessLHS :: GenParser tok ParserState ()
- escaped :: GenParser Char st Char -> GenParser Char st Inline
- anyOrderedListMarker :: GenParser Char ParserState ListAttributes
- orderedListMarker :: ListNumberStyle -> ListNumberDelim -> GenParser Char ParserState Int
- charRef :: GenParser Char st Inline
- tableWith :: GenParser Char ParserState ([[Block]], [Alignment], [Int]) -> ([Int] -> GenParser Char ParserState [[Block]]) -> GenParser Char ParserState sep -> GenParser Char ParserState end -> GenParser Char ParserState [Inline] -> GenParser Char ParserState Block
- gridTableWith :: GenParser Char ParserState Block -> GenParser Char ParserState [Inline] -> Bool -> GenParser Char ParserState Block
- readWith :: GenParser t ParserState a -> ParserState -> [t] -> a
- testStringWith :: Show a => GenParser Char ParserState a -> String -> IO ()
- data ParserState = ParserState {
  - stateParseRaw :: Bool
  - stateParserContext :: ParserContext
  - stateQuoteContext :: QuoteContext
  - stateKeys :: KeyTable
  - stateCitations :: [String]
  - stateNotes :: NoteTable
  - stateTabStop :: Int
  - stateStandalone :: Bool
  - stateTitle :: [Inline]
  - stateAuthors :: [[Inline]]
  - stateDate :: [Inline]
  - stateStrict :: Bool
  - stateSmart :: Bool
  - stateLiterateHaskell :: Bool
  - stateColumns :: Int
  - stateHeaderTable :: [HeaderType]
  - stateIndentedCodeClasses :: [String]
  - stateNextExample :: Int
  - stateExamples :: Map String Int
  - stateHasChapters :: Bool
  - stateApplyMacros :: Bool
  - stateMacros :: [Macro]
  }
- defaultParserState :: ParserState
- data HeaderType
  - = SingleHeader Char
  - | DoubleHeader Char
- data ParserContext
  - = ListItemState
  - | NullState
- data QuoteContext
  - = InSingleQuote
  - | InDoubleQuote
  - | NoQuote
- type NoteTable = [(String, String)]
- type KeyTable = Map Key Target
- data Key
- toKey :: [Inline] -> Key
- fromKey :: Key -> [Inline]
- lookupKeySrc :: KeyTable -> Key -> Maybe Target
- smartPunctuation :: GenParser Char ParserState Inline -> GenParser Char ParserState Inline
- macro :: GenParser Char ParserState Block
- applyMacros' :: String -> GenParser Char ParserState String

# Documentation

(>>~) :: Monad m => m a -> m b -> m a

Like >>, but returns the operation on the left. (Suggested by Tillmann Rendel on Haskell-cafe list.)

anyLine :: GenParser Char st [Char]

Parse any line of text

many1Till :: GenParser tok st a -> GenParser tok st end -> GenParser tok st [a]

Like `manyTill`, but reads at least one item.

notFollowedBy' :: Show b => GenParser a st b -> GenParser a st ()

A more general form of `notFollowedBy`. This one allows any type of parser to be specified, and succeeds only if that parser fails. It does not consume any input.

oneOfStrings :: [String] -> GenParser Char st String

Parses one of a list of strings (tried in order).

spaceChar :: CharParser st Char

Parses a space or tab.

nonspaceChar :: CharParser st Char

Parses a nonspace, nonnewline character.

skipSpaces :: GenParser Char st ()

Skips zero or more spaces or tabs.

blankline :: GenParser Char st Char

Skips zero or more spaces or tabs, then reads a newline.

blanklines :: GenParser Char st [Char]

Parses one or more blank lines and returns a string of newlines.

enclosed

Arguments

:: GenParser Char st t | start parser
-> GenParser Char st end | end parser
-> GenParser Char st a | content parser (to be used repeatedly)
-> GenParser Char st [a] |

Parses material enclosed between start and end parsers.

stringAnyCase :: [Char] -> CharParser st String

Parse string, case insensitive.

parseFromString :: GenParser tok st a -> [tok] -> GenParser tok st a

Parse contents of `str` using `parser` and return result.

lineClump :: GenParser Char st String

Parse raw line block up to and including blank lines.

charsInBalanced :: Char -> Char -> GenParser Char st String

Parse a string of characters between an open character and a close character, including text between balanced pairs of open and close, which must be different. For example, `charsInBalanced '(' ')'` will parse (hello (there)) and return hello (there). Stop if a blank line is encountered.

charsInBalanced' :: Char -> Char -> GenParser Char st String

Like `charsInBalanced`, but allow blank lines in the content.

romanNumeral

Arguments

:: Bool | Uppercase if true
-> GenParser Char st Int |

Parses a roman numeral (uppercase or lowercase), returns number.

emailAddress :: GenParser Char st (String, String)

Parses an email address; returns original and corresponding escaped mailto: URI.

uri :: GenParser Char st (String, String)

Parses a URI. Returns pair of original and URI-escaped version.

withHorizDisplacement

Arguments

:: GenParser Char st a | Parser to apply
-> GenParser Char st (a, Int) | (result, displacement)

Applies a parser, returns tuple of its results and its horizontal displacement (the difference between the source column at the end and the source column at the beginning). Vertical displacement (source row) is ignored.

nullBlock :: GenParser Char st Block

Parses a character and returns `Null` (so that the parser can move on if it gets stuck).

failIfStrict :: GenParser a ParserState ()

Fail if reader is in strict markdown syntax mode.

failUnlessLHS :: GenParser tok ParserState ()

Fail unless we're in literate haskell mode.

escaped

Arguments

:: GenParser Char st Char | Parser for character to escape
-> GenParser Char st Inline |

Parses backslash, then applies character parser.

anyOrderedListMarker :: GenParser Char ParserState ListAttributes

Parses an ordered list marker and returns list attributes.

orderedListMarker :: ListNumberStyle -> ListNumberDelim -> GenParser Char ParserState Int

Parses an ordered list marker with a given style and delimiter, returns number.

charRef :: GenParser Char st Inline

Parses a character reference and returns a Str element.

tableWith :: GenParser Char ParserState ([[Block]], [Alignment], [Int]) -> ([Int] -> GenParser Char ParserState [[Block]]) -> GenParser Char ParserState sep -> GenParser Char ParserState end -> GenParser Char ParserState [Inline] -> GenParser Char ParserState Block

Parse a table using `headerParser`, `rowParser`, `lineParser`, and `footerParser`.

gridTableWith

Arguments

:: GenParser Char ParserState Block | Block parser
-> GenParser Char ParserState [Inline] | Caption parser
-> Bool | Headerless table
-> GenParser Char ParserState Block |

readWith

Arguments

:: GenParser t ParserState a | parser
-> ParserState | initial state
-> [t] | input
-> a |

Parse a string with a given parser and state.

testStringWith :: Show a => GenParser Char ParserState a -> String -> IO ()

Parse a string with `parser` (for testing).

data ParserState

Parsing options.

Constructors

ParserState |
Fields stateParseRaw :: Bool Parse raw HTML and LaTeX? stateParserContext :: ParserContext Inside list? stateQuoteContext :: QuoteContext Inside quoted environment? stateKeys :: KeyTable List of reference keys stateCitations :: [String] List of available citations stateNotes :: NoteTable List of notes stateTabStop :: Int Tab stop stateStandalone :: Bool Parse bibliographic info? stateTitle :: [Inline] Title of document stateAuthors :: [[Inline]] Authors of document stateDate :: [Inline] Date of document stateStrict :: Bool Use strict markdown syntax? stateSmart :: Bool Use smart typography? stateLiterateHaskell :: Bool Treat input as literate haskell stateColumns :: Int Number of columns in terminal stateHeaderTable :: [HeaderType] Ordered list of header types used stateIndentedCodeClasses :: [String] Classes to use for indented code blocks stateNextExample :: Int Number of next example stateExamples :: Map String Int Map from example labels to numbers stateHasChapters :: Bool True if chapter encountered stateApplyMacros :: Bool Apply LaTeX macros? stateMacros :: [Macro] List of macros defined so far

Instances

Show ParserState |

defaultParserState :: ParserState

data HeaderType

Constructors

SingleHeader Char | Single line of characters underneath
DoubleHeader Char | Lines of characters above and below

Instances

Eq HeaderType |
Show HeaderType |

data ParserContext

Constructors

ListItemState | Used when running parser on list item contents
NullState | Default state

Instances

Eq ParserContext |
Show ParserContext |

data QuoteContext

Constructors

InSingleQuote | Used when parsing inside single quotes
InDoubleQuote | Used when parsing inside double quotes
NoQuote | Used when not parsing inside quotes

Instances

Eq QuoteContext |
Show QuoteContext |

type NoteTable = [(String, String)]

type KeyTable = Map Key Target

data Key

Instances

Eq Key |
Ord Key |
Read Key |
Show Key |

toKey :: [Inline] -> Key

fromKey :: Key -> [Inline]

lookupKeySrc

Arguments

:: KeyTable | Key table
-> Key | Key
-> Maybe Target |

Look up key in key table and return target object.

smartPunctuation :: GenParser Char ParserState Inline -> GenParser Char ParserState Inline

macro :: GenParser Char ParserState Block

Parse a newcommand or renewcommand macro definition.

applyMacros' :: String -> GenParser Char ParserState String

Apply current macros to string.