@@ -45,6 +45,7 @@ import Control.Monad (zipWithM)
4545import Data.Aeson (ToJSON (..), encode)
4646import Data.Char (chr, ord, isSpace)
4747import Data.List (groupBy, intersperse, transpose, foldl')
48+import Data.Text.Conversions (FromText(..))
4849import qualified Data.Map as M
4950import qualified Data.Text as T
5051import qualified Text.Pandoc.Builder as Builder
@@ -55,7 +56,7 @@ import Text.Pandoc.Shared (stringify, makeSections, deNote, deLink)
5556import Text.Pandoc.Walk (walk)
5657import qualified Text.Pandoc.UTF8 as UTF8
5758import Text.Pandoc.XML (escapeStringForXML)
58−import Text.DocTemplates (Context(..), Val(..), TemplateTarget(..),
59+import Text.DocTemplates (Context(..), Val(..), TemplateTarget,
5960 ToContext(..), FromContext(..))
6061
6162-- | Create template Context from a 'Meta' and an association list
@@ -65,8 +66,8 @@ import Text.DocTemplates (Context(..), Val(..), TemplateTarget(..),
6566-- assigned. Does nothing if 'writerTemplate' is Nothing.
6667metaToContext :: (Monad m, TemplateTarget a)
6768 => WriterOptions
68− -> ([Block] -> m a)
69− -> ([Inline] -> m a)
69+ -> ([Block] -> m (Doc a))
70+ -> ([Inline] -> m (Doc a))
7071 -> Meta
7172 -> m (Context a)
7273metaToContext opts blockWriter inlineWriter meta =
@@ -78,8 +79,8 @@ metaToContext opts blockWriter inlineWriter meta =
7879-- | Like 'metaToContext, but does not include variables and is
7980-- not sensitive to 'writerTemplate'.
8081metaToContext' :: (Monad m, TemplateTarget a)
81− => ([Block] -> m a)
82− -> ([Inline] -> m a)
82+ => ([Block] -> m (Doc a))
83+ -> ([Inline] -> m (Doc a))
8384 -> Meta
8485 -> m (Context a)
8586metaToContext' blockWriter inlineWriter (Meta metamap) = do
@@ -97,13 +98,14 @@ addVariablesToContext opts (Context m1) =
9798 m2 = case traverse go (writerVariables opts) of
9899 Just (Context x) -> x
99100 Nothing -> mempty
100− m3 = M.insert "meta-json" (SimpleVal $ fromText jsonrep) mempty
101+ m3 = M.insert "meta-json" (SimpleVal $ literal $ fromText jsonrep)
102+ mempty
101103 go = Just . fromText
102104 jsonrep = UTF8.toText $ BL.toStrict $ encode $ toJSON m1
103105
104106metaValueToVal :: (Monad m, TemplateTarget a)
105− => ([Block] -> m a)
106− -> ([Inline] -> m a)
107+ => ([Block] -> m (Doc a))
108+ -> ([Inline] -> m (Doc a))
107109 -> MetaValue
108110 -> m (Val a)
109111metaValueToVal blockWriter inlineWriter (MetaMap metamap) =
@@ -111,7 +113,7 @@ metaValueToVal blockWriter inlineWriter (MetaMap metamap) =
111113 mapM (metaValueToVal blockWriter inlineWriter) metamap
112114metaValueToVal blockWriter inlineWriter (MetaList xs) = ListVal <$>
113115 mapM (metaValueToVal blockWriter inlineWriter) xs
114−metaValueToVal _ _ (MetaBool True) = return $ SimpleVal $ fromText "true"
116+metaValueToVal _ _ (MetaBool True) = return $ SimpleVal "true"
115117metaValueToVal _ _ (MetaBool False) = return NullVal
116118metaValueToVal _ inlineWriter (MetaString s) =
117119 SimpleVal <$> inlineWriter (Builder.toList (Builder.text s))