Skip to content

Commit 088a374

Browse files
sabinejonludlam
authored andcommitted
remove prefix for parameters from Url.Path, output file structure is unchanged, but the breadcrumb names are without the prefix now
1 parent 2a1afb7 commit 088a374

File tree

44 files changed

+151
-175
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

44 files changed

+151
-175
lines changed

src/document/doctree.ml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -296,16 +296,16 @@ end = struct
296296
in
297297
match kind with
298298
| `Module -> prefix "Module"
299-
| `Parameter -> prefix "Parameter"
299+
| `Parameter _ -> prefix "Parameter"
300300
| `ModuleType -> prefix "Module type"
301301
| `ClassType -> prefix "Class type"
302302
| `Class -> prefix "Class"
303303
| `Page | `LeafPage | `File -> []
304304

305-
let make_name_from_path { Url.Path.path_fragment; parent; _ } =
305+
let make_name_from_path { Url.Path.name; parent; _ } =
306306
match parent with
307-
| None | Some { kind = `Page; _ } -> path_fragment
308-
| Some p -> Printf.sprintf "%s.%s" p.path_fragment path_fragment
307+
| None | Some { kind = `Page; _ } -> name
308+
| Some p -> Printf.sprintf "%s.%s" p.name name
309309

310310
let render_title (p : Page.t) =
311311
format_title p.url.kind (make_name_from_path p.url)

src/document/url.ml

Lines changed: 27 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ module Path = struct
9898
| `Page
9999
| `LeafPage
100100
| `ModuleType
101-
| `Parameter
101+
| `Parameter of int
102102
| `Class
103103
| `ClassType
104104
| `File ]
@@ -108,16 +108,16 @@ module Path = struct
108108
| `Module -> "module"
109109
| `LeafPage -> "leaf-page"
110110
| `ModuleType -> "module-type"
111-
| `Parameter -> "argument"
111+
| `Parameter arg_num -> Printf.sprintf "argument-%d" arg_num
112112
| `Class -> "class"
113113
| `ClassType -> "class-type"
114114
| `File -> "file"
115115

116116
let pp_kind fmt kind = Format.fprintf fmt "%s" (string_of_kind kind)
117117

118-
type t = { kind : kind; parent : t option; path_fragment : string }
118+
type t = { kind : kind; parent : t option; name : string }
119119

120-
let mk ?parent kind path_fragment = { kind; parent; path_fragment }
120+
let mk ?parent kind name = { kind; parent; name }
121121

122122
let rec from_identifier : source -> t =
123123
fun x ->
@@ -129,73 +129,70 @@ module Path = struct
129129
| None -> None
130130
in
131131
let kind = `Module in
132-
let path_fragment = ModuleName.to_string unit_name in
133-
mk ?parent kind path_fragment
132+
let name = ModuleName.to_string unit_name in
133+
mk ?parent kind name
134134
| { iv = `Page (parent, page_name); _ } ->
135135
let parent =
136136
match parent with
137137
| Some p -> Some (from_identifier (p :> source))
138138
| None -> None
139139
in
140140
let kind = `Page in
141-
let path_fragment = PageName.to_string page_name in
142-
mk ?parent kind path_fragment
141+
let name = PageName.to_string page_name in
142+
mk ?parent kind name
143143
| { iv = `LeafPage (parent, page_name); _ } ->
144144
let parent =
145145
match parent with
146146
| Some p -> Some (from_identifier (p :> source))
147147
| None -> None
148148
in
149149
let kind = `LeafPage in
150-
let path_fragment = PageName.to_string page_name in
151-
mk ?parent kind path_fragment
150+
let name = PageName.to_string page_name in
151+
mk ?parent kind name
152152
| { iv = `Module (parent, mod_name); _ } ->
153153
let parent = from_identifier (parent :> source) in
154154
let kind = `Module in
155-
let path_fragment = ModuleName.to_string mod_name in
156-
mk ~parent kind path_fragment
155+
let name = ModuleName.to_string mod_name in
156+
mk ~parent kind name
157157
| { iv = `Parameter (functor_id, arg_name); _ } as p ->
158158
let parent = from_identifier (functor_id :> source) in
159-
let kind = `Parameter in
160159
let arg_num = functor_arg_pos p in
161-
let path_fragment =
162-
Printf.sprintf "%d-%s" arg_num (ModuleName.to_string arg_name)
163-
in
164-
mk ~parent kind path_fragment
160+
let kind = `Parameter arg_num in
161+
let name = ModuleName.to_string arg_name in
162+
mk ~parent kind name
165163
| { iv = `ModuleType (parent, modt_name); _ } ->
166164
let parent = from_identifier (parent :> source) in
167165
let kind = `ModuleType in
168-
let path_fragment = ModuleTypeName.to_string modt_name in
169-
mk ~parent kind path_fragment
166+
let name = ModuleTypeName.to_string modt_name in
167+
mk ~parent kind name
170168
| { iv = `Class (parent, name); _ } ->
171169
let parent = from_identifier (parent :> source) in
172170
let kind = `Class in
173-
let path_fragment = ClassName.to_string name in
174-
mk ~parent kind path_fragment
171+
let name = ClassName.to_string name in
172+
mk ~parent kind name
175173
| { iv = `ClassType (parent, name); _ } ->
176174
let parent = from_identifier (parent :> source) in
177175
let kind = `ClassType in
178-
let path_fragment = ClassTypeName.to_string name in
179-
mk ~parent kind path_fragment
176+
let name = ClassTypeName.to_string name in
177+
mk ~parent kind name
180178
| { iv = `Result p; _ } -> from_identifier (p :> source)
181179

182180
let from_identifier p =
183181
from_identifier
184182
(p : [< source_pv ] Odoc_model.Paths.Identifier.id :> source)
185183

186184
let to_list url =
187-
let rec loop acc { parent; path_fragment; kind } =
185+
let rec loop acc { parent; name; kind } =
188186
match parent with
189-
| None -> (kind, path_fragment) :: acc
190-
| Some p -> loop ((kind, path_fragment) :: acc) p
187+
| None -> (kind, name) :: acc
188+
| Some p -> loop ((kind, name) :: acc) p
191189
in
192190
loop [] url
193191

194192
let of_list l =
195193
let rec inner parent = function
196194
| [] -> parent
197-
| (kind, path_fragment) :: xs ->
198-
inner (Some { parent; path_fragment; kind }) xs
195+
| (kind, name) :: xs -> inner (Some { parent; name; kind }) xs
199196
in
200197
inner None l
201198

@@ -243,13 +240,11 @@ module Anchor = struct
243240

244241
type t = { page : Path.t; anchor : string; kind : kind }
245242

246-
let anchorify_path { Path.parent; path_fragment; kind } =
243+
let anchorify_path { Path.parent; name; kind } =
247244
match parent with
248245
| None -> assert false (* We got a root, should never happen *)
249246
| Some page ->
250-
let anchor =
251-
Printf.sprintf "%s-%s" (Path.string_of_kind kind) path_fragment
252-
in
247+
let anchor = Printf.sprintf "%s-%s" (Path.string_of_kind kind) name in
253248
{ page; anchor; kind = (kind :> kind) }
254249

255250
let add_suffix ~kind { page; anchor; _ } suffix =

src/document/url.mli

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ module Path : sig
1717
| `Page
1818
| `LeafPage
1919
| `ModuleType
20-
| `Parameter
20+
| `Parameter of int
2121
| `Class
2222
| `ClassType
2323
| `File ]
@@ -26,7 +26,7 @@ module Path : sig
2626

