blob: 5ad9ef36d69c7ff676b42e0d5380c5d78336db61 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
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
|