-- 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
--   several dialects of Markdown and (subsets of) HTML, reStructuredText,
--   LaTeX, DocBook, MediaWiki markup, TWiki markup, Haddock markup, OPML,
--   Emacs Org-Mode, txt2tags, Word Docx, ODT, and Textile, and it can
--   write Markdown, reStructuredText, XHTML, HTML 5, LaTeX, ConTeXt,
--   DocBook, OPML, OpenDocument, ODT, Word docx, RTF, MediaWiki, DokuWiki,
--   Textile, groff man pages, plain text, Emacs Org-Mode, AsciiDoc,
--   Haddock markup, EPUB (v2 and v3), FictionBook2, InDesign ICML, and
--   several kinds of HTML/javascript slide shows (S5, Slidy, Slideous,
--   DZSlides, reveal.js).
--   
--   In contrast to most existing tools for converting Markdown to HTML,
--   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.16.0.2


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


-- | 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
--   &lt;&gt; blankline</tt> has the same effect as <tt>blankline</tt>.
blankline :: Doc

-- | Inserts a blank lines unless they exists already. (<tt>blanklines m
--   &lt;&gt; blanklines n</tt> has the same effect as <tt>blankline (max m
--   n)</tt>.
blanklines :: Int -> 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>.
--   
--   <i>Since: 4.5.0.0</i>
(<>) :: 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

-- | Removes leading blank lines from a <a>Doc</a>.
nestle :: 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


-- | Definition of a MediaBag object to hold binary resources, and an
--   interface for interacting with it.
module Text.Pandoc.MediaBag

-- | A container for a collection of binary resources, with names and mime
--   types. Note that a <a>MediaBag</a> is a Monoid, so <a>mempty</a> can
--   be used for an empty <a>MediaBag</a>, and <tt>&lt;&gt;</tt> can be
--   used to append two <a>MediaBag</a>s.
data MediaBag

-- | Lookup a media item in a <a>MediaBag</a>, returning mime type and
--   contents.
lookupMedia :: FilePath -> MediaBag -> Maybe (MimeType, ByteString)

-- | Insert a media item into a <a>MediaBag</a>, replacing any existing
--   value with the same name.
insertMedia :: FilePath -> Maybe MimeType -> ByteString -> MediaBag -> MediaBag

-- | Get a list of the file paths stored in a <a>MediaBag</a>, with their
--   corresponding mime types and the lengths in bytes of the contents.
mediaDirectory :: MediaBag -> [(String, MimeType, Int)]

-- | Extract contents of MediaBag to a given directory. Print informational
--   messages if <tt>verbose</tt> is true.
extractMediaBag :: Bool -> FilePath -> MediaBag -> IO ()
instance Typeable MediaBag
instance Monoid MediaBag
instance Data MediaBag
instance Show MediaBag


-- | 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]
ordNub :: Ord 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 and some punctuation characters 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]

-- | Extract the leading and trailing spaces from inside an inline element
--   and place them outside the element. SoftBreaks count as Spaces for
--   these purposes.
extractSpaces :: (Inlines -> Inlines) -> Inlines -> Inlines

-- | 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 :: Pandoc -> Pandoc
normalizeInlines :: [Inline] -> [Inline]
normalizeBlocks :: [Block] -> [Block]

-- | Extract inlines, removing formatting.
removeFormatting :: Walkable Inline a => a -> [Inline]

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

-- | Bring all regular text in a pandoc structure to uppercase.
--   
--   This function correctly handles cases where a lowercase character
--   doesn't match to a single uppercase character – e.g. “Straße” would be
--   converted to “STRASSE”, not “STRAßE”.
capitalize :: Walkable Inline a => a -> a

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

-- | Like <tt>compactify'</tt>, but acts on items of definition lists.
compactify'DL :: [(Inlines, [Blocks])] -> [(Inlines, [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 <a>Meta</a> 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 <a>Meta</a> 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
getDefaultReferenceDocx :: Maybe FilePath -> IO Archive
getDefaultReferenceODT :: Maybe FilePath -> IO Archive

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

-- | Like <a>fetchItem</a>, but also looks for items in a <a>MediaBag</a>.
fetchItem' :: MediaBag -> Maybe String -> String -> IO (Either SomeException (ByteString, Maybe MimeType))

