1.7 KiB
% Using the pandoc API % John MacFarlane
Pandoc can be used as a Haskell library, to write your own conversion tools or power a web application. This document offers an introduction to using the pandoc API.
Detailed API documentation at the level of individual functions and types is available at https://hackage.haskell.org/package/pandoc.
Pandoc's architecture, and a simple example
Pandoc structure, readers, writers.
example of using a reader.
example of using a writer.
chaining them together.
The PandocMonad class
Pandoc's functions define computations that can be run in
any instance of the PandocMonad
typeclass. Two instances
are provided: PandocIO
and PandocPure
. The difference is
that computations run in PandocIO
are allowed to do IO
(for example, read a file), while computations in PandocPure
are free of any side effects. PandocPure
is useful when
you want to prevent users from doing anything malicious.
Here's an example of such a computation, from the module
Text.Pandoc.Class
:
-- | Get the verbosity level.
getVerbosity :: PandocMonad m => m Verbosity
motivations Class.
The Pandoc structure
blocks/inlines
Readers and writers
getReader, getWriter
Options
various reader and writer options you can set. templates extensions
Builder
Inlines vs Inline, etc. Monoid
example: report from CSV data
Templates and other data files
Handling errors and warnings
Generic transformations
Walk and syb for AST transformations
Filters
just the basic idea of toJSONFilter the rest can be left to filters.md
Self-contained
Custom PandocMonad instances
Creating a front-end
Text.Pandoc.App