-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | Conversion between markup formats
--   
--   Pandoc is a Haskell library for converting from one markup format to
--   another, and a command-line tool that uses this library. It can read
--   markdown and (subsets of) HTML, reStructuredText, LaTeX, DocBook,
--   MediaWiki markup, and Textile, and it can write markdown,
--   reStructuredText, HTML, LaTeX, ConTeXt, Docbook, OpenDocument, ODT,
--   Word docx, RTF, MediaWiki, Textile, groff man pages, plain text, Emacs
--   Org-Mode, AsciiDoc, EPUB (v2 and v3), FictionBook2, and S5, Slidy and
--   Slideous HTML slide shows.
--   
--   Pandoc extends standard markdown syntax with footnotes, embedded
--   LaTeX, definition lists, tables, and other features. A compatibility
--   mode is provided for those who need a drop-in replacement for
--   Markdown.pl.
--   
--   In contrast to existing tools for converting markdown to HTML, which
--   use regex substitutions, pandoc has a modular design: it consists of a
--   set of readers, which parse text in a given format and produce a
--   native representation of the document, and a set of writers, which
--   convert this native representation into a target format. Thus, adding
--   an input or output format requires only adding a reader or writer.
@package pandoc
@version 1.11.1


-- | Conversion of TeX math to a list of <a>Pandoc</a> inline elements.
module Text.Pandoc.Readers.TeXMath

-- | Converts a raw TeX math formula to a list of <a>Pandoc</a> inlines.
--   Defaults to raw formula between <tt>$</tt> characters if entire
--   formula can't be converted.
readTeXMath :: String -> [Inline]


-- | UTF-8 aware string IO functions that will work with GHC 6.10, 6.12, or
--   7.
module Text.Pandoc.UTF8
readFile :: FilePath -> IO String
writeFile :: FilePath -> String -> IO ()
getContents :: IO String
putStr :: String -> IO ()
putStrLn :: String -> IO ()
hPutStr :: Handle -> String -> IO ()
hPutStrLn :: Handle -> String -> IO ()
hGetContents :: Handle -> IO String

-- | Convert UTF8-encoded ByteString to String, also removing '\r'
--   characters.
toString :: ByteString -> String
fromString :: String -> ByteString

-- | Convert UTF8-encoded ByteString to String, also removing '\r'
--   characters.
toStringLazy :: ByteString -> String
fromStringLazy :: String -> ByteString
encodePath :: FilePath -> FilePath
decodeArg :: String -> String


-- | Conversion of LaTeX documents to PDF.
module Text.Pandoc.PDF
tex2pdf :: String -> String -> IO (Either ByteString ByteString)


-- | A prettyprinting library for the production of text documents,
--   including wrapped text, indentated blocks, and tables.
module Text.Pandoc.Pretty
data Doc

-- | Renders a <a>Doc</a>. <tt>render (Just n)</tt> will use a line length
--   of <tt>n</tt> to reflow text on breakable spaces. <tt>render
--   Nothing</tt> will not reflow text.
render :: (Monoid a, IsString a) => Maybe Int -> Doc -> a

-- | A carriage return. Does nothing if we're at the beginning of a line;
--   otherwise inserts a newline.
cr :: Doc