-- | Read from a URL and return raw data and maybe mime type.
openURL :: String -> IO (Either SomeException (ByteString, Maybe MimeType))

-- | Remove intermediate "." and ".." directories from a path.
--   
--   <pre>
--   collapseFilePath "./foo" == "foo"
--   collapseFilePath "/bar/../baz" == "/baz"
--   collapseFilePath "/../baz" == "/../baz"
--   collapseFilePath "parent/foo/baz/../bar" ==  "parent/foo/bar"
--   collapseFilePath "parent/foo/baz/../../bar" ==  "parent/bar"
--   collapseFilePath "parent/foo/.." ==  "parent"
--   collapseFilePath "/parent/foo/../../bar" ==  "/bar"
--   </pre>
collapseFilePath :: FilePath -> FilePath
err :: Int -> String -> IO a
warn :: String -> IO ()
mapLeft :: (a -> b) -> Either a c -> Either b c
hush :: Either a b -> Maybe b
safeRead :: (MonadPlus m, Read a) => String -> m a
withTempDir :: String -> (FilePath -> IO a) -> IO a

-- | Version number of pandoc library.
pandocVersion :: String
instance Typeable Element
instance Eq Element
instance Read Element
instance Show Element
instance Data Element
instance Walkable Block Element
instance Walkable Inline Element


-- | A simple templating system with variable substitution and
--   conditionals. The following program illustrates its use:
--   
--   <pre>
--   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 ]
--   </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>, <tt>-</tt>, and <tt>.</tt>.
--   
--   The values of variables are determined by a JSON object that is passed
--   as a parameter to <tt>renderTemplate</tt>. So, for example,
--   <tt>title</tt> will return the value of the <tt>title</tt> field, and
--   <tt>employee.salary</tt> will return the value of the <tt>salary</tt>
--   field of the object that is the value of the <tt>employee</tt> field.
--   
--   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.
--   
--   The <tt>$for$</tt> 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 <tt>$sep$</tt>, as in the
--   example above.
module Text.Pandoc.Templates
renderTemplate :: (ToJSON a, TemplateTarget b) => Template -> a -> b

-- | Like <a>renderTemplate</a>, 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

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

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

-- | Use Div blocks for contents of <a>div</a> tags
Ext_native_divs :: Extension

-- | Use Span inlines for contents of <a>span</a>
Ext_native_spans :: 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

-- | link and image attributes
Ext_link_attributes :: Extension

-- | MMD style reference link attributes
Ext_mmd_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

-- | Definition lists without space between items, and disallow laziness
Ext_compact_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

-- | Newlines in paragraphs are ignored between East Asian wide characters
Ext_east_asian_line_breaks :: Extension

-- | Enable literate Haskell conventions
Ext_literate_haskell :: Extension

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

-- | Support emoji like :smile:
Ext_emoji :: 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

-- | Recognise the EPUB extended version of HTML
Ext_epub_html_exts :: Extension

-- | Shortcut reference links
Ext_shortcut_reference_links :: Extension
pandocExtensions :: Set Extension
plainExtensions :: Set Extension
strictExtensions :: Set Extension
phpMarkdownExtraExtensions :: Set Extension
githubMarkdownExtensions :: Set Extension
multimarkdownExtensions :: Set Extension
data ReaderOptions
ReaderOptions :: Set Extension -> Bool -> Bool -> Bool -> Int -> Int -> Bool -> Bool -> [String] -> String -> Bool -> TrackChanges -> ReaderOptions

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

-- | Smart punctuation
readerSmart :: 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

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

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

-- | Default extension for images
readerDefaultImageExtension :: ReaderOptions -> String

-- | Print debugging info
readerTrace :: ReaderOptions -> Bool
readerTrackChanges :: ReaderOptions -> TrackChanges
data HTMLMathMethod
PlainMath :: HTMLMathMethod
LaTeXMathML :: (Maybe String) -> HTMLMathMethod
JsMath :: (Maybe String) -> HTMLMathMethod
GladTeX :: HTMLMathMethod
WebTeX :: String -> HTMLMathMethod
MathML :: (Maybe String) -> HTMLMathMethod
MathJax :: String -> HTMLMathMethod
KaTeX :: String -> 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 wrapping text in the output.
data WrapOption

