blob: c6e94d1669ef6ba28a68486ccedeaee0a343fd0b (
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
|
{-# LANGUAGE OverloadedStrings #-}
module MdBlocks.Resolver
( resolveBlock
)
where
import Data.Text (Text)
import MdBlocks.Address
import MdBlocks.Types
resolveBlock
:: Address
-> [Block]
-> Maybe Block
resolveBlock (GlobalId ident) blocks =
findById ident blocks
resolveBlock (FileAddress fp ident) blocks =
findByFileAndId fp ident blocks
findById :: Text -> [Block] -> Maybe Block
findById ident =
go
where
go [] =
Nothing
go (b:bs)
| mdId (blockMeta b) == Just ident =
Just b
| otherwise =
go bs
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
|