-- 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, Haddock markup, OPML, and Textile, and it can write
--   markdown, reStructuredText, HTML, LaTeX, ConTeXt, Docbook, OPML,
--   OpenDocument, ODT, Word docx, RTF, MediaWiki, Textile, groff man
--   pages, plain text, Emacs Org-Mode, AsciiDoc, EPUB (v2 and v3),
--   FictionBook2, and several kinds of HTML/javascript slide shows (S5,
--   Slidy, Slideous, DZSlides, reveal.js).
--   
--   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.12.2.1

-- | ByteString variant of readProcessWithExitCode.
module Text.Pandoc.Process

-- | Version of readProcessWithExitCode that uses lazy bytestrings
--   instead of strings and allows setting environment variables.
--   
--   readProcessWithExitCode creates an external process, reads
--   its standard output and standard error strictly, waits until the
--   process terminates, and then returns the ExitCode of the
--   process, the standard output, and the standard error.
--   
--   If an asynchronous exception is thrown to the thread executing
--   readProcessWithExitCode. The forked process will be
--   terminated and readProcessWithExitCode will wait (block)
--   until the process has been terminated.
pipeProcess :: Maybe [(String, String)] -> FilePath -> [String] -> ByteString -> IO (ExitCode, ByteString, ByteString)

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

-- | Converts a raw TeX math formula to a list of Pandoc inlines.
--   Defaults to raw formula between $ characters if entire
--   formula can't be converted. (This is provided for backwards
--   compatibility; it is better to use readTeXMath', which
--   properly distinguishes between display and inline math.)

-- | Deprecated: Use readTeXMath' from Text.Pandoc.JSON instead 
readTeXMath :: String -> [Inline]

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

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

