@@ -22,24 +22,44 @@ let check_empty_source_arg source filename =
22
22
an implementation"
23
23
filename
24
24
25
+ let check_empty_asset_path asset_path filename =
26
+ if asset_path <> None then
27
+ Error. raise_warning
28
+ @@ Error. filename_only
29
+ " --asset-path only has an effect when generating from an asset"
30
+ filename
31
+
25
32
let documents_of_unit ~warnings_options ~syntax ~source ~renderer ~extra
26
- ~filename unit =
33
+ ~asset_path ~ filename unit =
27
34
Error. catch_warnings (fun () ->
28
35
check_empty_source_arg source filename;
36
+ check_empty_asset_path asset_path filename;
29
37
renderer.Renderer. extra_documents extra (CU unit ))
30
38
|> Error. handle_warnings ~warnings_options
31
39
>> = fun extra_docs ->
32
40
Ok (Renderer. document_of_compilation_unit ~syntax unit :: extra_docs)
33
41
42
+ let documents_of_asset ~warnings_options ~source ~filename ~asset_path unit =
43
+ Error. catch_warnings (fun () ->
44
+ check_empty_source_arg source filename;
45
+ match asset_path with None -> failwith " TODO" | Some a -> a)
46
+ |> Error. handle_warnings ~warnings_options
47
+ >> = fun asset_path -> Ok [ Renderer. document_of_asset asset_path unit ]
48
+
34
49
let documents_of_page ~warnings_options ~syntax ~source ~renderer ~extra
35
- ~filename page =
50
+ ~asset_path ~ filename page =
36
51
Error. catch_warnings (fun () ->
37
52
check_empty_source_arg source filename;
53
+ check_empty_asset_path asset_path filename;
38
54
renderer.Renderer. extra_documents extra (Page page))
39
55
|> Error. handle_warnings ~warnings_options
40
56
>> = fun extra_docs -> Ok (Renderer. document_of_page ~syntax page :: extra_docs)
41
57
42
- let documents_of_implementation ~warnings_options :_ ~syntax impl source =
58
+ let documents_of_implementation ~warnings_options ~syntax ~filename ~asset_path
59
+ impl source =
60
+ Error. catch_warnings (fun () -> check_empty_asset_path asset_path filename)
61
+ |> Error. handle_warnings ~warnings_options
62
+ >> = fun () ->
43
63
match (source, impl.Lang.Implementation. id) with
44
64
| Some source , Some source_id -> (
45
65
let source_file =
@@ -82,35 +102,39 @@ let documents_of_source_tree ~warnings_options ~syntax ~source ~filename srctree
82
102
|> Error. handle_warnings ~warnings_options
83
103
>> = fun () -> Ok (Renderer. documents_of_source_tree ~syntax srctree)
84
104
85
- let documents_of_odocl ~warnings_options ~renderer ~extra ~source ~syntax input
86
- =
105
+ let documents_of_odocl ~warnings_options ~renderer ~extra ~source ~syntax
106
+ ~ asset_path input =
87
107
Odoc_file. load input >> = fun unit ->
88
108
let filename = Fpath. to_string input in
89
109
match unit .content with
90
110
| Odoc_file. Page_content odoctree ->
91
111
documents_of_page ~warnings_options ~syntax ~source ~renderer ~extra
92
- ~filename odoctree
112
+ ~asset_path ~ filename odoctree
93
113
| Source_tree_content srctree ->
94
114
documents_of_source_tree ~warnings_options ~syntax ~source ~filename
95
115
srctree
96
116
| Impl_content impl ->
97
117
documents_of_implementation ~warnings_options ~syntax impl source
118
+ ~asset_path ~filename
98
119
| Unit_content odoctree ->
99
120
documents_of_unit ~warnings_options ~source ~syntax ~renderer ~extra
100
- ~filename odoctree
101
- | Asset_content _ -> Ok [] (* TODO *)
121
+ ~asset_path ~filename odoctree
122
+ | Asset_content a ->
123
+ documents_of_asset ~warnings_options ~source ~filename ~asset_path a
102
124
103
125
let documents_of_input ~renderer ~extra ~resolver ~warnings_options ~syntax
104
- input =
126
+ ~ asset_path input =
105
127
let output = Fs.File. (set_ext " .odocl" input) in
106
128
Odoc_link. from_odoc ~resolver ~warnings_options input output >> = function
107
129
| `Source_tree st -> Ok (Renderer. documents_of_source_tree ~syntax st)
108
130
| `Page page -> Ok [ Renderer. document_of_page ~syntax page ]
109
131
| `Impl impl -> Ok (Renderer. documents_of_implementation ~syntax impl [] " " )
110
132
| `Module m ->
111
133
documents_of_unit ~warnings_options ~source: None ~filename: " " ~syntax
112
- ~renderer ~extra m
113
- | `Asset _ -> Ok [] (* TODO *)
134
+ ~asset_path ~renderer ~extra m
135
+ | `Asset a ->
136
+ documents_of_asset ~warnings_options ~source: None ~filename: " " ~asset_path
137
+ a
114
138
115
139
let render_document renderer ~sidebar ~output :root_dir ~extra_suffix ~extra doc
116
140
=
@@ -144,21 +168,23 @@ let render_odoc ~resolver ~warnings_options ~syntax ~renderer ~output extra file
144
168
=
145
169
let extra_suffix = None in
146
170
documents_of_input ~renderer ~extra ~resolver ~warnings_options ~syntax file
171
+ ~asset_path: None
147
172
>> = fun docs ->
148
173
List. iter
149
174
(render_document renderer ~sidebar: None ~output ~extra_suffix ~extra )
150
175
docs;
151
176
Ok ()
152
177
153
178
let generate_odoc ~syntax ~warnings_options ~renderer ~output ~extra_suffix
154
- ~source ~sidebar extra file =
179
+ ~source ~sidebar ~ asset_path extra file =
155
180
(match sidebar with
156
181
| None -> Ok None
157
182
| Some x ->
158
183
Odoc_file. load_index x >> = fun (sidebar , _ ) ->
159
184
Ok (Some (Odoc_document.Sidebar. of_lang sidebar)))
160
185
>> = fun sidebar ->
161
- documents_of_odocl ~warnings_options ~renderer ~source ~extra ~syntax file
186
+ documents_of_odocl ~warnings_options ~renderer ~source ~extra ~syntax
187
+ ~asset_path file
162
188
>> = fun docs ->
163
189
List. iter
164
190
(render_document renderer ~output ~sidebar ~extra_suffix ~extra )
@@ -170,10 +196,10 @@ let targets_odoc ~resolver ~warnings_options ~syntax ~renderer ~output:root_dir
170
196
let docs =
171
197
if Fpath. get_ext odoctree = " .odoc" then
172
198
documents_of_input ~renderer ~extra ~resolver ~warnings_options ~syntax
173
- odoctree
199
+ ~asset_path: None odoctree
174
200
else
175
201
documents_of_odocl ~warnings_options ~renderer ~extra ~syntax ~source
176
- odoctree
202
+ ~asset_path: None odoctree
177
203
in
178
204
docs >> = fun docs ->
179
205
List. iter
0 commit comments