pandoc

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

Text.Pandoc

Contents

- Definitions
- Generics
- Lists of readers and writers
- Readers: converting to Pandoc format
- Parser state used in readers
- Writers: converting from Pandoc format
- Writer options used in writers
- Rendering templates and default templates
- Version
- Miscellaneous

Description

This helper module exports the main writers, readers, and data structure definitions from the Pandoc libraries.

A typical application will chain together a reader and a writer to convert strings from one format to another. For example, the following simple program will act as a filter converting markdown fragments to reStructuredText, using reference-style links instead of inline links:

     module Main where
     import Text.Pandoc
     -- include the following two lines only if you're using ghc < 6.12:
     import Prelude hiding (getContents, putStrLn)
     import System.IO.UTF8

     markdownToRST :: String -> String
     markdownToRST =
       (writeRST defaultWriterOptions {writerReferenceLinks = True}) .
       readMarkdown defaultParserState

     main = getContents >>= putStrLn . markdownToRST

Note: all of the readers assume that the input text has `'\n'` line endings. So if you get your input text from a web form, you should remove `'\r'` characters using `filter (/='\r')`.

Synopsis

- module Text.Pandoc.Definition
- module Text.Pandoc.Generic
- readers :: [(String, ParserState -> String -> Pandoc)]
- writers :: [(String, WriterOptions -> Pandoc -> String)]
- readMarkdown :: ParserState -> String -> Pandoc
- readRST :: ParserState -> String -> Pandoc
- readLaTeX :: ParserState -> String -> Pandoc
- readHtml :: ParserState -> String -> Pandoc
- readTextile :: ParserState -> String -> Pandoc
- readNative :: String -> Pandoc
- 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 ParserContext
  - = ListItemState
  - | NullState
- data QuoteContext
  - = InSingleQuote
  - | InDoubleQuote
  - | NoQuote
- type KeyTable = Map Key Target
- type NoteTable = [(String, String)]
- data HeaderType
  - = SingleHeader Char
  - | DoubleHeader Char
- writeNative :: WriterOptions -> Pandoc -> String
- writeMarkdown :: WriterOptions -> Pandoc -> String
- writePlain :: WriterOptions -> Pandoc -> String
- writeRST :: WriterOptions -> Pandoc -> String
- writeLaTeX :: WriterOptions -> Pandoc -> String
- writeConTeXt :: WriterOptions -> Pandoc -> String
- writeTexinfo :: WriterOptions -> Pandoc -> String
- writeHtml :: WriterOptions -> Pandoc -> Html
- writeHtmlString :: WriterOptions -> Pandoc -> String
- writeDocbook :: WriterOptions -> Pandoc -> String
- writeOpenDocument :: WriterOptions -> Pandoc -> String
- writeMan :: WriterOptions -> Pandoc -> String
- writeMediaWiki :: WriterOptions -> Pandoc -> String
- writeTextile :: WriterOptions -> Pandoc -> String
- writeRTF :: WriterOptions -> Pandoc -> String
- writeODT :: Maybe FilePath -> WriterOptions -> Pandoc -> IO ByteString
- writeEPUB :: Maybe String -> WriterOptions -> Pandoc -> IO ByteString
- writeOrg :: WriterOptions -> Pandoc -> String
- data WriterOptions = WriterOptions {
  - writerStandalone :: Bool
  - writerTemplate :: String
  - writerVariables :: [(String, String)]
  - writerEPUBMetadata :: String
  - writerTabStop :: Int
  - writerTableOfContents :: Bool
  - writerSlideVariant :: HTMLSlideVariant
  - writerIncremental :: Bool
  - writerXeTeX :: Bool
  - writerHTMLMathMethod :: HTMLMathMethod
  - writerIgnoreNotes :: Bool
  - writerNumberSections :: Bool
  - writerSectionDivs :: Bool
  - writerStrictMarkdown :: Bool
  - writerReferenceLinks :: Bool
  - writerWrapText :: Bool
  - writerColumns :: Int
  - writerLiterateHaskell :: Bool
  - writerEmailObfuscation :: ObfuscationMethod
  - writerIdentifierPrefix :: String
  - writerSourceDirectory :: FilePath
  - writerUserDataDir :: Maybe FilePath
  - writerCiteMethod :: CiteMethod
  - writerBiblioFiles :: [FilePath]
  - writerHtml5 :: Bool
  - writerChapters :: Bool
  - writerListings :: Bool
  - writerAscii :: Bool
  }
- data HTMLSlideVariant
  - = S5Slides
  - | SlidySlides
  - | NoSlides
- data HTMLMathMethod
  - = PlainMath
  - | LaTeXMathML (Maybe String)
  - | JsMath (Maybe String)
  - | GladTeX
  - | WebTeX String
  - | MathML (Maybe String)
  - | MathJax String
- data CiteMethod
  - = Citeproc
  - | Natbib
  - | Biblatex
- defaultWriterOptions :: WriterOptions
- module Text.Pandoc.Templates
- pandocVersion :: String
- rtfEmbedImage :: Inline -> IO Inline
- jsonFilter :: (Pandoc -> Pandoc) -> String -> String

# Definitions

module Text.Pandoc.Definition

# Generics

module Text.Pandoc.Generic

# Lists of readers and writers

readers :: [(String, ParserState -> String -> Pandoc)]

Association list of formats and readers.

writers :: [(String, WriterOptions -> Pandoc -> String)]

Association list of formats and writers (omitting the binary writers, odt and epub).

