diff options
| author | John MacFarlane <[email protected]> | 2022-09-13 11:14:04 +0200 |
|---|---|---|
| committer | John MacFarlane <[email protected]> | 2022-09-13 11:14:04 +0200 |
| commit | eb03cad6ae58d8acf9dd37dc2862de5934da3bbf (patch) | |
| tree | d2940b257f95119ff04bf551d3c3681895c359e4 /src | |
| parent | 369058d53dfd8bea82df85774e1ce67516b8ee36 (diff) | |
XWiki writer: use template if it is specified.
Previously templates were ignored completely.
Closes #8296.
Diffstat (limited to 'src')
| -rw-r--r-- | src/Text/Pandoc/Writers/XWiki.hs | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/src/Text/Pandoc/Writers/XWiki.hs b/src/Text/Pandoc/Writers/XWiki.hs index c35235650..78e0d29e6 100644 --- a/src/Text/Pandoc/Writers/XWiki.hs +++ b/src/Text/Pandoc/Writers/XWiki.hs @@ -44,6 +44,9 @@ import Text.Pandoc.Options import Text.Pandoc.Shared import Text.Pandoc.Writers.MediaWiki (highlightingLangs) import Text.Pandoc.Writers.Shared (toLegacyTable) +import Text.Pandoc.Templates (renderTemplate) +import Text.Pandoc.Writers.Shared (defField, metaToContext) +import Text.DocLayout (render, literal) newtype WriterState = WriterState { listLevel :: Text -- String at the beginning of items @@ -53,9 +56,19 @@ type XWikiReader m = ReaderT WriterState m -- | Convert Pandoc to XWiki. writeXWiki :: PandocMonad m => WriterOptions -> Pandoc -> m Text -writeXWiki _ (Pandoc _ blocks) = +writeXWiki opts (Pandoc meta blocks) = do let env = WriterState { listLevel = "" } - in runReaderT (blockListToXWiki blocks) env + metadata <- metaToContext opts + (fmap (literal . trimr) . (\bs -> runReaderT (blockListToXWiki bs) env)) + (fmap (literal . trimr) . (\is -> runReaderT (inlineListToXWiki is) env)) + meta + body <- runReaderT (blockListToXWiki blocks) env + let context = defField "body" body + $ defField "toc" (writerTableOfContents opts) metadata + return $ + case writerTemplate opts of + Just tpl -> render Nothing $ renderTemplate tpl context + Nothing -> body -- | Concatenates strings with line breaks between them. vcat :: [Text] -> Text |
