pandoc-1.8.2.1: Conversion between markup formats

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.