Source file Render_util.ml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
open Forester_core
let rec expand_title_with_parents ~trees ?(ancestors = []) (fm : Sem.frontmatter) title =
match fm.designated_parent with
| Some parent_addr when not @@ List.mem parent_addr ancestors ->
begin
match Addr_map.find_opt parent_addr trees with
| None ->
title
| Some (parent : Sem.tree) ->
let chevron = [Range.locate_opt None @@ Sem.Text " › "] in
let parent_title =
parent.fm.title |>
Option.map @@ expand_title_with_parents ~trees parent.fm
in
let parent_link =
[Range.locate_opt None @@
Sem.Link (parent_addr, parent_title, Sentence_case)]
in
parent_link @ chevron @ title
end
| _ -> title