| pandoc-1.6: Conversion between markup formats | Source code | Contents | Index

Text.Pandoc.Parsing

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

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
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 Char 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 Char ParserState a -> ParserState -> String -> a
testStringWith :: Show a => GenParser Char ParserState a -> String -> IO ()

data ParserState = ParserState {

stateParseRaw :: Bool
stateParserContext :: ParserContext
stateQuoteContext :: QuoteContext
stateSanitizeHTML :: Bool
stateKeys :: KeyTable
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

}

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
newtype Key = Key [Inline]
lookupKeySrc :: KeyTable -> Key -> Maybe Target
refsMatch :: [Inline] -> [Inline] -> Bool

Documentation

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

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

anyLine :: GenParser Char st [Char] | Source

Parse any line of text

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

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

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

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 | Source

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

spaceChar :: CharParser st Char | Source

Parses a space or tab.

skipSpaces :: GenParser Char st () | Source

Skips zero or more spaces or tabs.

blankline :: GenParser Char st Char | Source

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

blanklines :: GenParser Char st [Char] | Source

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

enclosed | Source

:: |
=> 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 | Source

Parse string, case insensitive.

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

Parse contents of str using parser and return result.

lineClump :: GenParser Char st String | Source

Parse raw line block up to and including blank lines.

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

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 | Source

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

romanNumeral | Source

:: |
=> Bool | Uppercase if true
-> GenParser Char st Int |
Parses a roman numeral (uppercase or lowercase), returns number.

emailAddress :: GenParser Char st (String, String) | Source

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

uri :: GenParser Char st (String, String) | Source

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

withHorizDisplacement | Source

:: |
=> 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 | Source

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

failIfStrict :: GenParser Char ParserState () | Source

Fail if reader is in strict markdown syntax mode.

failUnlessLHS :: GenParser tok ParserState () | Source

Fail unless we're in literate haskell mode.

escaped | Source

:: |
=> GenParser Char st Char | Parser for character to escape
-> GenParser Char st Inline |
Parses backslash, then applies character parser.

anyOrderedListMarker :: GenParser Char ParserState ListAttributes | Source

Parses an ordered list marker and returns list attributes.

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

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

charRef :: GenParser Char st Inline | Source

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 | Source

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

gridTableWith | Source

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

readWith | Source

:: |
=> GenParser Char ParserState a | parser
-> ParserState | initial state
-> String | input string
-> a |
Parse a string with a given parser and state.

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

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

data ParserState | Source

Parsing options.
Constructors

ParserState |

stateParseRaw :: Bool | Parse raw HTML and LaTeX?
stateParserContext :: ParserContext | Inside list?
stateQuoteContext :: QuoteContext | Inside quoted environment?
stateSanitizeHTML :: Bool | Sanitize HTML?
stateKeys :: KeyTable | List of reference keys
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

Instances

Show ParserState

defaultParserState :: ParserState | Source

data HeaderType | Source

Constructors

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

Instances

Eq HeaderType
Show HeaderType

data ParserContext | Source

Constructors

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

Instances

Eq ParserContext
Show ParserContext

data QuoteContext | Source

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)] | Source

type KeyTable = Map Key Target | Source

newtype Key | Source

Constructors

Key [Inline] |

Instances

Eq Key
Ord Key
Read Key
Show Key

lookupKeySrc | Source

:: KeyTable | Key table
-> Key | Key
-> Maybe Target |
Look up key in key table and return target object.

refsMatch :: [Inline] -> [Inline] -> Bool | Source

Returns `True` if keys match (case insensitive).
Produced by Haddock version 2.4.2