2727
val string_of_kind : kind -> string
2828

29-
type t = { kind : kind; parent : t option; path_fragment : string }
29+
type t = { kind : kind; parent : t option; name : string }
3030

3131
type source_pv =
3232
[ Identifier.Page.t_pv

src/html/generator.ml

Lines changed: 1 addition & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -403,20 +403,7 @@ module Page = struct
403403
items ~config ~resolve (Doctree.PageTitle.render_title p @ preamble)
404404
in
405405
let content = (items ~config ~resolve i :> any Html.elt list) in
406-
let name =
407-
match url.kind with
408-
| `Parameter ->
409-
let i =
410-
try String.index url.path_fragment '-'
411-
with Not_found ->
412-
print_endline url.path_fragment;
413-
0
414-
in
415-
String.sub url.path_fragment (i + 1)
416-
(String.length url.path_fragment - i - 1)
417-
| _ -> url.path_fragment
418-
in
419-
Tree.make ~config ~header ~toc ~url ~uses_katex name content subpages
406+
Tree.make ~config ~header ~toc ~url ~uses_katex url.name content subpages
420407
end
421408

422409
let render ~config page = Page.page ~config page

src/html/tree.ml

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,7 @@ let page_creator ~config ~url ~uses_katex name header toc content =
4343
| Types.Absolute uri -> uri ^ "/" ^ file
4444
| Relative uri ->
4545
let page =
46-
Odoc_document.Url.Path.
47-
{ kind = `File; parent = uri; path_fragment = file }
46+
Odoc_document.Url.Path.{ kind = `File; parent = uri; name = file }
4847
in
4948
Link.href ~config ~resolve:(Current url)
5049
(Odoc_document.Url.from_path page)
@@ -128,12 +127,12 @@ let page_creator ~config ~url ~uses_katex name header toc content =
128127
match parents with
129128
| [] -> [] (* Can't happen - Url.Path.to_list returns a non-empty list *)
130129
| [ _ ] -> [] (* No parents *)
131-
| [ x; { path_fragment = "index"; _ } ] ->
130+
| [ x; { name = "index"; _ } ] ->
132131
(* Special case leaf pages called 'index' with one parent. This is for files called
133132
index.mld that would otherwise clash with their parent. In particular,
134133
dune and odig both cause this situation right now. *)
135134
let up_url = "../index.html" in
136-
let parent_name = x.path_fragment in
135+
let parent_name = x.name in
137136
make_navigation ~up_url [ Html.txt parent_name ]
138137
| _ ->
139138
let up_url = href ~config (List.hd (List.tl (List.rev parents))) in
@@ -146,11 +145,11 @@ let page_creator ~config ~url ~uses_katex name header toc content =
146145
~f:(fun url' ->
147146
[
148147
[
149-
(if url = url' then Html.txt url.path_fragment
148+
(if url = url' then Html.txt url.name
150149
else
151150
Html.a
152151
~a:[ Html.a_href (href ~config url') ]
153-
[ Html.txt url'.path_fragment ]);
152+
[ Html.txt url'.name ]);
154153
];
155154
])
156155
|> List.flatten

src/latex/generator.ml

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,8 @@ module Link = struct
1515
match x.parent with
1616
| Some p ->
1717
Fmt.pf ppf "%a-%a-%s" flatten_path p Odoc_document.Url.Path.pp_kind
18-
x.kind x.path_fragment
19-
| None ->
20-
Fmt.pf ppf "%a-%s" Odoc_document.Url.Path.pp_kind x.kind x.path_fragment
18+
x.kind x.name
19+
| None -> Fmt.pf ppf "%a-%s" Odoc_document.Url.Path.pp_kind x.kind x.name
2120

2221
let page p = Format.asprintf "%a" flatten_path p
2322

src/manpage/generator.ml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -482,7 +482,7 @@ let page p =
482482
Doctree.PageTitle.render_title p @ Shift.compute ~on_sub p.preamble
483483
in
484484
let i = Shift.compute ~on_sub p.items in
485-
macro "TH" {|%s 3 "" "Odoc" "OCaml Library"|} p.url.path_fragment
485+
macro "TH" {|%s 3 "" "Odoc" "OCaml Library"|} p.url.name
486486
++ macro "SH" "Name"
487487
++ str "%s" (String.concat "." @@ Link.for_printing p.url)
488488
++ macro "SH" "Synopsis" ++ vspace ++ item ~nested:false header

src/odoc/bin/main.ml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -477,7 +477,7 @@ module Odoc_html_args = struct
477477
~f:(fun acc seg ->
478478
Some
479479
Odoc_document.Url.Path.
480-
{ kind = `Page; parent = acc; path_fragment = seg })
480+
{ kind = `Page; parent = acc; name = seg })
481481
l ~init:None
482482
in
483483
`Ok

test/generators/html/Functor-F1-argument-1-Arg.html

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<!DOCTYPE html>
22
<html xmlns="http://www.w3.org/1999/xhtml">
3-
<head><title>Arg (Functor.F1.1-Arg)</title>
3+
<head><title>Arg (Functor.F1.Arg)</title>
44
<link rel="stylesheet" href="odoc.css"/><meta charset="utf-8"/>
55
<meta name="generator" content="odoc %%VERSION%%"/>
66
<meta name="viewport" content="width=device-width,initial-scale=1.0"/>
@@ -10,10 +10,10 @@
1010
<body class="odoc">
1111
<nav class="odoc-nav"><a href="Functor-F1.html">Up</a>
1212
<a href="Functor.html">Functor</a> &#x00BB;
13-
<a href="Functor-F1.html">F1</a> &#x00BB; 1-Arg
13+
<a href="Functor-F1.html">F1</a> &#x00BB; Arg
1414
</nav>
1515
<header class="odoc-preamble">
16-
<h1>Parameter <code><span>F1.1-Arg</span></code></h1>
16+
<h1>Parameter <code><span>F1.Arg</span></code></h1>
1717
</header>
1818
<div class="odoc-content">
1919
<div class="odoc-spec">

test/generators/html/Functor-F2-argument-1-Arg.html

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<!DOCTYPE html>
22
<html xmlns="http://www.w3.org/1999/xhtml">
3-
<head><title>Arg (Functor.F2.1-Arg)</title>
3+
<head><title>Arg (Functor.F2.Arg)</title>
44
<link rel="stylesheet" href="odoc.css"/><meta charset="utf-8"/>
55
<meta name="generator" content="odoc %%VERSION%%"/>
66
<meta name="viewport" content="width=device-width,initial-scale=1.0"/>
@@ -10,10 +10,10 @@
1010
<body class="odoc">
1111
<nav class="odoc-nav"><a href="Functor-F2.html">Up</a>
1212
<a href="Functor.html">Functor</a> &#x00BB;
13-
<a href="Functor-F2.html">F2</a> &#x00BB; 1-Arg
13+
<a href="Functor-F2.html">F2</a> &#x00BB; Arg
1414
</nav>
1515
<header class="odoc-preamble">
16-
<h1>Parameter <code><span>F2.1-Arg</span></code></h1>
16+
<h1>Parameter <code><span>F2.Arg</span></code></h1>
1717
</header>
1818
<div class="odoc-content">
1919
<div class="odoc-spec">

0 commit comments

Comments
 (0)