summaryrefslogtreecommitdiffstats
path: root/src/Zettel/Links.hs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Zettel/Links.hs')
-rw-r--r--src/Zettel/Links.hs40
1 files changed, 10 insertions, 30 deletions
diff --git a/src/Zettel/Links.hs b/src/Zettel/Links.hs
index 6857d45..05659cf 100644
--- a/src/Zettel/Links.hs
+++ b/src/Zettel/Links.hs
@@ -8,10 +8,10 @@ import qualified Data.Map.Strict as Map
import qualified Data.Text as T
import Data.Text.Read (decimal)
import Numeric (readInt, showIntAtBase)
-import Text.Pandoc.Builder (HasMeta (..))
import Text.Pandoc.Definition (Inline (..), Pandoc (..))
import Text.Pandoc.Shared (stringify)
import Text.Pandoc.Walk (query, walk)
+import Zettel.Common
import Zettel.Types
parseIds :: Text -> Text
@@ -90,12 +90,12 @@ addIdPresent zg (Just ident) =
[ident | ident `elem` Map.keys (unZettelGraph zg)]
addIdPresent _ Nothing = []
-forwardLinkNode :: ZettelGraph -> ZettelId -> ZettelNode -> ZettelNode
+forwardLinkNode :: ZettelGraph -> ZettelId -> Zettel -> Zettel
forwardLinkNode zg ident zn =
zn
- { zettelNodeNext =
+ { zettelNext =
nub
- ( query gatherForwardIds (zn.zettelNodeZettel.zettelBody)
+ ( query gatherForwardIds zn.zettelBody
<> addIdPresent zg (defNextId ident)
<> addIdPresent zg (defBranchId ident)
)
@@ -104,13 +104,13 @@ forwardLinkNode zg ident zn =
forwardLink :: ZettelGraph -> ZettelGraph
forwardLink zg = ZettelGraph . Map.mapWithKey (forwardLinkNode zg) $ unZettelGraph zg
-backwardLinkNode :: ZettelGraph -> ZettelId -> ZettelNode -> ZettelNode
+backwardLinkNode :: ZettelGraph -> ZettelId -> Zettel -> Zettel
backwardLinkNode graph ident node = Map.foldlWithKey' f node (unZettelGraph graph)
where
- f :: ZettelNode -> ZettelId -> ZettelNode -> ZettelNode
+ f :: Zettel -> ZettelId -> Zettel -> Zettel
f l ident' zg
- | ident `elem` zg.zettelNodeNext =
- l {zettelNodePrev = ident' : l.zettelNodePrev}
+ | ident `elem` zg.zettelNext =
+ l {zettelPrev = ident' : l.zettelPrev}
| otherwise = l
backwardLink :: ZettelGraph -> ZettelGraph
@@ -127,32 +127,12 @@ updatePandocLinksInline i = i
updatePandocLinksPandoc :: Pandoc -> Pandoc
updatePandocLinksPandoc = walk updatePandocLinksInline
-updatePandocLinksAttr :: [ZettelId] -> [ZettelId] -> Pandoc -> Pandoc
-updatePandocLinksAttr back forw =
- setMeta "backlinks" back
- . setMeta "forwardlinks" forw
-
updatePandocLinksZettel :: Zettel -> Zettel
updatePandocLinksZettel zg =
zg {zettelBody = updatePandocLinksPandoc (zettelBody zg)}
-updatePandocLinksZettelNode :: ZettelNode -> ZettelNode
-updatePandocLinksZettelNode zg =
- zg {zettelNodeZettel = updatePandocLinksZettel (zettelNodeZettel zg)}
-
-updatePandocAttrZettel :: [ZettelId] -> [ZettelId] -> Zettel -> Zettel
-updatePandocAttrZettel back forw zg =
- zg {zettelBody = updatePandocLinksAttr back forw (zettelBody zg)}
-
-updatePandocAttrZettelNode :: ZettelNode -> ZettelNode
-updatePandocAttrZettelNode zg =
- zg {zettelNodeZettel = updatePandocAttrZettel (zettelNodePrev zg) (zettelNodeNext zg) (zettelNodeZettel zg)}
-
updatePandocLinks :: ZettelGraph -> ZettelGraph
-updatePandocLinks zg = ZettelGraph $ updatePandocLinksZettelNode <$> unZettelGraph zg
-
-updatePandocAttrL :: ZettelGraph -> ZettelGraph
-updatePandocAttrL zg = ZettelGraph $ updatePandocAttrZettelNode <$> unZettelGraph zg
+updatePandocLinks zg = ZettelGraph $ updatePandocLinksZettel <$> unZettelGraph zg
linkAll :: ZettelGraph -> ZettelGraph
-linkAll = updatePandocAttrL . backwardLink . forwardLink . updatePandocLinks
+linkAll = refreshPandocMeta . backwardLink . forwardLink . updatePandocLinks