summaryrefslogtreecommitdiff
path: root/src/Text/Pandoc/Templates.hs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Text/Pandoc/Templates.hs')
-rw-r--r--src/Text/Pandoc/Templates.hs11
1 files changed, 8 insertions, 3 deletions
diff --git a/src/Text/Pandoc/Templates.hs b/src/Text/Pandoc/Templates.hs
index 12a7e732a..e1a127bbd 100644
--- a/src/Text/Pandoc/Templates.hs
+++ b/src/Text/Pandoc/Templates.hs
@@ -86,6 +86,7 @@ example above.
-}
module Text.Pandoc.Templates ( renderTemplate
+ , renderTemplate'
, TemplateTarget(..)
, varListToJSON
, compileTemplate
@@ -165,13 +166,17 @@ varListToJSON assoc = toJSON $ M.fromList assoc'
toVal xs = toJSON xs
renderTemplate :: (ToJSON a, TemplateTarget b) => Template -> a -> b
-renderTemplate template context =
- toTarget $ renderTemplate' template (toJSON context)
- where renderTemplate' (Template f) val = f val
+renderTemplate (Template f) context = toTarget $ f $ toJSON context
compileTemplate :: Text -> Either String Template
compileTemplate template = A.parseOnly pTemplate template
+-- | Like 'renderTemplate', but compiles the template first,
+-- raising an error if compilation fails.
+renderTemplate' :: (ToJSON a, TemplateTarget b) => String -> a -> b
+renderTemplate' template =
+ renderTemplate (either error id $ compileTemplate $ T.pack template)
+
var :: Variable -> Template
var = Template . resolveVar