Some work on using-the-pandoc-api.md.

This commit is contained in:
John MacFarlane 2017-10-24 16:08:05 -07:00
parent b060343ea3
commit 8c0c4f954d

View file

@ -1,13 +1,44 @@
% Using the pandoc API
% John MacFarlane
intro - pandoc can be used as a library, to write
your own custom conversion tools, or to power
a web application.
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.
# Basic usage
Detailed API documentation at the level of individual functions
and types is available at
<https://hackage.haskell.org/package/pandoc>.
a simple example
# 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
@ -19,21 +50,17 @@ getReader, getWriter
# Options
inc extensions
various reader and writer options you can set.
templates
extensions
# Builder
Inlines vs Inline, etc.
monoid
Monoid
example: report from CSV data
# The PandocMonad class
motivations
Class.
advanced: custom PandocMonad instances
# Templates and other data files
# Handling errors and warnings
@ -52,6 +79,8 @@ the rest can be left to filters.md
# PDF
# Custom PandocMonad instances
# Creating a front-end
Text.Pandoc.App