-- | Automatically wrap to width
WrapAuto :: WrapOption

-- | No non-semantic newlines
WrapNone :: WrapOption

-- | Preserve wrapping of input source
WrapPreserve :: WrapOption

-- | Options for writers
data WriterOptions
WriterOptions :: Bool -> String -> [(String, String)] -> Int -> Bool -> HTMLSlideVariant -> Bool -> HTMLMathMethod -> Bool -> Bool -> [Int] -> Bool -> Set Extension -> Bool -> Int -> WrapOption -> 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 -> MediaBag -> Bool -> [String] -> 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

-- | Dpi for pixel to<i>from inch</i>cm conversions
writerDpi :: WriterOptions -> Int

-- | Option for wrapping text
writerWrapText :: WriterOptions -> WrapOption

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

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

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

-- | Media collected by docx or epub reader
writerMediaBag :: WriterOptions -> MediaBag

-- | Verbose debugging output
writerVerbose :: WriterOptions -> Bool

-- | Flags to pass to latex-engine
writerLaTeXArgs :: WriterOptions -> [String]

-- | Options for accepting or rejecting MS Word track-changes.
data TrackChanges
AcceptChanges :: TrackChanges
RejectChanges :: TrackChanges
AllChanges :: TrackChanges

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

-- | Returns True if the given extension is enabled.
isEnabled :: Extension -> WriterOptions -> Bool
instance Typeable Extension
instance Typeable EPUBVersion
instance Typeable HTMLMathMethod
instance Typeable CiteMethod
instance Typeable ObfuscationMethod
instance Typeable HTMLSlideVariant
instance Typeable TrackChanges
instance Typeable ReaderOptions
instance Typeable WrapOption
instance Typeable WriterOptions
instance Show Extension
instance Read Extension
instance Enum Extension
instance Eq Extension
instance Ord Extension
instance Bounded Extension
instance Data Extension
instance Generic Extension
instance Eq EPUBVersion
instance Show EPUBVersion
instance Read EPUBVersion
instance Data EPUBVersion
instance Generic EPUBVersion
instance Show HTMLMathMethod
instance Read HTMLMathMethod
instance Eq HTMLMathMethod
instance Data HTMLMathMethod
instance Generic HTMLMathMethod
instance Show CiteMethod
instance Read CiteMethod
instance Eq CiteMethod
instance Data CiteMethod
instance Generic CiteMethod
instance Show ObfuscationMethod
instance Read ObfuscationMethod
instance Eq ObfuscationMethod
instance Data ObfuscationMethod
instance Generic ObfuscationMethod
instance Show HTMLSlideVariant
instance Read HTMLSlideVariant
instance Eq HTMLSlideVariant
instance Data HTMLSlideVariant
instance Generic HTMLSlideVariant
instance Show TrackChanges
instance Read TrackChanges
instance Eq TrackChanges
instance Data TrackChanges
instance Generic TrackChanges
instance Show ReaderOptions
instance Read ReaderOptions
instance Data ReaderOptions
instance Generic ReaderOptions
instance Show WrapOption
instance Read WrapOption
instance Eq WrapOption
instance Data WrapOption
instance Generic WrapOption
instance Show WriterOptions
instance Data WriterOptions
instance Generic WriterOptions
instance Datatype D1Extension
instance Constructor C1_0Extension
instance Constructor C1_1Extension
instance Constructor C1_2Extension
instance Constructor C1_3Extension
instance Constructor C1_4Extension
instance Constructor C1_5Extension
instance Constructor C1_6Extension
instance Constructor C1_7Extension
instance Constructor C1_8Extension
instance Constructor C1_9Extension
instance Constructor C1_10Extension
instance Constructor C1_11Extension
instance Constructor C1_12Extension
instance Constructor C1_13Extension
instance Constructor C1_14Extension
instance Constructor C1_15Extension
instance Constructor C1_16Extension
instance Constructor C1_17Extension
instance Constructor C1_18Extension
instance Constructor C1_19Extension
instance Constructor C1_20Extension
instance Constructor C1_21Extension
instance Constructor C1_22Extension
instance Constructor C1_23Extension
instance Constructor C1_24Extension
instance Constructor C1_25Extension
instance Constructor C1_26Extension
instance Constructor C1_27Extension
instance Constructor C1_28Extension
instance Constructor C1_29Extension
instance Constructor C1_30Extension
instance Constructor C1_31Extension
instance Constructor C1_32Extension
instance Constructor C1_33Extension
instance Constructor C1_34Extension
instance Constructor C1_35Extension
instance Constructor C1_36Extension
instance Constructor C1_37Extension
instance Constructor C1_38Extension
instance Constructor C1_39Extension
instance Constructor C1_40Extension
instance Constructor C1_41Extension
instance Constructor C1_42Extension
instance Constructor C1_43Extension
instance Constructor C1_44Extension
instance Constructor C1_45Extension
instance Constructor C1_46Extension
instance Constructor C1_47Extension
instance Constructor C1_48Extension
instance Constructor C1_49Extension
instance Constructor C1_50Extension
instance Constructor C1_51Extension
instance Constructor C1_52Extension
instance Constructor C1_53Extension
instance Constructor C1_54Extension
instance Constructor C1_55Extension
instance Constructor C1_56Extension
instance Datatype D1EPUBVersion
instance Constructor C1_0EPUBVersion
instance Constructor C1_1EPUBVersion
instance Datatype D1HTMLMathMethod
instance Constructor C1_0HTMLMathMethod
instance Constructor C1_1HTMLMathMethod
instance Constructor C1_2HTMLMathMethod
instance Constructor C1_3HTMLMathMethod
instance Constructor C1_4HTMLMathMethod
instance Constructor C1_5HTMLMathMethod
instance Constructor C1_6HTMLMathMethod
instance Constructor C1_7HTMLMathMethod
instance Datatype D1CiteMethod
instance Constructor C1_0CiteMethod
instance Constructor C1_1CiteMethod
instance Constructor C1_2CiteMethod
instance Datatype D1ObfuscationMethod
instance Constructor C1_0ObfuscationMethod
instance Constructor C1_1ObfuscationMethod
instance Constructor C1_2ObfuscationMethod
instance Datatype D1HTMLSlideVariant
instance Constructor C1_0HTMLSlideVariant
instance Constructor C1_1HTMLSlideVariant
instance Constructor C1_2HTMLSlideVariant
instance Constructor C1_3HTMLSlideVariant
instance Constructor C1_4HTMLSlideVariant
instance Constructor C1_5HTMLSlideVariant
instance Datatype D1TrackChanges
instance Constructor C1_0TrackChanges
instance Constructor C1_1TrackChanges
instance Constructor C1_2TrackChanges
instance Datatype D1ReaderOptions
instance Constructor C1_0ReaderOptions
instance Selector S1_0_0ReaderOptions
instance Selector S1_0_1ReaderOptions
instance Selector S1_0_2ReaderOptions
instance Selector S1_0_3ReaderOptions
instance Selector S1_0_4ReaderOptions
instance Selector S1_0_5ReaderOptions
instance Selector S1_0_6ReaderOptions
instance Selector S1_0_7ReaderOptions
instance Selector S1_0_8ReaderOptions
instance Selector S1_0_9ReaderOptions
instance Selector S1_0_10ReaderOptions
instance Selector S1_0_11ReaderOptions
instance Datatype D1WrapOption
instance Constructor C1_0WrapOption
instance Constructor C1_1WrapOption
instance Constructor C1_2WrapOption
instance Datatype D1WriterOptions
instance Constructor C1_0WriterOptions
instance Selector S1_0_0WriterOptions
instance Selector S1_0_1WriterOptions
instance Selector S1_0_2WriterOptions
instance Selector S1_0_3WriterOptions
instance Selector S1_0_4WriterOptions
instance Selector S1_0_5WriterOptions
instance Selector S1_0_6WriterOptions
instance Selector S1_0_7WriterOptions
instance Selector S1_0_8WriterOptions
instance Selector S1_0_9WriterOptions
instance Selector S1_0_10WriterOptions
instance Selector S1_0_11WriterOptions
instance Selector S1_0_12WriterOptions
instance Selector S1_0_13WriterOptions
instance Selector S1_0_14WriterOptions
instance Selector S1_0_15WriterOptions
instance Selector S1_0_16WriterOptions
instance Selector S1_0_17WriterOptions
instance Selector S1_0_18WriterOptions
instance Selector S1_0_19WriterOptions
instance Selector S1_0_20WriterOptions
instance Selector S1_0_21WriterOptions
instance Selector S1_0_22WriterOptions
instance Selector S1_0_23WriterOptions
instance Selector S1_0_24WriterOptions
instance Selector S1_0_25WriterOptions
instance Selector S1_0_26WriterOptions
instance Selector S1_0_27WriterOptions
instance Selector S1_0_28WriterOptions
instance Selector S1_0_29WriterOptions
instance Selector S1_0_30WriterOptions
instance Selector S1_0_31WriterOptions
instance Selector S1_0_32WriterOptions
instance Selector S1_0_33WriterOptions
instance Selector S1_0_34WriterOptions
instance Selector S1_0_35WriterOptions
instance Selector S1_0_36WriterOptions
instance Selector S1_0_37WriterOptions
instance Selector S1_0_38WriterOptions
instance Selector S1_0_39WriterOptions
instance Selector S1_0_40WriterOptions
instance Selector S1_0_41WriterOptions
instance Selector S1_0_42WriterOptions
instance Default WriterOptions
instance Default ReaderOptions


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


