summaryrefslogtreecommitdiffstats
path: root/src/MdBlocks/Resolver.hs
blob: 29c1658d6120e947225314fb806d2e71e2b5cfce (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
35
36
37
module MdBlocks.Resolver
  ( resolveBlock
  )
where

import Data.Text (Text)

import MdBlocks.Address
import MdBlocks.Types

resolveBlock
  :: Address
  -> [Block]
  -> Maybe Block
resolveBlock address =
  findByFileAndId
    (addressFile address)
    (addressId address)

findByFileAndId
  :: FilePath
  -> Text
  -> [Block]
  -> Maybe Block
findByFileAndId fp ident =
  go
  where
    go [] =
      Nothing

    go (b:bs)
      | blockFile b == fp
      , mdId (blockMeta b) == Just ident =
          Just b

      | otherwise =
          go bs