diff options
author | Yann Herklotz <git@yannherklotz.com> | 2023-05-10 19:42:09 +0100 |
---|---|---|
committer | Yann Herklotz <git@yannherklotz.com> | 2023-05-10 19:42:09 +0100 |
commit | 4691a69d5065d388c43ad5ce651125466b1d7f61 (patch) | |
tree | 7b68360f4a4560bf5dc283b3e6c83efd49525882 /src/Zettel/Common.hs | |
parent | 1c867914453a817c46297eed2734dfc9a62ec869 (diff) | |
download | zk-visual-4691a69d5065d388c43ad5ce651125466b1d7f61.tar.gz zk-visual-4691a69d5065d388c43ad5ce651125466b1d7f61.zip |
Add cannonical attributes
Diffstat (limited to 'src/Zettel/Common.hs')
-rw-r--r-- | src/Zettel/Common.hs | 34 |
1 files changed, 34 insertions, 0 deletions
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 |