-- | This module provides a standard way to deal with possible errors
--   encounted during parsing.
module Text.Pandoc.Error
data PandocError

-- | Generic parse failure
ParseFailure :: String -> PandocError

-- | Error thrown by a Parsec parser
ParsecError :: Input -> ParseError -> PandocError

-- | An unsafe method to handle <a>PandocError</a>s.
handleError :: Either PandocError a -> a
instance Typeable PandocError
instance Show PandocError
instance Generic PandocError
instance Datatype D1PandocError
instance Constructor C1_0PandocError
instance Constructor C1_1PandocError
instance Error PandocError
instance Exception PandocError


-- | Conversion of CommonMark-formatted plain text to <a>Pandoc</a>
--   document.
--   
--   CommonMark is a strongly specified variant of Markdown:
--   http://commonmark.org.
module Text.Pandoc.Readers.CommonMark

-- | Parse a CommonMark formatted string into a <a>Pandoc</a> structure.
readCommonMark :: ReaderOptions -> String -> Either PandocError Pandoc


-- | 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 nullMeta [Plain [Str "hi"]]
--   </pre>
readNative :: String -> Either PandocError Pandoc


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

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

module Text.Pandoc.CSS
foldOrElse :: Eq a => a -> [a] -> a

-- | takes a list of key/property synonyms and a CSS string and maybe
--   returns the value of the first match (in order of the supplied list)
pickStyleAttrProps :: [String] -> String -> Maybe String

