pandoc/doc/using-the-pandoc-api.md

88 lines
1.7 KiB
Markdown
Raw Normal View History

% Using the pandoc API
% John MacFarlane
2017-10-24 16:08:05 -07:00
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.
2017-10-24 16:08:05 -07:00
Detailed API documentation at the level of individual functions
and types is available at
<https://hackage.haskell.org/package/pandoc>.
2017-10-24 16:08:05 -07:00
# 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`:
```haskell
-- | Get the verbosity level.
getVerbosity :: PandocMonad m => m Verbosity
```
motivations
Class.
# The Pandoc structure
blocks/inlines
# Readers and writers
getReader, getWriter
# Options
2017-10-24 16:08:05 -07:00
various reader and writer options you can set.
templates
extensions
# Builder
Inlines vs Inline, etc.
2017-10-24 16:08:05 -07:00
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
# PDF
2017-10-24 16:08:05 -07:00
# Custom PandocMonad instances
# Creating a front-end
Text.Pandoc.App