23
23
#include " subdoc/lib/gen/generate_requires.h"
24
24
#include " subdoc/lib/gen/html_writer.h"
25
25
#include " subdoc/lib/gen/options.h"
26
+ #include " subdoc/lib/parse_comment.h"
26
27
#include " sus/prelude.h"
27
28
28
29
namespace subdoc ::gen {
@@ -36,26 +37,26 @@ enum Style {
36
37
37
38
void generate_return_type (HtmlWriter::OpenDiv& div,
38
39
const FunctionOverload& overload) noexcept {
39
- {
40
+ if (overload. return_type_element . is_some ()) {
40
41
auto return_type_link = div.open_a ();
41
42
return_type_link.add_class (" type-name" );
42
43
return_type_link.add_title (overload.return_type_name );
43
- if (overload.return_type_element .is_some ()) {
44
- if (!overload.return_type_element ->hidden ()) {
45
- return_type_link.add_href (
46
- construct_html_file_path (
47
- std::filesystem::path (),
48
- overload.return_type_element ->namespace_path .as_slice (),
49
- overload.return_type_element ->record_path .as_slice (),
50
- overload.return_type_element ->name )
51
- .string ());
52
- } else {
53
- llvm::errs () << " WARNING: Reference to hidden TypeElement "
54
- << overload.return_type_element ->name << " in namespace "
55
- << overload.return_type_element ->namespace_path ;
56
- }
44
+ if (!overload.return_type_element ->hidden ()) {
45
+ return_type_link.add_href (
46
+ construct_html_file_path (
47
+ std::filesystem::path (),
48
+ overload.return_type_element ->namespace_path .as_slice (),
49
+ overload.return_type_element ->record_path .as_slice (),
50
+ overload.return_type_element ->name )
51
+ .string ());
52
+ } else {
53
+ llvm::errs () << " WARNING: Reference to hidden TypeElement "
54
+ << overload.return_type_element ->name << " in namespace "
55
+ << overload.return_type_element ->namespace_path ;
57
56
}
58
57
return_type_link.write_text (overload.return_short_type_name );
58
+ } else {
59
+ div.write_text (overload.return_short_type_name );
59
60
}
60
61
}
61
62
@@ -66,26 +67,25 @@ void generate_function_params(HtmlWriter::OpenDiv& div,
66
67
for (const auto & [i, p] : overload.parameters .iter ().enumerate()) {
67
68
if (i > 0u ) div.write_text (" , " );
68
69
69
- {
70
+ if (p. type_element . is_some ()) {
70
71
auto one_param_link = div.open_a ();
71
72
one_param_link.add_class (" type-name" );
72
73
one_param_link.add_title (p.type_name );
73
- if (p.type_element .is_some ()) {
74
- if (!p.type_element ->hidden ()) {
75
- one_param_link.add_href (
76
- construct_html_file_path (
77
- std::filesystem::path (),
78
- p.type_element ->namespace_path .as_slice (),
79
- p.type_element ->record_path .as_slice (),
80
- p.type_element ->name )
81
- .string ());
82
- } else {
83
- llvm::errs () << " WARNING: Reference to hidden TypeElement "
84
- << p.type_element ->name << " in namespace "
85
- << p.type_element ->namespace_path ;
86
- }
74
+ if (!p.type_element ->hidden ()) {
75
+ one_param_link.add_href (construct_html_file_path (
76
+ std::filesystem::path (),
77
+ p.type_element ->namespace_path .as_slice (),
78
+ p.type_element ->record_path .as_slice (),
79
+ p.type_element ->name )
80
+ .string ());
81
+ } else {
82
+ llvm::errs () << " WARNING: Reference to hidden TypeElement "
83
+ << p.type_element ->name << " in namespace "
84
+ << p.type_element ->namespace_path ;
87
85
}
88
86
one_param_link.write_text (p.short_type_name );
87
+ } else {
88
+ div.write_text (p.short_type_name );
89
89
}
90
90
91
91
if (!p.parameter_name .empty ()) {
@@ -221,6 +221,8 @@ void generate_function(const FunctionElement& element,
221
221
u32 overload_set, const Options& options) noexcept {
222
222
if (element.hidden ()) return ;
223
223
224
+ ParseMarkdownPageState page_state;
225
+
224
226
const std::filesystem::path path = construct_html_file_path_for_function (
225
227
options.output_root , element, overload_set);
226
228
std::filesystem::create_directories (path.parent_path ());
@@ -331,13 +333,14 @@ void generate_function(const FunctionElement& element,
331
333
auto desc_div = section_div.open_div ();
332
334
desc_div.add_class (" description" );
333
335
desc_div.add_class (" long" );
334
- desc_div.write_html (element.comment .full ());
336
+ desc_div.write_html (element.comment .parsed_full (page_state). unwrap ());
335
337
}
336
338
}
337
339
338
340
void generate_function_reference (HtmlWriter::OpenUl& items_list,
339
341
const FunctionElement& element,
340
- u32 overload_set) noexcept {
342
+ u32 overload_set,
343
+ ParseMarkdownPageState& page_state) noexcept {
341
344
auto item_li = items_list.open_li ();
342
345
item_li.add_class (" section-item" );
343
346
@@ -356,13 +359,14 @@ void generate_function_reference(HtmlWriter::OpenUl& items_list,
356
359
auto desc_div = item_li.open_div ();
357
360
desc_div.add_class (" description" );
358
361
desc_div.add_class (" short" );
359
- if (element.has_comment ()) desc_div.write_html (element.comment .summary ());
362
+ if (element.has_comment ())
363
+ desc_div.write_html (element.comment .parsed_summary (page_state).unwrap ());
360
364
}
361
365
}
362
366
363
- void generate_function_long_reference (HtmlWriter::OpenDiv& item_div,
364
- const FunctionElement& element,
365
- u32 overload_set) noexcept {
367
+ void generate_function_long_reference (
368
+ HtmlWriter::OpenDiv& item_div, const FunctionElement& element,
369
+ u32 overload_set, ParseMarkdownPageState& page_state ) noexcept {
366
370
{
367
371
auto overload_set_div = item_div.open_div ();
368
372
overload_set_div.add_class (" overload-set" );
@@ -374,7 +378,8 @@ void generate_function_long_reference(HtmlWriter::OpenDiv& item_div,
374
378
auto desc_div = item_div.open_div ();
375
379
desc_div.add_class (" description" );
376
380
desc_div.add_class (" long" );
377
- if (element.has_comment ()) desc_div.write_html (element.comment .full ());
381
+ if (element.has_comment ())
382
+ desc_div.write_html (element.comment .parsed_full (page_state).unwrap ());
378
383
}
379
384
}
380
385
0 commit comments