@@ -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 =
0 commit comments