-- | takes a list of keys/properties and a CSS string and returns the
--   corresponding key-value-pairs.
pickStylesToKVs :: [String] -> String -> [(String, String)]

module Text.Pandoc.Readers.DocBook
readDocBook :: ReaderOptions -> String -> Either PandocError Pandoc
instance Show DBState
instance HasMeta DBState
instance Default DBState


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


-- | 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> or <tt>$$</tt> characters
--   if entire formula can't be converted.
texMathToInlines :: MathType -> String -> [Inline]


-- | 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 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 Adobe InCopy ICML, a
--   stand-alone XML format which is a subset of the zipped IDML format for
--   which the documentation is available here:
--   http:/<i>wwwimages.adobe.com</i>www.adobe.com<i>content</i>dam<i>Adobe</i>en<i>devnet</i>indesign<i>sdk</i>cs6<i>idml</i>idml-specification.pdf
--   InCopy is the companion word-processor to Adobe InDesign and ICML
--   documents can be integrated into InDesign with File -&gt; Place.
module Text.Pandoc.Writers.ICML

-- | Convert Pandoc document to string in ICML format.
writeICML :: WriterOptions -> Pandoc -> IO String


-- | 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 DokuWiki markup.
--   
--   DokuWiki: <a>https://www.dokuwiki.org/dokuwiki</a>
module Text.Pandoc.Writers.DokuWiki

