pandoc-1.9.2: Conversion between markup formats

MaintainerJohn MacFarlane <>
Safe HaskellSafe-Infered




Utility functions and definitions used by the various Pandoc modules.


List processing

splitBy :: (a -> Bool) -> [a] -> [[a]]Source

Split list by groups of one or more sep.

splitByIndices :: [Int] -> [a] -> [[a]]Source

splitStringByIndices :: [Int] -> [Char] -> [[Char]]Source

Split string into chunks divided at specified indices.

substitute :: Eq a => [a] -> [a] -> [a] -> [a]Source

Replace each occurrence of one sublist in a list with another.

Text processing



:: [Char]

list of special characters to escape

-> [(Char, String)] 

Returns an association list of backslash escapes for the designated characters.

escapeStringUsing :: [(Char, String)] -> String -> StringSource

Escape a string of characters, using an association list of characters and strings.

stripTrailingNewlines :: String -> StringSource

Strip trailing newlines from string.

removeLeadingTrailingSpace :: String -> StringSource

Remove leading and trailing space (including newlines) from string.

removeLeadingSpace :: String -> StringSource

Remove leading space (including newlines) from string.

removeTrailingSpace :: String -> StringSource

Remove trailing space (including newlines) from string.

stripFirstAndLast :: String -> StringSource

Strip leading and trailing characters from string

camelCaseToHyphenated :: String -> StringSource

Change CamelCase word to hyphenated lowercase (e.g., camel-case).

toRomanNumeral :: Int -> StringSource

Convert number < 4000 to uppercase roman numeral.

escapeURI :: String -> StringSource

Escape whitespace in URI.



:: Int

Tab stop

-> String


-> String 

Convert tabs to spaces and filter out DOS line endings. Tabs will be preserved if tab stop is set to 0.


normalizeDate :: String -> Maybe StringSource

Parse a date and convert (if possible) to YYYY-MM-DD format.

Pandoc block and inline list processing

orderedListMarkers :: (Int, ListNumberStyle, ListNumberDelim) -> [String]Source

Generate infinite lazy list of markers for an ordered list, depending on list attributes.

normalizeSpaces :: [Inline] -> [Inline]Source

Normalize a list of inline elements: remove leading and trailing Space elements, collapse double Spaces into singles, and remove empty Str elements.

normalize :: (Eq a, Data a) => a -> aSource

Normalize Pandoc document, consolidating doubled Spaces, combining adjacent Strs and Emphs, remove Nulls and empty elements, etc.

stringify :: [Inline] -> StringSource

Convert list of inlines to a string with formatting removed.



:: [[Block]]

List of list items (each a list of blocks)

-> [[Block]] 

Change final list item from Para to Plain if the list contains no other Para blocks.

data Element Source

Data structure for defining hierarchical Pandoc documents


Blk Block 
Sec Int [Int] String [Inline] [Element] 

hierarchicalize :: [Block] -> [Element]Source

Convert list of Pandoc blocks into (hierarchical) list of Elements

uniqueIdent :: [Inline] -> [String] -> StringSource

Generate a unique identifier from a list of inlines. Second argument is a list of already used identifiers.

isHeaderBlock :: Block -> BoolSource

True if block is a Header block.

headerShift :: Int -> Pandoc -> PandocSource

Shift header levels up or down.

Writer options

data WriterOptions Source

Options for writers




writerStandalone :: Bool

Include header and footer

writerTemplate :: String

Template to use in standalone mode

writerVariables :: [(String, String)]

Variables to set in template

writerEPUBMetadata :: String

Metadata to include in EPUB

writerTabStop :: Int

Tabstop for conversion btw spaces and tabs

writerTableOfContents :: Bool

Include table of contents

writerSlideVariant :: HTMLSlideVariant

Are we writing S5 or Slidy?

writerIncremental :: Bool

True if lists should be incremental

writerXeTeX :: Bool

Create latex suitable for use by xetex

writerHTMLMathMethod :: HTMLMathMethod

How to print math in HTML

writerIgnoreNotes :: Bool

Ignore footnotes (used in making toc)

writerNumberSections :: Bool

Number sections in LaTeX

writerSectionDivs :: Bool

Put sections in div tags in HTML

writerStrictMarkdown :: Bool

Use strict markdown syntax

writerReferenceLinks :: Bool

Use reference links in writing markdown, rst

writerWrapText :: Bool

Wrap text to line length

writerColumns :: Int

Characters in a line (for text wrapping)

writerLiterateHaskell :: Bool

Write as literate haskell

writerEmailObfuscation :: ObfuscationMethod

How to obfuscate emails

writerIdentifierPrefix :: String

Prefix for section & note ids in HTML

writerSourceDirectory :: FilePath

Directory path of 1st source file

writerUserDataDir :: Maybe FilePath

Path of user data directory

writerCiteMethod :: CiteMethod

How to print cites

writerBiblioFiles :: [FilePath]

Biblio files to use for citations

writerHtml5 :: Bool

Produce HTML5

writerBeamer :: Bool

Produce beamer LaTeX slide show

writerSlideLevel :: Maybe Int

Force header level of slides

writerChapters :: Bool

Use chapter for top-level sects

writerListings :: Bool

Use listings package for code

writerHighlight :: Bool

Highlight source code

writerHighlightStyle :: Style

Style to use for highlighting

writerSetextHeaders :: Bool

Use setext headers for levels 1-2 in markdown


defaultWriterOptions :: WriterOptionsSource

Default writer options.

File handling

inDirectory :: FilePath -> IO a -> IO aSource

Perform an IO action in a directory, returning to starting directory.

findDataFile :: Maybe FilePath -> FilePath -> IO FilePathSource

Get file path for data file, either from specified user data directory, or, if not found there, from Cabal data directory.

readDataFile :: Maybe FilePath -> FilePath -> IO StringSource

Read file from specified user data directory or, if not found there, from Cabal data directory.

Error handling

err :: Int -> String -> IO aSource