-- | Inserts a blank line unless one exists already. (<tt>blankline <a></a>
--   blankline</tt> has the same effect as <tt>blankline</tt>. If you want
--   multiple blank lines, use <tt>text <a>\n\n</a></tt>.
blankline :: Doc

-- | A breaking (reflowable) space.
space :: Doc

-- | A literal string.
text :: String -> Doc

-- | A character.
char :: Char -> Doc

-- | Uses the specified string as a prefix for every line of the inside
--   document (except the first, if not at the beginning of the line).
prefixed :: String -> Doc -> Doc

-- | Makes a <a>Doc</a> flush against the left margin.
flush :: Doc -> Doc

-- | Indents a <a>Doc</a> by the specified number of spaces.
nest :: Int -> Doc -> Doc

-- | A hanging indent. <tt>hang ind start doc</tt> prints <tt>start</tt>,
--   then <tt>doc</tt>, leaving an indent of <tt>ind</tt> spaces on every
--   line but the first.
hang :: Int -> Doc -> Doc -> Doc

-- | <tt>beforeNonBlank d</tt> conditionally includes <tt>d</tt> unless it
--   is followed by blank space.
beforeNonBlank :: Doc -> Doc

-- | Makes a <a>Doc</a> non-reflowable.
nowrap :: Doc -> Doc

-- | Returns the width of a <a>Doc</a>.
offset :: Doc -> Int

-- | Returns the height of a block or other <a>Doc</a>.
height :: Doc -> Int

-- | <tt>lblock n d</tt> is a block of width <tt>n</tt> characters, with
--   text derived from <tt>d</tt> and aligned to the left.
lblock :: Int -> Doc -> Doc

-- | Like <a>lblock</a> but aligned centered.
cblock :: Int -> Doc -> Doc

-- | Like <a>lblock</a> but aligned to the right.
rblock :: Int -> Doc -> Doc

-- | An infix synonym for <a>mappend</a>.
(<>) :: Monoid m => m -> m -> m

-- | Concatenate a list of <a>Doc</a>s, putting breakable spaces between
--   them.
(<+>) :: Doc -> Doc -> Doc

-- | <tt>a $$ b</tt> puts <tt>a</tt> above <tt>b</tt>.
($$) :: Doc -> Doc -> Doc

-- | <tt>a $$ b</tt> puts <tt>a</tt> above <tt>b</tt>, with a blank line
--   between.
($+$) :: Doc -> Doc -> Doc

-- | True if the document is empty.
isEmpty :: Doc -> Bool

-- | The empty document.
empty :: Doc

-- | Concatenate a list of <a>Doc</a>s.
cat :: [Doc] -> Doc

-- | Same as <a>cat</a>.
hcat :: [Doc] -> Doc

-- | Same as <a>cat</a>, but putting breakable spaces between the
--   <a>Doc</a>s.
hsep :: [Doc] -> Doc

-- | List version of <a>$$</a>.
vcat :: [Doc] -> Doc

-- | List version of <a>$+$</a>.
vsep :: [Doc] -> Doc

-- | Chomps trailing blank space off of a <a>Doc</a>.
chomp :: Doc -> Doc

-- | Encloses a <a>Doc</a> inside a start and end <a>Doc</a>.
inside :: Doc -> Doc -> Doc -> Doc

-- | Puts a <a>Doc</a> in curly braces.
braces :: Doc -> Doc

-- | Puts a <a>Doc</a> in square brackets.
brackets :: Doc -> Doc

-- | Puts a <a>Doc</a> in parentheses.
parens :: Doc -> Doc

-- | Wraps a <a>Doc</a> in single quotes.
quotes :: Doc -> Doc

-- | Wraps a <a>Doc</a> in double quotes.
doubleQuotes :: Doc -> Doc

-- | Returns width of a character in a monospace font: 0 for a combining
--   character, 1 for a regular character, 2 for an East Asian wide
--   character.
charWidth :: Char -> Int

-- | Get real length of string, taking into account combining and
--   double-wide characters.
realLength :: String -> Int
instance Monoid Doc
instance Show Doc
instance Show D
instance IsString Doc


-- | Functions for escaping and formatting XML.
module Text.Pandoc.XML

-- | Remove everything between <a>...</a>
stripTags :: String -> String

-- | Escape one character as needed for XML.
escapeCharForXML :: Char -> String

-- | Escape string as needed for XML. Entity references are not preserved.
escapeStringForXML :: String -> String

-- | Put the supplied contents between start and end tags of tagType, with
--   specified attributes and (if specified) indentation.
inTags :: Bool -> String -> [(String, String)] -> Doc -> Doc

-- | Return a self-closing tag of tagType with specified attributes
selfClosingTag :: String -> [(String, String)] -> Doc

-- | Put the supplied contents between start and end tags of tagType.
inTagsSimple :: String -> Doc -> Doc

-- | Put the supplied contents in indented block btw start and end tags.
inTagsIndented :: String -> Doc -> Doc

-- | Escape all non-ascii characters using numerical entities.
toEntities :: String -> String
fromEntities :: String -> String


-- | Utility functions and definitions used by the various Pandoc modules.
module Text.Pandoc.Shared

-- | Split list by groups of one or more sep.
splitBy :: (a -> Bool) -> [a] -> [[a]]
splitByIndices :: [Int] -> [a] -> [[a]]

-- | Split string into chunks divided at specified indices.
splitStringByIndices :: [Int] -> [Char] -> [[Char]]

-- | Replace each occurrence of one sublist in a list with another.
substitute :: Eq a => [a] -> [a] -> [a] -> [a]

-- | Returns an association list of backslash escapes for the designated
--   characters.
backslashEscapes :: [Char] -> [(Char, String)]

-- | Escape a string of characters, using an association list of characters
--   and strings.
escapeStringUsing :: [(Char, String)] -> String -> String

-- | Strip trailing newlines from string.
stripTrailingNewlines :: String -> String

-- | Remove leading and trailing space (including newlines) from string.
trim :: String -> String

-- | Remove leading space (including newlines) from string.
triml :: String -> String

-- | Remove trailing space (including newlines) from string.
trimr :: String -> String

-- | Strip leading and trailing characters from string
stripFirstAndLast :: String -> String

-- | Change CamelCase word to hyphenated lowercase (e.g., camel-case).
camelCaseToHyphenated :: String -> String

-- | Convert number &lt; 4000 to uppercase roman numeral.
toRomanNumeral :: Int -> String

-- | Escape whitespace in URI.
escapeURI :: String -> String

-- | Convert tabs to spaces and filter out DOS line endings. Tabs will be
--   preserved if tab stop is set to 0.
tabFilter :: Int -> String -> String

-- | Parse a date and convert (if possible) to <a>YYYY-MM-DD</a> format.
normalizeDate :: String -> Maybe String

-- | Generate infinite lazy list of markers for an ordered list, depending
--   on list attributes.
orderedListMarkers :: (Int, ListNumberStyle, ListNumberDelim) -> [String]

-- | Normalize a list of inline elements: remove leading and trailing
--   <tt>Space</tt> elements, collapse double <tt>Space</tt>s into singles,
--   and remove empty Str elements.
normalizeSpaces :: [Inline] -> [Inline]

-- | Normalize <tt>Pandoc</tt> document, consolidating doubled
--   <a>Space</a>s, combining adjacent <a>Str</a>s and <a>Emph</a>s, remove
--   <a>Null</a>s and empty elements, etc.
normalize :: (Eq a, Data a) => a -> a

-- | Convert list of inlines to a string with formatting removed.
stringify :: [Inline] -> String

-- | Change final list item from <tt>Para</tt> to <tt>Plain</tt> if the
--   list contains no other <tt>Para</tt> blocks.
compactify :: [[Block]] -> [[Block]]

-- | Change final list item from <tt>Para</tt> to <tt>Plain</tt> if the
--   list contains no other <tt>Para</tt> blocks. Like compactify, but
--   operates on <tt>Blocks</tt> rather than <tt>[Block]</tt>.
compactify' :: [Blocks] -> [Blocks]

-- | Data structure for defining hierarchical Pandoc documents
data Element
Blk :: Block -> Element
Sec :: Int -> [Int] -> Attr -> [Inline] -> [Element] -> Element

-- | Convert list of Pandoc blocks into (hierarchical) list of Elements
hierarchicalize :: [Block] -> [Element]

-- | Generate a unique identifier from a list of inlines. Second argument
--   is a list of already used identifiers.
uniqueIdent :: [Inline] -> [String] -> String

-- | True if block is a Header block.
isHeaderBlock :: Block -> Bool

-- | Shift header levels up or down.
headerShift :: Int -> Pandoc -> Pandoc

-- | Detect if a list is tight.
isTightList :: [[Block]] -> Bool

-- | Render HTML tags.
renderTags' :: [Tag String] -> String

-- | Perform an IO action in a directory, returning to starting directory.
inDirectory :: FilePath -> IO a -> IO a

-- | Read file from specified user data directory or, if not found there,
--   from Cabal data directory.
readDataFile :: Maybe FilePath -> FilePath -> IO ByteString

-- | Same as <a>readDataFile</a> but returns a String instead of a
--   ByteString.
readDataFileUTF8 :: Maybe FilePath -> FilePath -> IO String

-- | Fetch an image or other item from the local filesystem or the net.
--   Returns raw content and maybe mime type.
fetchItem :: String -> String -> IO (ByteString, Maybe String)

-- | Read from a URL and return raw data and maybe mime type.
openURL :: String -> IO (ByteString, Maybe String)
err :: Int -> String -> IO a
warn :: String -> IO ()
safeRead :: (Monad m, Read a) => String -> m a
instance Typeable Element
instance Eq Element
instance Read Element
instance Show Element
instance Data Element


module Text.Pandoc.Biblio

-- | Process a <a>Pandoc</a> document by adding citations formatted
--   according to a CSL style, using <a>citeproc</a> from citeproc-hs.
processBiblio :: Maybe Style -> [Reference] -> Pandoc -> Pandoc


-- | Functions for converting an HTML file into one that can be viewed
--   offline, by incorporating linked images, CSS, and scripts into the
--   HTML using data URIs.
module Text.Pandoc.SelfContained

-- | Convert HTML into self-contained HTML, incorporating images, scripts,
--   and CSS using data: URIs. Items specified using absolute URLs will be
--   downloaded; those specified using relative URLs will be sought first
--   relative to the working directory, then relative to the user data
--   directory (if the first parameter is <a>Just</a> a directory), and
--   finally relative to pandoc's default data directory.
makeSelfContained :: Maybe FilePath -> String -> IO String


-- | Conversion of a string representation of a pandoc type
--   (<tt>Pandoc</tt>, <tt>[Block]</tt>, <tt>Block</tt>, <tt>[Inline]</tt>,
--   or <tt>Inline</tt>) to a <tt>Pandoc</tt> document.
module Text.Pandoc.Readers.Native

-- | 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,
--   
--   <pre>
--   Str "hi"
--   </pre>
--   
--   will be treated as if it were
--   
--   <pre>
--   Pandoc (Meta [] [] []) [Plain [Str "hi"]]
--   </pre>
readNative :: String -> Pandoc


-- | A simple templating system with variable substitution and
--   conditionals. Example:
--   
--   <pre>
--   renderTemplate [("name","Sam"),("salary","50,000")] $
--      "Hi, $name$.  $if(salary)$You make $$$salary$.$else$No salary data.$endif$"
--   "Hi, John.  You make $50,000."
--   </pre>
--   
--   A slot for an interpolated variable is a variable name surrounded by
--   dollar signs. To include a literal <tt>$</tt> in your template, use
--   <tt>$$</tt>. Variable names must begin with a letter and can contain
--   letters, numbers, <tt>_</tt>, and <tt>-</tt>.
--   
--   The value of a variable will be indented to the same level as the
--   variable.
--   
--   A conditional begins with <tt>$if(variable_name)$</tt> and ends with
--   <tt>$endif$</tt>. It may optionally contain an <tt>$else$</tt>
--   section. The if section is used if <tt>variable_name</tt> has a
--   non-null value, otherwise the else section is used.
--   
--   Conditional keywords should not be indented, or unexpected spacing
--   problems may occur.
--   
--   If a variable name is associated with multiple values in the
--   association list passed to <a>renderTemplate</a>, you may use the
--   <tt>$for$</tt> keyword to iterate over them:
--   
--   <pre>
--   renderTemplate [("name","Sam"),("name","Joe")] $
--     "$for(name)$\nHi, $name$.\n$endfor$"
--   "Hi, Sam.\nHi, Joe."
--   </pre>
--   
--   You may optionally specify separators using <tt>$sep$</tt>:
--   
--   <pre>
--   renderTemplate [("name","Sam"),("name","Joe"),("name","Lynn")] $
--     "Hi, $for(name)$$name$$sep$, $endfor$"
--   "Hi, Sam, Joe, Lynn."
--   </pre>
module Text.Pandoc.Templates

-- | Renders a template
renderTemplate :: TemplateTarget a => [(String, String)] -> String -> a
class TemplateTarget a

-- | Get default template for the specified writer.
getDefaultTemplate :: (Maybe FilePath) -> String -> IO (Either IOException String)
instance TemplateTarget Html
instance TemplateTarget ByteString
instance TemplateTarget String


-- | Data structures and functions for representing parser and writer
--   options.
module Text.Pandoc.Options

-- | Individually selectable syntax extensions.
data Extension

-- | Pandoc<i>PHP</i>MMD style footnotes
Ext_footnotes :: Extension

-- | Pandoc-style inline notes
Ext_inline_notes :: Extension

-- | Pandoc title block
Ext_pandoc_title_block :: Extension

-- | Multimarkdown metadata block
Ext_mmd_title_block :: Extension

-- | Pandoc-style table captions
Ext_table_captions :: Extension

-- | A paragraph with just an image is a figure
Ext_implicit_figures :: Extension

-- | Pandoc-style simple tables
Ext_simple_tables :: Extension

-- | Pandoc-style multiline tables
Ext_multiline_tables :: Extension

-- | Grid tables (pandoc, reST)
Ext_grid_tables :: Extension

-- | Pipe tables (as in PHP markdown extra)
Ext_pipe_tables :: Extension

-- | Pandoc/citeproc citations
Ext_citations :: Extension

-- | Allow raw TeX (other than math)
Ext_raw_tex :: Extension

-- | Allow raw HTML
Ext_raw_html :: Extension

-- | TeX math between $..$ or $$..$$
Ext_tex_math_dollars :: Extension

-- | TeX math btw (..) [..]
Ext_tex_math_single_backslash :: Extension

-- | TeX math btw \(..\) \[..\]
Ext_tex_math_double_backslash :: Extension

-- | Parse LaTeX macro definitions (for math only)
Ext_latex_macros :: Extension

-- | Parse fenced code blocks
Ext_fenced_code_blocks :: Extension

-- | Allow attributes on fenced code blocks
Ext_fenced_code_attributes :: Extension

-- | Github style ``` code blocks
Ext_backtick_code_blocks :: Extension

-- | Allow attributes on inline code
Ext_inline_code_attributes :: Extension

-- | Interpret as markdown inside HTML blocks
Ext_markdown_in_html_blocks :: Extension

-- | Interpret text inside HTML as markdown iff container has attribute
--   <tt>markdown</tt>
Ext_markdown_attribute :: Extension

-- | Treat a backslash at EOL as linebreak
Ext_escaped_line_breaks :: Extension

-- | MMD style reference link attributes
Ext_link_attributes :: Extension

-- | Make all absolute URIs into links
Ext_autolink_bare_uris :: Extension

-- | Enable fancy list numbers and delimiters
Ext_fancy_lists :: Extension

-- | Make start number of ordered list significant
Ext_startnum :: Extension

-- | Definition lists as in pandoc, mmd, php
Ext_definition_lists :: Extension

-- | Markdown-style numbered examples
Ext_example_lists :: Extension

-- | Make all non-alphanumerics escapable
Ext_all_symbols_escapable :: Extension

-- | Treat underscore inside word as literal
Ext_intraword_underscores :: Extension

-- | Require blank line before a blockquote
Ext_blank_before_blockquote :: Extension

-- | Require blank line before a header
Ext_blank_before_header :: Extension

-- | Strikeout using ~~this~~ syntax
Ext_strikeout :: Extension

-- | Superscript using ^this^ syntax
Ext_superscript :: Extension

-- | Subscript using ~this~ syntax
Ext_subscript :: Extension

-- | All newlines become hard line breaks
Ext_hard_line_breaks :: Extension

-- | Enable literate Haskell conventions
Ext_literate_haskell :: Extension

-- | PHP markdown extra abbreviation definitions
Ext_abbreviations :: Extension

-- | Automatic identifiers for headers
Ext_auto_identifiers :: Extension

-- | Explicit header attributes {#id .class k=v}
Ext_header_attributes :: Extension

-- | Multimarkdown style header identifiers [myid]
Ext_mmd_header_identifiers :: Extension

-- | Implicit reference links for headers
Ext_implicit_header_references :: Extension

-- | RST style line blocks
Ext_line_blocks :: Extension
pandocExtensions :: Set Extension
strictExtensions :: Set Extension
phpMarkdownExtraExtensions :: Set Extension
githubMarkdownExtensions :: Set Extension
multimarkdownExtensions :: Set Extension
data ReaderOptions
ReaderOptions :: Set Extension -> Bool -> Bool -> Bool -> Bool -> Int -> Int -> Bool -> [Reference] -> Maybe Style -> Bool -> [String] -> String -> ReaderOptions

-- | Syntax extensions
readerExtensions :: ReaderOptions -> Set Extension

-- | Smart punctuation
readerSmart :: ReaderOptions -> Bool

-- | FOR TRANSITION ONLY
readerStrict :: ReaderOptions -> Bool

-- | Standalone document with header
readerStandalone :: ReaderOptions -> Bool

-- | Parse raw HTML, LaTeX
readerParseRaw :: ReaderOptions -> Bool

-- | Number of columns in terminal
readerColumns :: ReaderOptions -> Int

-- | Tab stop
readerTabStop :: ReaderOptions -> Int

-- | Use pandoc &lt;= 1.8.2.1 behavior in parsing dashes; -- is em-dash; -
--   before numerial is en-dash
readerOldDashes :: ReaderOptions -> Bool

-- | Bibliographic references
readerReferences :: ReaderOptions -> [Reference]

-- | Citation style
readerCitationStyle :: ReaderOptions -> Maybe Style

-- | Apply macros to TeX math
readerApplyMacros :: ReaderOptions -> Bool

-- | Default classes for indented code blocks
readerIndentedCodeClasses :: ReaderOptions -> [String]

-- | Default extension for images
readerDefaultImageExtension :: ReaderOptions -> String
data HTMLMathMethod
PlainMath :: HTMLMathMethod
LaTeXMathML :: (Maybe String) -> HTMLMathMethod
JsMath :: (Maybe String) -> HTMLMathMethod
GladTeX :: HTMLMathMethod
WebTeX :: String -> HTMLMathMethod
MathML :: (Maybe String) -> HTMLMathMethod
MathJax :: String -> HTMLMathMethod
data CiteMethod
Citeproc :: CiteMethod
Natbib :: CiteMethod
Biblatex :: CiteMethod

-- | Methods for obfuscating email addresses in HTML.
data ObfuscationMethod
NoObfuscation :: ObfuscationMethod
ReferenceObfuscation :: ObfuscationMethod
JavascriptObfuscation :: ObfuscationMethod

-- | Varieties of HTML slide shows.
data HTMLSlideVariant
S5Slides :: HTMLSlideVariant
SlidySlides :: HTMLSlideVariant
SlideousSlides :: HTMLSlideVariant
DZSlides :: HTMLSlideVariant
NoSlides :: HTMLSlideVariant
data EPUBVersion
EPUB2 :: EPUBVersion
EPUB3 :: EPUBVersion

-- | Options for writers
data WriterOptions
WriterOptions :: Bool -> String -> [(String, String)] -> Int -> Bool -> HTMLSlideVariant -> Bool -> HTMLMathMethod -> Bool -> Bool -> [Int] -> Bool -> Set Extension -> Bool -> Bool -> Int -> ObfuscationMethod -> String -> FilePath -> Maybe FilePath -> CiteMethod -> [FilePath] -> Bool -> Bool -> Bool -> Maybe Int -> Bool -> Bool -> Bool -> Style -> Bool -> Bool -> Maybe EPUBVersion -> String -> Maybe String -> [FilePath] -> Int -> Int -> Maybe FilePath -> Maybe FilePath -> WriterOptions

-- | Include header and footer
writerStandalone :: WriterOptions -> Bool

-- | Template to use in standalone mode
writerTemplate :: WriterOptions -> String

-- | Variables to set in template
writerVariables :: WriterOptions -> [(String, String)]

-- | Tabstop for conversion btw spaces and tabs
writerTabStop :: WriterOptions -> Int

-- | Include table of contents
writerTableOfContents :: WriterOptions -> Bool

-- | Are we writing S5, Slidy or Slideous?
writerSlideVariant :: WriterOptions -> HTMLSlideVariant

-- | True if lists should be incremental
writerIncremental :: WriterOptions -> Bool

-- | How to print math in HTML
writerHTMLMathMethod :: WriterOptions -> HTMLMathMethod

-- | Ignore footnotes (used in making toc)
writerIgnoreNotes :: WriterOptions -> Bool

-- | Number sections in LaTeX
writerNumberSections :: WriterOptions -> Bool

-- | Starting number for section, subsection, ...
writerNumberOffset :: WriterOptions -> [Int]

-- | Put sections in div tags in HTML
writerSectionDivs :: WriterOptions -> Bool

-- | Markdown extensions that can be used
writerExtensions :: WriterOptions -> Set Extension

-- | Use reference links in writing markdown, rst
writerReferenceLinks :: WriterOptions -> Bool

-- | Wrap text to line length
writerWrapText :: WriterOptions -> Bool

-- | Characters in a line (for text wrapping)
writerColumns :: WriterOptions -> Int

-- | How to obfuscate emails
writerEmailObfuscation :: WriterOptions -> ObfuscationMethod

-- | Prefix for section &amp; note ids in HTML and for footnote marks in
--   markdown
writerIdentifierPrefix :: WriterOptions -> String

-- | Directory path of 1st source file
writerSourceDirectory :: WriterOptions -> FilePath

-- | Path of user data directory
writerUserDataDir :: WriterOptions -> Maybe FilePath

-- | How to print cites
writerCiteMethod :: WriterOptions -> CiteMethod

-- | Biblio files to use for citations
writerBiblioFiles :: WriterOptions -> [FilePath]

-- | Produce HTML5
writerHtml5 :: WriterOptions -> Bool

-- | Use <tt><a>q</a></tt> tags for quotes in HTML
writerHtmlQTags :: WriterOptions -> Bool

-- | Produce beamer LaTeX slide show
writerBeamer :: WriterOptions -> Bool

-- | Force header level of slides
writerSlideLevel :: WriterOptions -> Maybe Int

-- | Use <a>chapter</a> for top-level sects
writerChapters :: WriterOptions -> Bool

-- | Use listings package for code
writerListings :: WriterOptions -> Bool

-- | Highlight source code
writerHighlight :: WriterOptions -> Bool

-- | Style to use for highlighting
writerHighlightStyle :: WriterOptions -> Style

-- | Use setext headers for levels 1-2 in markdown
writerSetextHeaders :: WriterOptions -> Bool

-- | Use tex ligatures quotes, dashes in latex
writerTeXLigatures :: WriterOptions -> Bool

-- | Nothing or EPUB version
writerEpubVersion :: WriterOptions -> Maybe EPUBVersion

-- | Metadata to include in EPUB
writerEpubMetadata :: WriterOptions -> String

-- | EPUB stylesheet specified at command line
writerEpubStylesheet :: WriterOptions -> Maybe String

-- | Paths to fonts to embed
writerEpubFonts :: WriterOptions -> [FilePath]

-- | Header level for chapters (separate files)
writerEpubChapterLevel :: WriterOptions -> Int

-- | Number of levels to include in TOC
writerTOCDepth :: WriterOptions -> Int

-- | Path to reference ODT if specified
writerReferenceODT :: WriterOptions -> Maybe FilePath

-- | Ptah to reference DOCX if specified
writerReferenceDocx :: WriterOptions -> Maybe FilePath

-- | The default value for this type.
def :: Default a => a

-- | Returns True if the given extension is enabled.
isEnabled :: Extension -> WriterOptions -> Bool
instance Show Extension
instance Read Extension
instance Enum Extension
instance Eq Extension
instance Ord Extension
instance Bounded Extension
instance Show ReaderOptions
instance Read ReaderOptions
instance Eq EPUBVersion
instance Show EPUBVersion
instance Read EPUBVersion
instance Show HTMLMathMethod
instance Read HTMLMathMethod
instance Eq HTMLMathMethod
instance Show CiteMethod
instance Read CiteMethod
instance Eq CiteMethod
instance Show ObfuscationMethod
instance Read ObfuscationMethod
instance Eq ObfuscationMethod
instance Show HTMLSlideVariant
instance Read HTMLSlideVariant
instance Eq HTMLSlideVariant
instance Show WriterOptions
instance Default WriterOptions
instance Default ReaderOptions

module Text.Pandoc.Readers.DocBook
readDocBook :: ReaderOptions -> String -> Pandoc
instance Show DBState


-- | Conversion of a <a>Pandoc</a> document to a string representation.
--   
--   Note: If <tt>writerStandalone</tt> is <tt>False</tt>, only the
--   document body is represented; otherwise, the full <a>Pandoc</a>
--   document, including the metadata.
module Text.Pandoc.Writers.Native

-- | Prettyprint Pandoc document.
writeNative :: WriterOptions -> Pandoc -> String


-- | Conversion of <a>Pandoc</a> documents to reStructuredText.
--   
--   reStructuredText: <a>http://docutils.sourceforge.net/rst.html</a>
module Text.Pandoc.Writers.RST

-- | Convert Pandoc to RST.
writeRST :: WriterOptions -> Pandoc -> String


-- | Conversion of <a>Pandoc</a> format into LaTeX.
module Text.Pandoc.Writers.LaTeX

-- | Convert Pandoc to LaTeX.
writeLaTeX :: WriterOptions -> Pandoc -> String


-- | Conversion of <a>Pandoc</a> format into ConTeXt.
module Text.Pandoc.Writers.ConTeXt

-- | Convert Pandoc to ConTeXt.
writeConTeXt :: WriterOptions -> Pandoc -> String


-- | Conversion of <a>Pandoc</a> format into Texinfo.
module Text.Pandoc.Writers.Texinfo

-- | Convert Pandoc to Texinfo.
writeTexinfo :: WriterOptions -> Pandoc -> String


-- | Conversion of <a>Pandoc</a> documents to HTML.
module Text.Pandoc.Writers.HTML

-- | Convert Pandoc document to Html structure.
writeHtml :: WriterOptions -> Pandoc -> Html

-- | Convert Pandoc document to Html string.
writeHtmlString :: WriterOptions -> Pandoc -> String


-- | Conversion of <a>Pandoc</a> documents to docx.
module Text.Pandoc.Writers.Docx

-- | Produce an Docx file from a Pandoc document.
writeDocx :: WriterOptions -> Pandoc -> IO ByteString
instance Show ListMarker
instance Read ListMarker
instance Eq ListMarker
instance Ord ListMarker


-- | Conversion of <a>Pandoc</a> documents to FB2 (FictionBook2) format.
--   
--   FictionBook is an XML-based e-book format. For more information see:
--   <a>http://www.fictionbook.org/index.php/Eng:XML_Schema_Fictionbook_2.1</a>
module Text.Pandoc.Writers.FB2

-- | Produce an FB2 document from a <a>Pandoc</a> document.
writeFB2 :: WriterOptions -> Pandoc -> IO String
instance Show FbRenderState
instance Eq ImageMode
instance Show ImageMode


-- | Conversion of <a>Pandoc</a> documents to Docbook XML.
module Text.Pandoc.Writers.Docbook

-- | Convert Pandoc document to string in Docbook format.
writeDocbook :: WriterOptions -> Pandoc -> String


-- | Conversion of <a>Pandoc</a> documents to OpenDocument XML.
module Text.Pandoc.Writers.OpenDocument

-- | Convert Pandoc document to string in OpenDocument format.
writeOpenDocument :: WriterOptions -> Pandoc -> String
instance Eq TextStyle
instance Ord TextStyle


-- | Conversion of <a>Pandoc</a> documents to ODT.
module Text.Pandoc.Writers.ODT

-- | Produce an ODT file from a Pandoc document.
writeODT :: WriterOptions -> Pandoc -> IO ByteString


-- | Conversion of <a>Pandoc</a> documents to groff man page format.
module Text.Pandoc.Writers.Man

-- | Convert Pandoc to Man.
writeMan :: WriterOptions -> Pandoc -> String


-- | Conversion of <a>Pandoc</a> documents to RTF (rich text format).
module Text.Pandoc.Writers.RTF

-- | Convert Pandoc to a string in rich text format.
writeRTF :: WriterOptions -> Pandoc -> String

-- | Convert Pandoc to a string in rich text format, with images embedded
--   as encoded binary data.
writeRTFWithEmbeddedImages :: WriterOptions -> Pandoc -> IO String


-- | Conversion of <a>Pandoc</a> documents to MediaWiki markup.
--   
--   MediaWiki: <a>http://www.mediawiki.org/wiki/MediaWiki</a>
module Text.Pandoc.Writers.MediaWiki

-- | Convert Pandoc to MediaWiki.
writeMediaWiki :: WriterOptions -> Pandoc -> String


-- | Conversion of <a>Pandoc</a> documents to Textile markup.
--   
--   Textile:
--   <a>http://thresholdstate.com/articles/4312/the-textile-reference-manual</a>
module Text.Pandoc.Writers.Textile

-- | Convert Pandoc to Textile.
writeTextile :: WriterOptions -> Pandoc -> String


-- | Conversion of <a>Pandoc</a> documents to Emacs Org-Mode.
--   
--   Org-Mode: <a>http://orgmode.org</a>
module Text.Pandoc.Writers.Org

-- | Convert Pandoc to Org.
writeOrg :: WriterOptions -> Pandoc -> String


-- | Conversion from reStructuredText to <a>Pandoc</a> document.
module Text.Pandoc.Readers.RST

-- | Parse reStructuredText string and return Pandoc document.
readRST :: ReaderOptions -> String -> Pandoc


-- | Conversion of LaTeX to <a>Pandoc</a> document.
module Text.Pandoc.Readers.LaTeX

-- | Parse LaTeX from string and return <a>Pandoc</a> document.
readLaTeX :: ReaderOptions -> String -> Pandoc
rawLaTeXInline :: Parser [Char] ParserState Inline
rawLaTeXBlock :: Parser [Char] ParserState String

-- | Replace <a>include</a> commands with file contents.
handleIncludes :: String -> IO String


-- | Conversion of HTML to <a>Pandoc</a> document.
module Text.Pandoc.Readers.HTML

-- | Convert HTML-formatted string to <a>Pandoc</a> document.
readHtml :: ReaderOptions -> String -> Pandoc

-- | Matches a tag meeting a certain condition.
htmlTag :: (Tag String -> Bool) -> Parser [Char] st (Tag String, String)

-- | Matches a stretch of HTML in balanced tags.
htmlInBalanced :: (Tag String -> Bool) -> Parser [Char] ParserState String
isInlineTag :: Tag String -> Bool
isBlockTag :: Tag String -> Bool
isTextTag :: Tag String -> Bool
isCommentTag :: Tag String -> Bool


-- | Conversion of markdown-formatted plain text to <a>Pandoc</a> document.
module Text.Pandoc.Readers.Markdown

-- | Read markdown from an input string and return a Pandoc document.
readMarkdown :: ReaderOptions -> String -> Pandoc

-- | Read markdown from an input string and return a pair of a Pandoc
--   document and a list of warnings.
readMarkdownWithWarnings :: ReaderOptions -> String -> (Pandoc, [String])


-- | Conversion of mediawiki text to <a>Pandoc</a> document.
module Text.Pandoc.Readers.MediaWiki

-- | Read mediawiki from an input string and return a Pandoc document.
readMediaWiki :: ReaderOptions -> String -> Pandoc


-- | Conversion from Textile to <a>Pandoc</a> document, based on the spec
--   available at http:<i></i>redcloth.org/textile.
--   
--   Implemented and parsed: - Paragraphs - Code blocks - Lists -
--   blockquote - Inlines : strong, emph, cite, code, deleted, superscript,
--   subscript, links - footnotes - HTML-specific and CSS-specific
--   attributes on headers
--   
--   Left to be implemented: - dimension sign - all caps - continued blocks
--   (ex bq..)
--   
--   TODO : refactor common patterns across readers : - more ...
module Text.Pandoc.Readers.Textile

-- | Parse a Textile text and return a Pandoc document.
readTextile :: ReaderOptions -> String -> Pandoc


-- | Conversion of <a>Pandoc</a> documents to markdown-formatted plain
--   text.
--   
--   Markdown: <a>http://daringfireball.net/projects/markdown/</a>
module Text.Pandoc.Writers.Markdown

-- | Convert Pandoc to Markdown.
writeMarkdown :: WriterOptions -> Pandoc -> String

-- | Convert Pandoc to plain text (like markdown, but without links,
--   pictures, or inline formatting).
writePlain :: WriterOptions -> Pandoc -> String
instance Default WriterState


-- | Conversion of <a>Pandoc</a> documents to EPUB.
module Text.Pandoc.Writers.EPUB

-- | Produce an EPUB file from a Pandoc document.
writeEPUB :: WriterOptions -> Pandoc -> IO ByteString
instance Read IdentState
instance Show IdentState


-- | Conversion of <a>Pandoc</a> documents to asciidoc.
--   
--   Note that some information may be lost in conversion, due to
--   expressive limitations of asciidoc. Footnotes and table cells with
--   paragraphs (or other block items) are not possible in asciidoc. If
--   pandoc encounters one of these, it will insert a message indicating
--   that it has omitted the construct.
--   
--   AsciiDoc: <a>http://www.methods.co.nz/asciidoc/</a>
module Text.Pandoc.Writers.AsciiDoc

-- | Convert Pandoc to AsciiDoc.
writeAsciiDoc :: WriterOptions -> Pandoc -> String


-- | 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:
--   
--   <pre>
--   module Main where
--   import Text.Pandoc
--   -- include the following two lines only if you're using ghc &lt; 6.12:
--   import Prelude hiding (getContents, putStrLn)
--   import System.IO.UTF8
--   
--   markdownToRST :: String -&gt; String
--   markdownToRST =
--     (writeRST def {writerReferenceLinks = True}) . readMarkdown def
--   
--   main = getContents &gt;&gt;= putStrLn . markdownToRST
--   </pre>
--   
--   Note: all of the readers assume that the input text has <tt>'\n'</tt>
--   line endings. So if you get your input text from a web form, you
--   should remove <tt>'\r'</tt> characters using <tt>filter (/='\r')</tt>.
module Text.Pandoc

-- | Association list of formats and readers.
readers :: [(String, ReaderOptions -> String -> IO Pandoc)]

-- | Association list of formats and writers.
writers :: [(String, Writer)]

-- | Read markdown from an input string and return a Pandoc document.
readMarkdown :: ReaderOptions -> String -> Pandoc

-- | Read mediawiki from an input string and return a Pandoc document.
readMediaWiki :: ReaderOptions -> String -> Pandoc

-- | Parse reStructuredText string and return Pandoc document.
readRST :: ReaderOptions -> String -> Pandoc

-- | Parse LaTeX from string and return <a>Pandoc</a> document.
readLaTeX :: ReaderOptions -> String -> Pandoc

-- | Convert HTML-formatted string to <a>Pandoc</a> document.
readHtml :: ReaderOptions -> String -> Pandoc

-- | Parse a Textile text and return a Pandoc document.
readTextile :: ReaderOptions -> String -> Pandoc
readDocBook :: ReaderOptions -> String -> 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,
--   
--   <pre>
--   Str "hi"
--   </pre>
--   
--   will be treated as if it were
--   
--   <pre>
--   Pandoc (Meta [] [] []) [Plain [Str "hi"]]
--   </pre>
readNative :: String -> Pandoc
data Writer
PureStringWriter :: (WriterOptions -> Pandoc -> String) -> Writer
IOStringWriter :: (WriterOptions -> Pandoc -> IO String) -> Writer
IOByteStringWriter :: (WriterOptions -> Pandoc -> IO ByteString) -> Writer

-- | Prettyprint Pandoc document.
writeNative :: WriterOptions -> Pandoc -> String

-- | Convert Pandoc to Markdown.
writeMarkdown :: WriterOptions -> Pandoc -> String

-- | Convert Pandoc to plain text (like markdown, but without links,
--   pictures, or inline formatting).
writePlain :: WriterOptions -> Pandoc -> String

-- | Convert Pandoc to RST.
writeRST :: WriterOptions -> Pandoc -> String

-- | Convert Pandoc to LaTeX.
writeLaTeX :: WriterOptions -> Pandoc -> String

-- | Convert Pandoc to ConTeXt.
writeConTeXt :: WriterOptions -> Pandoc -> String

-- | Convert Pandoc to Texinfo.
writeTexinfo :: WriterOptions -> Pandoc -> String

-- | Convert Pandoc document to Html structure.
writeHtml :: WriterOptions -> Pandoc -> Html

-- | Convert Pandoc document to Html string.
writeHtmlString :: WriterOptions -> Pandoc -> String

-- | Convert Pandoc document to string in Docbook format.
writeDocbook :: WriterOptions -> Pandoc -> String

-- | Convert Pandoc document to string in OpenDocument format.
writeOpenDocument :: WriterOptions -> Pandoc -> String

-- | Convert Pandoc to Man.
writeMan :: WriterOptions -> Pandoc -> String

-- | Convert Pandoc to MediaWiki.
writeMediaWiki :: WriterOptions -> Pandoc -> String

-- | Convert Pandoc to Textile.
writeTextile :: WriterOptions -> Pandoc -> String

-- | Convert Pandoc to a string in rich text format.
writeRTF :: WriterOptions -> Pandoc -> String

-- | Produce an ODT file from a Pandoc document.
writeODT :: WriterOptions -> Pandoc -> IO ByteString

-- | Produce an Docx file from a Pandoc document.
writeDocx :: WriterOptions -> Pandoc -> IO ByteString

-- | Produce an EPUB file from a Pandoc document.
writeEPUB :: WriterOptions -> Pandoc -> IO ByteString

-- | Produce an FB2 document from a <a>Pandoc</a> document.
writeFB2 :: WriterOptions -> Pandoc -> IO String

-- | Convert Pandoc to Org.
writeOrg :: WriterOptions -> Pandoc -> String

-- | Convert Pandoc to AsciiDoc.
writeAsciiDoc :: WriterOptions -> Pandoc -> String

-- | Version number of pandoc library.
pandocVersion :: String

-- | Retrieve reader based on formatSpec (format+extensions).
getReader :: String -> Either String (ReaderOptions -> String -> IO Pandoc)

-- | Retrieve writer based on formatSpec (format+extensions).
getWriter :: String -> Either String Writer

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

-- | <i>Deprecated: Use toJsonFilter instead</i>
jsonFilter :: (Pandoc -> Pandoc) -> String -> String

-- | <a>toJsonFilter</a> convert a function into a filter that reads
--   pandoc's json output from stdin, transforms it by walking the AST and
--   applying the specified function, and writes the result as json to
--   stdout. Usage example:
--   
--   <pre>
--   -- capitalize.hs
--   -- compile with:  ghc --make capitalize
--   -- run with:      pandoc -t json | ./capitalize | pandoc -f json
--   
--   import Text.Pandoc
--   import Data.Char (toUpper)
--   
--   main :: IO ()
--   main = toJsonFilter capitalizeStrings
--   
--   capitalizeStrings :: Inline -&gt; Inline
--   capitalizeStrings (Str s) = Str $ map toUpper s
--   capitalizeStrings x       = x
--   </pre>
--   
--   The function can be any type <tt>(a -&gt; a)</tt>, <tt>(a -&gt; IO
--   a)</tt>, <tt>(a -&gt; [a])</tt>, or <tt>(a -&gt; IO [a])</tt>, where
--   <tt>a</tt> is an instance of <a>Data</a>. So, for example, <tt>a</tt>
--   can be <a>Pandoc</a>, <a>Inline</a>, <a>Block</a>, [<a>Inline</a>],
--   [<a>Block</a>], <a>Meta</a>, <a>ListNumberStyle</a>, <a>Alignment</a>,
--   <a>ListNumberDelim</a>, <a>QuoteType</a>, etc. See <a>Definition</a>.
class ToJsonFilter a
toJsonFilter :: ToJsonFilter a => a -> IO ()
instance Data a => ToJsonFilter (a -> IO [a])
instance Data a => ToJsonFilter (a -> [a])
instance Data a => ToJsonFilter (a -> IO a)
instance Data a => ToJsonFilter (a -> a)