-- | Convert Pandoc to DokuWiki.
writeDokuWiki :: WriterOptions -> Pandoc -> String
instance Default WriterEnvironment
instance Default WriterState


-- | 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 of <a>Pandoc</a> documents to haddock markup.
--   
--   Haddock: <a>http://www.haskell.org/haddock/doc/html/</a>
module Text.Pandoc.Writers.Haddock

-- | Convert Pandoc to Haddock.
writeHaddock :: WriterOptions -> Pandoc -> String
instance Default WriterState


-- | Conversion of <a>Pandoc</a> 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] Typeable PandocLuaException
instance [overlap ok] Show PandocLuaException
instance [overlap ok] Exception PandocLuaException
instance [overlap ok] StackValue Citation
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]


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

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


-- | 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 CommonMark.
--   
--   CommonMark: <a>http://commonmark.org</a>
module Text.Pandoc.Writers.CommonMark

-- | Convert Pandoc to CommonMark.
writeCommonMark :: 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


-- | ByteString variant of <a>readProcessWithExitCode</a>.
module Text.Pandoc.Process

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


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


-- | 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.
makeSelfContained :: WriterOptions -> String -> IO String


-- | Conversion of Docx type (defined in Text.Pandoc.Readers.Docx.Parse) to
--   <a>Pandoc</a> document.
module Text.Pandoc.Readers.Docx
readDocx :: ReaderOptions -> ByteString -> Either PandocError (Pandoc, MediaBag)
instance Default DEnv
instance Default DState


-- | Entry point to the odt reader.
module Text.Pandoc.Readers.Odt
readOdt :: ReaderOptions -> ByteString -> Either PandocError (Pandoc, MediaBag)


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

-- | Parse reStructuredText string and return Pandoc document.
readRST :: ReaderOptions -> String -> Either PandocError Pandoc
readRSTWithWarnings :: ReaderOptions -> String -> Either PandocError (Pandoc, [String])


-- | 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 -> Either PandocError Pandoc
rawLaTeXInline :: LP Inline
rawLaTeXBlock :: LP String
inlineCommand :: LP Inlines

-- | Replace "include" commands with file contents.
handleIncludes :: String -> IO (Either PandocError String)


-- | Conversion of org-mode formatted plain text to <a>Pandoc</a> document.
module Text.Pandoc.Readers.Org

-- | Parse org-mode string and return a Pandoc document.
readOrg :: ReaderOptions -> String -> Either PandocError Pandoc
instance Monad F
instance Applicative F
instance Functor F
instance Monoid a => Monoid (F a)
instance Default OrgParserState
instance HasQuoteContext st (Reader OrgParserLocal)
instance HasLastStrPosition OrgParserState
instance HasMeta OrgParserState
instance HasReaderOptions OrgParserState
instance Default OrgParserLocal
instance HasHeaderMap OrgParserState
instance HasIdentifierList OrgParserState


-- | 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 -> Either PandocError Pandoc

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

-- | Matches a stretch of HTML in balanced tags.
htmlInBalanced :: Monad m => (Tag String -> Bool) -> ParserT String st m String
isInlineTag :: Tag String -> Bool
isBlockTag :: Tag String -> Bool
isTextTag :: Tag String -> Bool
isCommentTag :: Tag String -> Bool
instance HasLastStrPosition HTMLState
instance Default HTMLLocal
instance HasMeta HTMLState
instance HasReaderOptions HTMLState
instance HasQuoteContext st (Reader HTMLLocal)
instance HasHeaderMap HTMLState
instance HasIdentifierList HTMLState


-- | 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 -> Either PandocError Pandoc

