Skip to content

Commit 4a338a8

Browse files
committed
Allow multiple search assets
Signed-off-by: Paul-Elliot <[email protected]>
1 parent 68fddc9 commit 4a338a8

File tree

16 files changed

+84
-83
lines changed

16 files changed

+84
-83
lines changed

src/document/generator.ml

Lines changed: 17 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -86,10 +86,10 @@ let prepare_preamble comment items =
8686
in
8787
(Comment.standalone preamble, Comment.standalone first_comment @ items)
8888

89-
let make_expansion_page ~source_anchor ~search_asset url comments items =
89+
let make_expansion_page ~source_anchor ~search_assets url comments items =
9090
let comment = List.concat comments in
9191
let preamble, items = prepare_preamble comment items in
92-
{ Page.preamble; items; url; source_anchor; search_asset }
92+
{ Page.preamble; items; url; source_anchor; search_assets }
9393

9494
include Generator_signatures
9595

@@ -1105,7 +1105,7 @@ module Make (Syntax : SYNTAX) = struct
11051105
let expansion_doc, items = class_signature csig in
11061106
let url = Url.Path.from_identifier t.id in
11071107
let page =
1108-
make_expansion_page ~search_asset:None ~source_anchor url
1108+
make_expansion_page ~search_assets:[] ~source_anchor url
11091109
[ t.doc; expansion_doc ] items
11101110
in
11111111
( O.documentedSrc @@ path url [ inline @@ Text name ],
@@ -1143,7 +1143,7 @@ module Make (Syntax : SYNTAX) = struct
11431143
let url = Url.Path.from_identifier t.id in
11441144
let expansion_doc, items = class_signature csig in
11451145
let page =
1146-
make_expansion_page ~search_asset:None ~source_anchor url
1146+
make_expansion_page ~search_assets:[] ~source_anchor url
11471147
[ t.doc; expansion_doc ] items
11481148
in
11491149
( O.documentedSrc @@ path url [ inline @@ Text name ],
@@ -1270,7 +1270,7 @@ module Make (Syntax : SYNTAX) = struct
12701270
let modname = path url [ inline @@ Text name ] in
12711271
let type_with_expansion =
12721272
let content =
1273-
make_expansion_page ~search_asset:None ~source_anchor:None url
1273+
make_expansion_page ~search_assets:[] ~source_anchor:None url
12741274
[ expansion_doc ] items
12751275
in
12761276
let summary = O.render modtyp in
@@ -1411,7 +1411,7 @@ module Make (Syntax : SYNTAX) = struct
14111411
let url = Url.Path.from_identifier t.id in
14121412
let link = path url [ inline @@ Text modname ] in
14131413
let page =
1414-
make_expansion_page ~search_asset:None ~source_anchor url
1414+
make_expansion_page ~search_assets:[] ~source_anchor url
14151415
[ t.doc; expansion_doc ] items
14161416
in
14171417
(link, status, Some page, Some expansion_doc)
@@ -1472,7 +1472,7 @@ module Make (Syntax : SYNTAX) = struct
14721472
let url = Url.Path.from_identifier id in
14731473
let link = path url [ inline @@ Text modname ] in
14741474
let page =
1475-
make_expansion_page ~search_asset:None ~source_anchor url
1475+
make_expansion_page ~search_assets:[] ~source_anchor url
14761476
[ doc; expansion_doc ] items
14771477
in
14781478
(link, Some page, Some expansion_doc)
@@ -1762,14 +1762,16 @@ module Make (Syntax : SYNTAX) = struct
17621762
| Some src -> Some (Source_page.url src.id)
17631763
| None -> None
17641764
in
1765-
let search_asset =
1766-
match t.search_asset with
1767-
| Some (`Resolved (`Identifier id)) ->
1768-
Some (Url.Path.from_identifier id)
1769-
| _ -> None
1765+
let search_assets =
1766+
List.filter_map
1767+
(function
1768+
| `Resolved (`Identifier id) ->
1769+
Some Url.(from_path @@ Path.from_identifier id)
1770+
| _ -> None)
1771+
t.search_assets
17701772
in
17711773
let page =
1772-
make_expansion_page ~search_asset ~source_anchor url [ unit_doc ] items
1774+
make_expansion_page ~search_assets ~source_anchor url [ unit_doc ] items
17731775
in
17741776
Document.Page page
17751777

@@ -1782,7 +1784,7 @@ module Make (Syntax : SYNTAX) = struct
17821784
let preamble, items = Sectioning.docs t.content in
17831785
let source_anchor = None in
17841786
Document.Page
1785-
{ Page.preamble; items; url; source_anchor; search_asset = None }
1787+
{ Page.preamble; items; url; source_anchor; search_assets = [] }
17861788

17871789
let source_tree t =
17881790
let dir_pages = t.Odoc_model.Lang.SourceTree.source_children in
@@ -1872,7 +1874,7 @@ module Make (Syntax : SYNTAX) = struct
18721874
items;
18731875
url;
18741876
source_anchor = None;
1875-
search_asset = None;
1877+
search_assets = [];
18761878
}
18771879
in
18781880
M.fold (fun dir children acc -> page_of_dir dir children :: acc) mmap []

