% 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`: ```haskell -- | 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 # PDF # Custom PandocMonad instances # Creating a front-end Text.Pandoc.App