-- | Read markdown from an input string and return a pair of a Pandoc
--   document and a list of warnings.
readMarkdownWithWarnings :: ReaderOptions -> String -> Either PandocError (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 -> Either PandocError Pandoc
instance HasIdentifierList MWState
instance HasHeaderMap MWState
instance HasReaderOptions MWState

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

module Text.Pandoc.Readers.EPUB
readEPUB :: ReaderOptions -> ByteString -> Either PandocError (Pandoc, MediaBag)


-- | Conversion from Textile to <a>Pandoc</a> document, based on the spec
--   available at http:/<i>redcloth.org</i>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 -> Either PandocError Pandoc


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

-- | Read twiki from an input string and return a Pandoc document.
readTWiki :: ReaderOptions -> String -> Either PandocError Pandoc
readTWikiWithWarnings :: ReaderOptions -> String -> Either PandocError (Pandoc, [String])


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

-- | Read Txt2Tags from an input string returning a Pandoc document
readTxt2Tags :: T2TMeta -> ReaderOptions -> String -> Either PandocError Pandoc

-- | Get the meta information required by Txt2Tags macros
getT2TMeta :: [FilePath] -> FilePath -> IO T2TMeta

-- | An object for the T2T macros meta information the contents of each
--   field is simply substituted verbatim into the file
data T2TMeta
T2TMeta :: String -> String -> FilePath -> FilePath -> T2TMeta

-- | Current date
date :: T2TMeta -> String

-- | Last modification time of infile
mtime :: T2TMeta -> String

-- | Input file
infile :: T2TMeta -> FilePath

-- | Output file
outfile :: T2TMeta -> FilePath

-- | Read Txt2Tags (ignoring all macros) from an input string returning a
--   Pandoc document
readTxt2TagsNoMacros :: ReaderOptions -> String -> Either PandocError Pandoc
instance Show T2TMeta
instance Default T2TMeta


-- | 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 Show Stylesheet
instance Show Date
instance Show Creator
instance Show Identifier
instance Show Title
instance Show ProgressionDirection
instance Show EPUBMetadata


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

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


-- | 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
--   import Text.Pandoc.Error (handleError)
--   
--   markdownToRST :: String -&gt; String
--   markdownToRST = handleError .
--     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, Reader)]

-- | Association list of formats and writers.
writers :: [(String, Writer)]
data Reader
StringReader :: (ReaderOptions -> String -> IO (Either PandocError Pandoc)) -> Reader
ByteStringReader :: (ReaderOptions -> ByteString -> IO (Either PandocError (Pandoc, MediaBag))) -> Reader
mkStringReader :: (ReaderOptions -> String -> Either PandocError Pandoc) -> Reader
readDocx :: ReaderOptions -> ByteString -> Either PandocError (Pandoc, MediaBag)
readOdt :: ReaderOptions -> ByteString -> Either PandocError (Pandoc, MediaBag)

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

-- | Parse a CommonMark formatted string into a <a>Pandoc</a> structure.
readCommonMark :: ReaderOptions -> String -> Either PandocError Pandoc

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

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

-- | Parse org-mode string and return a Pandoc document.
readOrg :: ReaderOptions -> String -> Either PandocError Pandoc

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

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

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

-- | Parse Haddock markup and return a <a>Pandoc</a> document.
readHaddock :: ReaderOptions -> String -> Either PandocError 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 nullMeta [Plain [Str "hi"]]
--   </pre>
readNative :: String -> Either PandocError Pandoc
readJSON :: ReaderOptions -> String -> Either PandocError Pandoc

-- | Read twiki from an input string and return a Pandoc document.
readTWiki :: ReaderOptions -> String -> Either PandocError Pandoc

-- | Read Txt2Tags from an input string returning a Pandoc document
readTxt2Tags :: T2TMeta -> ReaderOptions -> String -> Either PandocError Pandoc

-- | Read Txt2Tags (ignoring all macros) from an input string returning a
--   Pandoc document
readTxt2TagsNoMacros :: ReaderOptions -> String -> Either PandocError Pandoc
readEPUB :: ReaderOptions -> ByteString -> Either PandocError (Pandoc, MediaBag)
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 ICML format.
writeICML :: WriterOptions -> Pandoc -> IO 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 DokuWiki.
writeDokuWiki :: 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

-- | Convert Pandoc to Haddock.
writeHaddock :: WriterOptions -> Pandoc -> String

-- | Convert Pandoc to CommonMark.
writeCommonMark :: WriterOptions -> Pandoc -> String

-- | Convert Pandoc to custom markup.
writeCustom :: FilePath -> WriterOptions -> Pandoc -> IO String

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

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

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

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