-- | Renders a Doc. render (Just n) will use a line length
--   of n to reflow text on breakable spaces. render
--   Nothing 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. (blankline 
--   blankline has the same effect as blankline. If you want
--   multiple blank lines, use text \n\n.
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 Doc flush against the left margin.
flush :: Doc -> Doc

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

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

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

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

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

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

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

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

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

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

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

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

-- | a $$ b puts a above b, 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 Docs.
cat :: [Doc] -> Doc

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

-- | Same as cat, but putting breakable spaces between the
--   Docs.
hsep :: [Doc] -> Doc

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

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

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

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

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

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

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

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

-- | Wraps a Doc 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

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

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

-- | 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 < 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 YYYY-MM-DD 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
--   Space elements, collapse double Spaces into singles,
--   and remove empty Str elements.
normalizeSpaces :: [Inline] -> [Inline]

-- | Normalize Pandoc document, consolidating doubled
--   Spaces, combining adjacent Strs and Emphs, remove
--   Nulls and empty elements, etc.
normalize :: (Eq a, Data a) => a -> a

-- | Convert pandoc structure to a string with formatting removed.
--   Footnotes are skipped (since we don't want their contents in link
--   labels).
stringify :: Walkable Inline a => a -> String

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

-- | Change final list item from Para to Plain if the
--   list contains no other Para blocks. Like compactify, but
--   operates on Blocks rather than [Block].
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

-- | Set a field of a Meta object. If the field already has a value,
--   convert it into a list with the new value appended to the old
--   value(s).
addMetaField :: ToMetaValue a => String -> a -> Meta -> Meta

-- | Create Meta from old-style title, authors, date. This is
--   provided to ease the transition from the old API.
makeMeta :: [Inline] -> [[Inline]] -> [Inline] -> Meta

-- | 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 readDataFile 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 :: Maybe String -> String -> IO (Either SomeException (ByteString, Maybe String))

-- | Read from a URL and return raw data and maybe mime type.
openURL :: String -> IO (Either SomeException (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
instance Walkable Block Element
instance Walkable Inline Element

-- | 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 Just 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
--   (Pandoc, [Block], Block, [Inline],
--   or Inline) to a Pandoc 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,
--   
--   
--   Str "hi"
--   
--   
--   will be treated as if it were
--   
--   
--   Pandoc nullMeta [Plain [Str "hi"]]
--   
readNative :: String -> Pandoc

-- | A simple templating system with variable substitution and
--   conditionals. The following program illustrates its use:
--   
--   
--   
--   import Data.Text
--   import Data.Aeson
--   import Text.Pandoc.Templates
--   
--   data Employee = Employee { firstName :: String
--                            , lastName  :: String
--                            , salary    :: Maybe Int }
--   instance ToJSON Employee where
--     toJSON e = object [ "name" .= object [ "first" .= firstName e
--                                          , "last"  .= lastName e ]
--                       , "salary" .= salary e ]
--   
--   employees :: [Employee]
--   employees = [ Employee "John" "Doe" Nothing
--               , Employee "Omar" "Smith" (Just 30000)
--               , Employee "Sara" "Chen" (Just 60000) ]
--   
--   template :: Template
--   template = either error id $ compileTemplate
--     "$for(employee)$Hi, $employee.name.first$. $if(employee.salary)$You make $employee.salary$.$else$No salary data.$endif$$sep$\n$endfor$"
--   
--   main = putStrLn $ renderTemplate template $ object ["employee" .= employees ]
--   
--   
--   A slot for an interpolated variable is a variable name surrounded by
--   dollar signs. To include a literal $ in your template, use
--   $$. Variable names must begin with a letter and can contain
--   letters, numbers, _, -, and ..
--   
--   The values of variables are determined by a JSON object that is passed
--   as a parameter to renderTemplate. So, for example,
--   title will return the value of the title field, and
--   employee.salary will return the value of the salary
--   field of the object that is the value of the employee field.
--   
--   The value of a variable will be indented to the same level as the
--   variable.
--   
--   A conditional begins with $if(variable_name)$ and ends with
--   $endif$. It may optionally contain an $else$
--   section. The if section is used if variable_name has a
--   non-null value, otherwise the else section is used.
--   
--   Conditional keywords should not be indented, or unexpected spacing
--   problems may occur.
--   
--   The $for$ keyword can be used to iterate over an array. If
--   the value of the associated variable is not an array, a single
--   iteration will be performed on its value.
--   
--   You may optionally specify separators using $sep$, as in the
--   example above.
module Text.Pandoc.Templates
renderTemplate :: (ToJSON a, TemplateTarget b) => Template -> a -> b

-- | Like renderTemplate, but compiles the template first, raising
--   an error if compilation fails.
renderTemplate' :: (ToJSON a, TemplateTarget b) => String -> a -> b
class TemplateTarget a
toTarget :: TemplateTarget a => Text -> a
varListToJSON :: [(String, String)] -> Value
compileTemplate :: Text -> Either String Template
data Template

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

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

-- | Individually selectable syntax extensions.
data Extension

-- | PandocPHPMMD style footnotes
Ext_footnotes :: Extension

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

-- | Pandoc title block
Ext_pandoc_title_block :: Extension

-- | YAML metadata block
Ext_yaml_metadata_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
--   markdown
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

-- | Allow lists without preceding blank
Ext_lists_without_preceding_blankline :: 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

-- | Newlines in paragraphs are ignored
Ext_ignore_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

-- | ascii-only identifiers for headers
Ext_ascii_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 -> 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 <= 1.8.2.1 behavior in parsing dashes; -- is em-dash; -
--   before numerial is en-dash
readerOldDashes :: ReaderOptions -> Bool

-- | 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 :: 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
RevealJsSlides :: 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 -> Maybe String -> Maybe FilePath -> CiteMethod -> 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 & note ids in HTML and for footnote marks in
--   markdown
writerIdentifierPrefix :: WriterOptions -> String

-- | Absolute URL + directory of 1st source file
writerSourceURL :: WriterOptions -> Maybe String

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

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

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

-- | Use q 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 chapter 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 Haddock markup to Pandoc document.
module Text.Pandoc.Readers.Haddock

-- | Parse Haddock markup and return a Pandoc document.
readHaddock :: ReaderOptions -> String -> Pandoc

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

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

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

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

-- | Conversion of Pandoc documents to custom markup using a lua
--   writer.
module Text.Pandoc.Writers.Custom

-- | Convert Pandoc to custom markup.
writeCustom :: FilePath -> WriterOptions -> Pandoc -> IO String
instance [overlap ok] StackValue MetaValue
instance [overlap ok] StackValue [Block]
instance [overlap ok] StackValue [Inline]
instance [overlap ok] (StackValue a, StackValue b) => StackValue (a, b)
instance [overlap ok] (StackValue a, StackValue b) => StackValue (Map a b)
instance [overlap ok] StackValue Format
instance [overlap ok] StackValue a => StackValue [a]
instance [overlap ok] StackValue ByteString

-- | Conversion from reStructuredText to Pandoc document.
module Text.Pandoc.Readers.RST

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

-- | Conversion of LaTeX to Pandoc document.
module Text.Pandoc.Readers.LaTeX

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

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

-- | Conversion of HTML to Pandoc document.
module Text.Pandoc.Readers.HTML

-- | Convert HTML-formatted string to Pandoc 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 Pandoc 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 Pandoc document.
module Text.Pandoc.Readers.MediaWiki

-- | Read mediawiki from an input string and return a Pandoc document.
readMediaWiki :: ReaderOptions -> String -> Pandoc
instance HasIdentifierList MWParser
instance HasHeaderMap MWParser
instance HasReaderOptions MWParser

module Text.Pandoc.Readers.OPML
readOPML :: ReaderOptions -> String -> Pandoc
instance Show OPMLState

-- | Conversion from Textile to Pandoc document, based on the spec
--   available at http: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 Pandoc documents to reStructuredText.
--   
--   reStructuredText: http://docutils.sourceforge.net/rst.html
module Text.Pandoc.Writers.RST

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

-- | Conversion of Pandoc format into LaTeX.
module Text.Pandoc.Writers.LaTeX

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

-- | Conversion of Pandoc format into ConTeXt.
module Text.Pandoc.Writers.ConTeXt

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

-- | Conversion of Pandoc format into Texinfo.
module Text.Pandoc.Writers.Texinfo

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

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

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

-- | Conversion of Pandoc documents to Docbook XML.
module Text.Pandoc.Writers.Docbook

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

-- | Conversion of Pandoc documents to OPML XML.
module Text.Pandoc.Writers.OPML

-- | Convert Pandoc document to string in OPML format.
writeOPML :: WriterOptions -> Pandoc -> String

-- | Conversion of Pandoc 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 Pandoc documents to ODT.
module Text.Pandoc.Writers.ODT

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

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

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

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

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

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

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

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

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

-- | Conversion of Pandoc 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: http://www.methods.co.nz/asciidoc/
module Text.Pandoc.Writers.AsciiDoc

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

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

-- | 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
--   
--   markdownToRST :: String -> String
--   markdownToRST =
--     (writeRST def {writerReferenceLinks = True}) . readMarkdown def
--   
--   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').
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 Pandoc document.
readLaTeX :: ReaderOptions -> String -> Pandoc

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

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

-- | Parse Haddock markup and return a Pandoc document.
readHaddock :: 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,
--   
--   
--   Str "hi"
--   
--   
--   will be treated as if it were
--   
--   
--   Pandoc nullMeta [Plain [Str "hi"]]
--   
readNative :: String -> Pandoc
readJSON :: ReaderOptions -> 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
writeJSON :: 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 OPML format.
writeOPML :: 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 Pandoc document.
writeFB2 :: WriterOptions -> Pandoc -> IO String

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

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

-- | Convert Pandoc to custom markup.
writeCustom :: FilePath -> WriterOptions -> Pandoc -> IO 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

-- | Deprecated. Use toJSONFilter from Text.Pandoc.JSON
--   instead.
class ToJSONFilter a => ToJsonFilter a where toJsonFilter = toJSONFilter
toJsonFilter :: ToJsonFilter a => a -> IO ()
