pandoc-1.9.3: Conversion between markup formats

Portabilityportable
Stabilityalpha
MaintainerJohn MacFarlane <jgm@berkeley.edu>
Safe HaskellSafe-Infered

Text.Pandoc.Parsing

Description

A utility library with parsers used in pandoc readers.

Synopsis

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 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 '(' ')' anyChar will parse (hello (there)) and return hello (there).

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.

withRaw :: GenParser Char st a -> GenParser Char st (a, [Char])

Applies a parser and returns the raw string that was parsed, along with the value produced by the parser.

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 Char 

Parses backslash, then applies character parser.

characterReference :: GenParser Char st Char

Parse character entity.

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?

stateMaxNestingLevel :: Int

Max # of nested Strong/Emph

stateLastStrPos :: Maybe SourcePos

Position after last str parsed

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?

stateOldDashes :: Bool

Use pandoc <= 1.8.2.1 behavior in parsing dashes; -- is em-dash; before numeral is en-dash

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

stateRstDefaultRole :: String

Current rST default interpreted text role

Instances

data HeaderType

Constructors

SingleHeader Char

Single line of characters underneath

DoubleHeader Char

Lines of characters above and below

data ParserContext

Constructors

ListItemState

Used when running parser on list item contents

NullState

Default state

data QuoteContext

Constructors

InSingleQuote

Used when parsing inside single quotes

InDoubleQuote

Used when parsing inside double quotes

NoQuote

Used when not parsing inside quotes

type NoteTable = [(String, String)]

data Key

Instances

toKey :: [Inline] -> Key

lookupKeySrc

Arguments

:: KeyTable

Key table

-> Key

Key

-> Maybe Target 

Look up key in key table and return target object.

macro :: GenParser Char ParserState Block

Parse a newcommand or renewcommand macro definition.

applyMacros' :: String -> GenParser Char ParserState String

Apply current macros to string.