From 4691a69d5065d388c43ad5ce651125466b1d7f61 Mon Sep 17 00:00:00 2001 From: Yann Herklotz Date: Wed, 10 May 2023 19:42:09 +0100 Subject: Add cannonical attributes --- src/Zettel/Common.hs | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 src/Zettel/Common.hs (limited to 'src/Zettel/Common.hs') diff --git a/src/Zettel/Common.hs b/src/Zettel/Common.hs new file mode 100644 index 0000000..5ad9ef3 --- /dev/null +++ b/src/Zettel/Common.hs @@ -0,0 +1,34 @@ +{-# LANGUAGE OverloadedRecordDot #-} + +module Zettel.Common where + +import qualified Data.Map.Strict as Map +import Text.Pandoc.Builder (HasMeta (..), ToMetaValue (..)) +import Text.Pandoc.Definition (MetaValue (..), Pandoc (..)) +import Zettel.Types + +trySet :: (HasMeta a, ToMetaValue b) => Text -> Maybe b -> a -> a +trySet t (Just b) a = setMeta t b a +trySet _ Nothing a = a + +refreshPandocMetaZettel' :: (HasMeta a) => ZettelId -> Zettel -> a -> a +refreshPandocMetaZettel' zid z = + trySet "modified" z.zettelMetadata.zettelModifiedDate + . trySet "date" z.zettelMetadata.zettelCreationDate + . trySet "author" z.zettelMetadata.zettelAuthor + . setMeta "title" (MetaInlines z.zettelTitle) + . setMeta "tags" z.zettelMetadata.zettelTags + . setMeta "categories" z.zettelMetadata.zettelCats + . setMeta "backlinks" z.zettelPrev + . setMeta "forwardlinks" z.zettelNext + . setMeta "zettelid" zid + +clearPandocAttr :: Pandoc -> Pandoc +clearPandocAttr (Pandoc _ b) = Pandoc mempty b + +refreshPandocMetaZettel :: ZettelId -> Zettel -> Zettel +refreshPandocMetaZettel zid z = + z {zettelBody = refreshPandocMetaZettel' zid z . clearPandocAttr $ zettelBody z} + +refreshPandocMeta :: ZettelGraph -> ZettelGraph +refreshPandocMeta = ZettelGraph . Map.mapWithKey refreshPandocMetaZettel . unZettelGraph -- cgit