src/document/types.ml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,7 @@ and Page : sig
178178
source_anchor : Url.t option;
179179
(** Url to the corresponding source code. Might be a whole source file
180180
or a sub part. *)
181-
search_asset : Url.Path.t option;
181+
search_assets : Url.t list;
182182
}
183183
end =
184184
Page

src/html/generator.ml

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -476,7 +476,7 @@ module Page = struct
476476
and subpages ~config subpages = List.map (include_ ~config) subpages
477477

478478
and page ~config p : Odoc_document.Renderer.page =
479-
let { Page.preamble; items = i; url; source_anchor; search_asset } =
479+
let { Page.preamble; items = i; url; source_anchor; search_assets } =
480480
Doctree.Labels.disambiguate_page ~enter_subpages:false p
481481
in
482482
let subpages = subpages ~config @@ Doctree.Subpages.compute p in
@@ -485,12 +485,7 @@ module Page = struct
485485
let uses_katex = Doctree.Math.has_math_elements p in
486486
let toc = Toc.gen_toc ~config ~resolve ~path:url i in
487487
let breadcrumbs = Breadcrumbs.gen_breadcrumbs ~config ~url in
488-
let search_url =
489-
match search_asset with
490-
| Some url ->
491-
Some (Link.href ~config ~resolve (Odoc_document.Url.from_path url))
492-
| None -> None
493-
in
488+
let search_urls = List.map (Link.href ~config ~resolve) search_assets in
494489
let content = (items ~config ~resolve i :> any Html.elt list) in
495490
if Config.as_json config then
496491
let source_anchor =
@@ -507,7 +502,7 @@ module Page = struct
507502
(Doctree.PageTitle.render_title ?source_anchor p @ preamble)
508503
in
509504
Html_page.make ~config ~header ~toc ~breadcrumbs ~url ~uses_katex
510-
~search_url content subpages
505+
~search_urls content subpages
511506

512507
and source_page ~config sp =
513508
let { Source_page.url; contents } = sp in

src/html/html_page.ml

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ let html_of_breadcrumbs (breadcrumbs : Types.breadcrumb list) =
9494
make_navigation ~up_url:up.href
9595
(List.rev html @ sep @ [ Html.txt current.name ])
9696

97-
let page_creator ~config ~url ~uses_katex ~search_url header breadcrumbs toc
97+
let page_creator ~config ~url ~uses_katex ~search_urls header breadcrumbs toc
9898
content =
9999
let theme_uri = Config.theme_uri config in
100100
let support_uri = Config.support_uri config in
@@ -115,10 +115,16 @@ let page_creator ~config ~url ~uses_katex ~search_url header breadcrumbs toc
115115
let odoc_css_uri = file_uri theme_uri "odoc.css" in
116116
let highlight_js_uri = file_uri support_uri "highlight.pack.js" in
117117
let search_scripts =
118-
match search_url with
119-
| None -> []
120-
| Some search_url ->
121-
let search_urls = "['" ^ search_url ^ "']" in
118+
match search_urls with
119+
| [] -> []
120+
| search_urls ->
121+
let search_urls =
122+
let search_url name =
123+
Printf.sprintf "'%s'" (file_uri support_uri name)
124+
in
125+
let search_urls = List.map search_url search_urls in
126+
"[" ^ String.concat "," search_urls ^ "]"
127+
in
122128
[
123129
Html.script ~a:[]
124130
(Html.txt
@@ -187,10 +193,10 @@ let page_creator ~config ~url ~uses_katex ~search_url header breadcrumbs toc
187193
Html.head (Html.title (Html.txt title_string)) meta_elements
188194
in
189195
let search_bar =
190-
match search_url with
191-
| Some _ ->
196+
match search_urls with
197+
| [] -> []
198+
| _ ->
192199
[ Html.div ~a:[ Html.a_class [ "odoc-search" ] ] [ html_of_search () ] ]
193-
| None -> []
194200
in
195201

196202
let body =
@@ -210,11 +216,11 @@ let page_creator ~config ~url ~uses_katex ~search_url header breadcrumbs toc
210216
in
211217
content
212218

213-
let make ~config ~url ~header ~breadcrumbs ~toc ~uses_katex ~search_url content
219+
let make ~config ~url ~header ~breadcrumbs ~toc ~uses_katex ~search_urls content
214220
children =
215221
let filename = Link.Path.as_filename ~is_flat:(Config.flat config) url in
216222
let content =
217-
page_creator ~config ~url ~uses_katex ~search_url header breadcrumbs toc
223+
page_creator ~config ~url ~uses_katex ~search_urls header breadcrumbs toc
218224
content
219225
in
220226
{ Odoc_document.Renderer.filename; content; children }

src/html/html_page.mli

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ val make :
2727
breadcrumbs:Types.breadcrumb list ->
2828
toc:Types.toc list ->
2929
uses_katex:bool ->
30-
search_url:string option ->
30+
search_urls:string list ->
3131
Html_types.div_content Html.elt list ->
3232
Odoc_document.Renderer.page list ->
3333
Odoc_document.Renderer.page

0 commit comments

Comments
 (0)