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
open Odoc_utils
let toc_to_json
({ url; valid_link; content = inline; _ } : Odoc_document.Sidebar.entry) :
Json.json =
let config =
Config.v ~semantic_uris:true ~indent:true ~flat:false ~open_details:false
~as_json:true ~remap:[] ()
in
let url, kind =
match valid_link with
| false -> (`Null, `Null)
| true ->
let href = Link.href ~config ~resolve:(Link.Base "") url in
let kind =
Format.asprintf "%a" Odoc_document.Url.Anchor.pp_kind url.kind
in
(`String href, `String kind)
in
let inline =
let inline = Generator.inline ~config ~xref_base_uri:"" inline in
let inline =
String.concat ~sep:""
@@ List.map (Format.asprintf "%a" (Tyxml.Html.pp_elt ())) inline
in
`String inline
in
`Object [ ("url", url); ("kind", kind); ("content", inline) ]
let to_json ( : Odoc_document.Sidebar.t) =
`Array (List.map (Tree.to_json toc_to_json) sidebar)