22
22
#include " subdoc/lib/gen/generate_head.h"
23
23
#include " subdoc/lib/gen/generate_record.h"
24
24
#include " subdoc/lib/gen/html_writer.h"
25
+ #include " subdoc/lib/parse_comment.h"
25
26
#include " sus/assertions/unreachable.h"
26
27
#include " sus/collections/slice.h"
27
28
#include " sus/prelude.h"
@@ -62,10 +63,11 @@ std::string namespace_display_name(
62
63
return sus::move (out).str ();
63
64
}
64
65
65
- void generate_namespace_overview (
66
- HtmlWriter::OpenDiv& namespace_div, const NamespaceElement& element,
67
- sus::Slice<const NamespaceElement*> ancestors,
68
- const Options& options) {
66
+ void generate_namespace_overview (HtmlWriter::OpenDiv& namespace_div,
67
+ const NamespaceElement& element,
68
+ sus::Slice<const NamespaceElement*> ancestors,
69
+ ParseMarkdownPageState& page_state,
70
+ const Options& options) {
69
71
auto section_div = namespace_div.open_div ();
70
72
section_div.add_class (" section" );
71
73
section_div.add_class (" overview" );
@@ -109,13 +111,15 @@ void generate_namespace_overview(
109
111
auto desc_div = section_div.open_div ();
110
112
desc_div.add_class (" description" );
111
113
desc_div.add_class (" long" );
112
- if (element.has_comment ()) desc_div.write_html (element.comment .full ());
114
+ if (element.has_comment ())
115
+ desc_div.write_html (element.comment .parsed_full (page_state).unwrap ());
113
116
}
114
117
}
115
118
116
- void generate_namespace_references (
117
- HtmlWriter::OpenDiv& namespace_div, const NamespaceElement& element,
118
- sus::Slice<SortedNamespaceByName> namespaces) {
119
+ void generate_namespace_references (HtmlWriter::OpenDiv& namespace_div,
120
+ const NamespaceElement& element,
121
+ sus::Slice<SortedNamespaceByName> namespaces,
122
+ ParseMarkdownPageState& page_state) {
119
123
if (namespaces.is_empty ()) return ;
120
124
121
125
auto section_div = namespace_div.open_div ();
@@ -137,7 +141,8 @@ void generate_namespace_references(
137
141
auto item_li = items_list.open_li ();
138
142
item_li.add_class (" section-item" );
139
143
140
- generate_namespace_reference (item_li, element.namespaces .at (id));
144
+ generate_namespace_reference (item_li, element.namespaces .at (id),
145
+ page_state);
141
146
}
142
147
143
148
{
@@ -161,7 +166,8 @@ void generate_namespace_references(
161
166
item_li.add_class (" nested" );
162
167
item_li.add_class (" section-item" );
163
168
generate_namespace_reference (
164
- item_li, element.namespaces .at (id).namespaces .at (sub_id));
169
+ item_li, element.namespaces .at (id).namespaces .at (sub_id),
170
+ page_state);
165
171
}
166
172
}
167
173
}
@@ -171,7 +177,8 @@ void generate_namespace_references(
171
177
void generate_record_references (HtmlWriter::OpenDiv& namespace_div,
172
178
const NamespaceElement& element,
173
179
sus::Slice<SortedRecordByName> records,
174
- RecordType record_type) {
180
+ RecordType record_type,
181
+ ParseMarkdownPageState& page_state) {
175
182
if (records.is_empty ()) return ;
176
183
177
184
auto section_div = namespace_div.open_div ();
@@ -198,7 +205,8 @@ void generate_record_references(HtmlWriter::OpenDiv& namespace_div,
198
205
items_list.add_class (" item-table" );
199
206
200
207
for (auto && [name, sort_key, key] : records) {
201
- generate_record_reference (items_list, element.records .at (key));
208
+ generate_record_reference (items_list, element.records .at (key),
209
+ page_state);
202
210
}
203
211
}
204
212
}
@@ -211,7 +219,8 @@ enum GenerateFunctionType {
211
219
void generate_function_references (HtmlWriter::OpenDiv& namespace_div,
212
220
const NamespaceElement& element,
213
221
sus::Slice<SortedFunctionByName> functions,
214
- GenerateFunctionType type) {
222
+ GenerateFunctionType type,
223
+ ParseMarkdownPageState& page_state) {
215
224
if (functions.is_empty ()) return ;
216
225
217
226
auto section_div = namespace_div.open_div ();
@@ -240,7 +249,7 @@ void generate_function_references(HtmlWriter::OpenDiv& namespace_div,
240
249
overload_set = 0u ;
241
250
prev_name = name;
242
251
generate_function_reference (items_list, element.functions .at (function_id),
243
- overload_set);
252
+ overload_set, page_state );
244
253
}
245
254
}
246
255
}
@@ -253,6 +262,8 @@ void generate_namespace(const NamespaceElement& element,
253
262
if (element.is_empty ()) return ;
254
263
if (element.hidden ()) return ;
255
264
265
+ ParseMarkdownPageState page_state;
266
+
256
267
const std::filesystem::path path =
257
268
construct_html_file_path_for_namespace (options.output_root , element);
258
269
std::filesystem::create_directories (path.parent_path ());
@@ -265,7 +276,8 @@ void generate_namespace(const NamespaceElement& element,
265
276
266
277
auto namespace_div = body.open_div ();
267
278
namespace_div.add_class (" namespace" );
268
- generate_namespace_overview (namespace_div, element, ancestors, options);
279
+ generate_namespace_overview (namespace_div, element, ancestors, page_state,
280
+ options);
269
281
270
282
{
271
283
sus::Vec<SortedNamespaceByName> sorted;
@@ -282,7 +294,8 @@ void generate_namespace(const NamespaceElement& element,
282
294
return a.at <1 >() <=> b.at <1 >();
283
295
});
284
296
285
- generate_namespace_references (namespace_div, element, sorted.as_slice ());
297
+ generate_namespace_references (namespace_div, element, sorted.as_slice (),
298
+ page_state);
286
299
}
287
300
288
301
{
@@ -315,9 +328,9 @@ void generate_namespace(const NamespaceElement& element,
315
328
});
316
329
317
330
generate_record_references (namespace_div, element, classes.as_slice (),
318
- RecordType::Class);
331
+ RecordType::Class, page_state );
319
332
generate_record_references (namespace_div, element, unions.as_slice (),
320
- RecordType::Union);
333
+ RecordType::Union, page_state );
321
334
}
322
335
323
336
{
@@ -347,9 +360,9 @@ void generate_namespace(const NamespaceElement& element,
347
360
return a.at <1 >() <=> b.at <1 >();
348
361
});
349
362
generate_function_references (namespace_div, element, sorted_functions,
350
- GenerateFunctions);
363
+ GenerateFunctions, page_state );
351
364
generate_function_references (namespace_div, element, sorted_operators,
352
- GenerateOperators);
365
+ GenerateOperators, page_state );
353
366
}
354
367
355
368
// Recurse into namespaces, records and functions.
@@ -390,7 +403,8 @@ void generate_namespace(const NamespaceElement& element,
390
403
}
391
404
392
405
void generate_namespace_reference (HtmlWriter::OpenLi& open_li,
393
- const NamespaceElement& element) noexcept {
406
+ const NamespaceElement& element,
407
+ ParseMarkdownPageState& page_state) noexcept {
394
408
{
395
409
auto item_div = open_li.open_div ();
396
410
item_div.add_class (" item-name" );
@@ -412,7 +426,8 @@ void generate_namespace_reference(HtmlWriter::OpenLi& open_li,
412
426
auto desc_div = open_li.open_div ();
413
427
desc_div.add_class (" description" );
414
428
desc_div.add_class (" short" );
415
- if (element.has_comment ()) desc_div.write_html (element.comment .summary ());
429
+ if (element.has_comment ())
430
+ desc_div.write_html (element.comment .parsed_summary (page_state).unwrap ());
416
431
}
417
432
}
418
433
0 commit comments