refactor(pandoc): avoid unnecessary explicit dependency for doctemplates, which is now a hidden dependency of pandoc again
This commit is contained in:
parent
249019189f
commit
0eb165da9b
@ -147,7 +147,6 @@ dependencies:
|
|||||||
- extended-reals
|
- extended-reals
|
||||||
- rfc5051
|
- rfc5051
|
||||||
- unidecode
|
- unidecode
|
||||||
- doctemplates
|
|
||||||
- pandoc
|
- pandoc
|
||||||
- pandoc-types
|
- pandoc-types
|
||||||
- insert-ordered-containers
|
- insert-ordered-containers
|
||||||
|
|||||||
@ -46,6 +46,25 @@ formToMetaValues MetaPinRenewal{..} = P.Meta . mconcat $ catMaybes
|
|||||||
where
|
where
|
||||||
toMeta k = singletonMap k . P.toMetaValue
|
toMeta k = singletonMap k . P.toMetaValue
|
||||||
|
|
||||||
|
|
||||||
|
formToMetaValues2 :: MetaPinRenewal -> P.Meta
|
||||||
|
formToMetaValues2 MetaPinRenewal{..} = P.Meta $ mconcat
|
||||||
|
[ mbMeta "opening" mppOpening
|
||||||
|
, mbMeta "closing" mppClosing
|
||||||
|
, mbMeta "date" mppDate
|
||||||
|
, mbMeta "url" mppURL
|
||||||
|
, toMeta "login" mppLogin
|
||||||
|
, toMeta "pin" mppPin
|
||||||
|
, toMeta "recipient" mppRecipient
|
||||||
|
, toMeta "address" mppAddress
|
||||||
|
, toMeta "lang" mppLang
|
||||||
|
, toMeta "is-de" mppIsDe
|
||||||
|
]
|
||||||
|
where
|
||||||
|
mbMeta _ Nothing = mempty
|
||||||
|
mbMeta k (Just x) = toMeta k x
|
||||||
|
toMeta k = singletonMap k . P.toMetaValue
|
||||||
|
|
||||||
{-
|
{-
|
||||||
makePrintForm :: Maybe MetaPinRenewal -> Form MetaPinRenewal
|
makePrintForm :: Maybe MetaPinRenewal -> Form MetaPinRenewal
|
||||||
makePrintForm tmpl = identifyForm FIDLmsLetter . validateForm validateMetaPinRenewal $ \html ->
|
makePrintForm tmpl = identifyForm FIDLmsLetter . validateForm validateMetaPinRenewal $ \html ->
|
||||||
|
|||||||
@ -663,6 +663,14 @@ partMap = Map.fromListWith mappend
|
|||||||
invertMap :: (Ord k, Ord v) => Map k v -> Map v (Set k)
|
invertMap :: (Ord k, Ord v) => Map k v -> Map v (Set k)
|
||||||
invertMap = groupMap . map swap . Map.toList
|
invertMap = groupMap . map swap . Map.toList
|
||||||
|
|
||||||
|
maybeMap :: IsMap p => ContainerKey p -> Maybe (MapValue p) -> p
|
||||||
|
maybeMap _ Nothing = mempty
|
||||||
|
maybeMap k (Just v) = singletonMap k v
|
||||||
|
|
||||||
|
maybeMapWith :: IsMap p => (t -> MapValue p) -> ContainerKey p -> Maybe t -> p
|
||||||
|
maybeMapWith _ _ Nothing = mempty
|
||||||
|
maybeMapWith f k (Just v) = singletonMap k $ f v
|
||||||
|
|
||||||
-- | Counts how often a value appears in a map (not derived from invertMap for efficiency reasons)
|
-- | Counts how often a value appears in a map (not derived from invertMap for efficiency reasons)
|
||||||
countMapElems :: (Ord v) => Map k v -> Map v Int
|
countMapElems :: (Ord v) => Map k v -> Map v Int
|
||||||
countMapElems = Map.fromListWith (+) . map (\(_k,v)->(v,1)) . Map.toList
|
countMapElems = Map.fromListWith (+) . map (\(_k,v)->(v,1)) . Map.toList
|
||||||
|
|||||||
@ -8,7 +8,6 @@ import Control.Monad.Except
|
|||||||
import Import hiding (embedFile)
|
import Import hiding (embedFile)
|
||||||
import Data.FileEmbed (embedFile)
|
import Data.FileEmbed (embedFile)
|
||||||
|
|
||||||
import qualified Text.DocTemplates as P
|
|
||||||
import qualified Text.Pandoc as P
|
import qualified Text.Pandoc as P
|
||||||
-- import qualified Text.Pandoc.PDF as P
|
-- import qualified Text.Pandoc.PDF as P
|
||||||
import qualified Text.Pandoc.Builder as P
|
import qualified Text.Pandoc.Builder as P
|
||||||
@ -34,12 +33,15 @@ addMeta :: P.Meta -> P.Pandoc -> P.Pandoc
|
|||||||
addMeta m p = meta <> p
|
addMeta m p = meta <> p
|
||||||
where meta = P.Pandoc m mempty
|
where meta = P.Pandoc m mempty
|
||||||
|
|
||||||
|
-- | Apply StoredMarkup as a template to itself and return the resulting Markup
|
||||||
-- reTemplateLetter :: (P.PandocMonad m, P.TemplateMonad m, Foldable t, P.ToMetaValue a) => t (Text, a) -> StoredMarkup -> m Text
|
-- This is a hack to allow variable interpolation within a document.
|
||||||
reTemplateLetter :: (P.TemplateMonad m, P.PandocMonad m) => P.Meta -> StoredMarkup -> m Text
|
-- Pandoc currently only allows interpolation within templates.
|
||||||
|
-- An alternative Route would be to use Builders, but this prevents User-edited Markup Templates
|
||||||
|
reTemplateLetter :: P.PandocMonad m => P.Meta -> StoredMarkup -> m Text
|
||||||
reTemplateLetter meta StoredMarkup{..} = do
|
reTemplateLetter meta StoredMarkup{..} = do
|
||||||
let strictMarkupInput = toStrict markupInput
|
let strictMarkupInput = toStrict markupInput
|
||||||
mdTemplate <- P.compileTemplate "" strictMarkupInput
|
partialPath = "" -- no partials used, see Text.DocTemplates
|
||||||
|
mdTemplate <- P.runWithDefaultPartials $ P.compileTemplate partialPath strictMarkupInput
|
||||||
case mdTemplate of
|
case mdTemplate of
|
||||||
(Left err) -> throwError . P.PandocTemplateError $ pack err
|
(Left err) -> throwError . P.PandocTemplateError $ pack err
|
||||||
(Right templ) -> do
|
(Right templ) -> do
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user