# Readers: converting to Pandoc format

readMarkdown

Arguments

:: ParserState | Parser state, including options for parser
-> String | String to parse (assuming `'\n'` line endings)
-> Pandoc |

Read markdown from an input string and return a Pandoc document.

readRST

Arguments

:: ParserState | Parser state, including options for parser
-> String | String to parse (assuming `'\n'` line endings)
-> Pandoc |

Parse reStructuredText string and return Pandoc document.

readLaTeX

Arguments

:: ParserState | Parser state, including options for parser
-> String | String to parse (assumes `'\n'` line endings)
-> Pandoc |

Parse LaTeX from string and return `Pandoc` document.

readHtml

Arguments

:: ParserState | Parser state
-> String | String to parse (assumes `'\n'` line endings)
-> Pandoc |

Convert HTML-formatted string to `Pandoc` document.

readTextile

Arguments

:: ParserState | Parser state, including options for parser
-> String | String to parse (assuming `'\n'` line endings)
-> Pandoc |

Parse a Textile text and return a Pandoc document.

readNative

Arguments

:: String | String to parse (assuming `'\n'` line endings)
-> Pandoc |

Read native formatted text and return a Pandoc document. The input may be a full pandoc document, a block list, a block, an inline list, or an inline. Thus, for example,

     Str "hi"

will be treated as if it were

     Pandoc (Meta [] [] []) [Plain [Str "hi"]]

# Parser state used in readers

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 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 KeyTable = Map Key Target

type NoteTable = [(String, String)]

data HeaderType

Constructors

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

Instances

Eq HeaderType |
Show HeaderType |

# Writers: converting from Pandoc format

writeNative :: WriterOptions -> Pandoc -> String

Prettyprint Pandoc document.

writeMarkdown :: WriterOptions -> Pandoc -> String

Convert Pandoc to Markdown.

writePlain :: WriterOptions -> Pandoc -> String

Convert Pandoc to plain text (like markdown, but without links, pictures, or inline formatting).

writeRST :: WriterOptions -> Pandoc -> String

Convert Pandoc to RST.

writeLaTeX :: WriterOptions -> Pandoc -> String

Convert Pandoc to LaTeX.

writeConTeXt :: WriterOptions -> Pandoc -> String

Convert Pandoc to ConTeXt.

writeTexinfo :: WriterOptions -> Pandoc -> String

Convert Pandoc to Texinfo.

writeHtml :: WriterOptions -> Pandoc -> Html

Convert Pandoc document to Html structure.

writeHtmlString :: WriterOptions -> Pandoc -> String

Convert Pandoc document to Html string.

writeDocbook :: WriterOptions -> Pandoc -> String

Convert Pandoc document to string in Docbook format.

writeOpenDocument :: WriterOptions -> Pandoc -> String

Convert Pandoc document to string in OpenDocument format.

writeMan :: WriterOptions -> Pandoc -> String

Convert Pandoc to Man.

writeMediaWiki :: WriterOptions -> Pandoc -> String

Convert Pandoc to MediaWiki.

writeTextile :: WriterOptions -> Pandoc -> String

Convert Pandoc to Textile.

writeRTF :: WriterOptions -> Pandoc -> String

Convert Pandoc to a string in rich text format.

writeODT

Arguments

:: Maybe FilePath | Path specified by --reference-odt
-> WriterOptions | Writer options
-> Pandoc | Document to convert
-> IO ByteString |

Produce an ODT file from a Pandoc document.

writeEPUB

Arguments

:: Maybe String | EPUB stylesheet specified at command line
-> WriterOptions | Writer options
-> Pandoc | Document to convert
-> IO ByteString |

Produce an EPUB file from a Pandoc document.

writeOrg :: WriterOptions -> Pandoc -> String

Convert Pandoc to Org.

# Writer options used in writers

data WriterOptions

Options for writers

Constructors

WriterOptions |

Fields

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

writerChapters :: Bool

  Use chapter for top-level sects

writerListings :: Bool

  Use listings package for code

writerAscii :: Bool

  Avoid non-ascii characters

Instances

Show WriterOptions |

data HTMLSlideVariant

Varieties of HTML slide shows.

Constructors

S5Slides |
SlidySlides |
NoSlides |

Instances

Eq HTMLSlideVariant |
Read HTMLSlideVariant |
Show HTMLSlideVariant |

data HTMLMathMethod

Constructors

PlainMath |
LaTeXMathML (Maybe String) |
JsMath (Maybe String) |
GladTeX |
WebTeX String |
MathML (Maybe String) |
MathJax String |

Instances

Eq HTMLMathMethod |
Read HTMLMathMethod |
Show HTMLMathMethod |

data CiteMethod

Constructors

Citeproc |
Natbib |
Biblatex |

Instances

Eq CiteMethod |
Read CiteMethod |
Show CiteMethod |

defaultWriterOptions :: WriterOptions

Default writer options.

# Rendering templates and default templates

module Text.Pandoc.Templates

# Version

pandocVersion :: String

Version number of pandoc library.

# Miscellaneous

rtfEmbedImage :: Inline -> IO Inline

Convert Image inlines into a raw RTF embedded image, read from a file. If file not found or filetype not jpeg or png, leave the inline unchanged.

jsonFilter :: (Pandoc -> Pandoc) -> String -> String

Converts a transformation on the Pandoc AST into a function that reads and writes a JSON-encoded string. This is useful for writing small scripts.