[clang-doc] add code comments to comment template (#150648)
Serializes Doxygen code comments in HTML templates. Modifies the basic-project to add a code example.
This commit is contained in:
parent
445006d3a9
commit
4df8f72608
@ -103,6 +103,18 @@ static json::Value extractTextComments(Object *ParagraphComment) {
|
||||
return *ParagraphComment->get("Children");
|
||||
}
|
||||
|
||||
static json::Value extractVerbatimComments(json::Array VerbatimLines) {
|
||||
json::Value TextArray = json::Array();
|
||||
auto &TextArrayRef = *TextArray.getAsArray();
|
||||
for (auto &Line : VerbatimLines)
|
||||
TextArrayRef.push_back(*Line.getAsObject()
|
||||
->get("VerbatimBlockLineComment")
|
||||
->getAsObject()
|
||||
->get("Text"));
|
||||
|
||||
return TextArray;
|
||||
}
|
||||
|
||||
static Object serializeComment(const CommentInfo &I, Object &Description) {
|
||||
// taken from PR #142273
|
||||
Object Obj = Object();
|
||||
@ -157,13 +169,11 @@ static Object serializeComment(const CommentInfo &I, Object &Description) {
|
||||
}
|
||||
|
||||
case CommentKind::CK_VerbatimBlockComment: {
|
||||
Child.insert({"Text", I.Text});
|
||||
if (!I.CloseName.empty())
|
||||
Child.insert({"CloseName", I.CloseName});
|
||||
Child.insert({"Children", ChildArr});
|
||||
if (I.CloseName == "endcode")
|
||||
insertComment(Description, ChildVal, "CodeComments");
|
||||
else if (I.CloseName == "endverbatim")
|
||||
if (I.CloseName == "endcode") {
|
||||
// We don't support \code language specification
|
||||
auto TextCommentsArray = extractVerbatimComments(CARef);
|
||||
insertComment(Description, TextCommentsArray, "CodeComments");
|
||||
} else if (I.CloseName == "endverbatim")
|
||||
insertComment(Description, ChildVal, "VerbatimComments");
|
||||
return Obj;
|
||||
}
|
||||
|
@ -469,3 +469,7 @@ a, a:visited, a:hover, a:active {
|
||||
text-decoration: none;
|
||||
color: inherit;
|
||||
}
|
||||
|
||||
.code-block {
|
||||
white-space: pre-line;
|
||||
}
|
||||
|
@ -40,6 +40,20 @@
|
||||
{{/.}}
|
||||
{{/ReturnComments}}
|
||||
{{/HasReturnComments}}
|
||||
{{#HasCodeComments}}
|
||||
<h3>Code</h3>
|
||||
{{#CodeComments}}
|
||||
<div>
|
||||
<pre class="code-block">
|
||||
<code>
|
||||
{{#.}}
|
||||
{{.}}
|
||||
{{/.}}
|
||||
</code>
|
||||
</pre>
|
||||
</div>
|
||||
{{/CodeComments}}
|
||||
{{/HasCodeComments}}
|
||||
{{#BlockCommandComment}}
|
||||
<div class="block-command-comment__command">
|
||||
<div class="block-command-command">
|
||||
|
@ -26,6 +26,10 @@ public:
|
||||
/**
|
||||
* @brief Calculates the perimeter of the circle.
|
||||
*
|
||||
* @code
|
||||
* Circle circle(5.0);
|
||||
* double perimeter = circle.perimeter();
|
||||
* @endcode
|
||||
* @return double The perimeter of the circle.
|
||||
*/
|
||||
double perimeter() const override;
|
||||
|
@ -729,6 +729,15 @@ HTML-CIRCLE: <p></p>
|
||||
HTML-CIRCLE: </div>
|
||||
HTML-CIRCLE: <h3>Returns</h3>
|
||||
HTML-CIRCLE: <p> double The perimeter of the circle.</p>
|
||||
HTML-CIRCLE: <h3>Code</h3>
|
||||
HTML-CIRCLE: <div>
|
||||
HTML-CIRCLE: <pre class="code-block">
|
||||
HTML-CIRCLE: <code>
|
||||
HTML-CIRCLE: Circle circle(5.0);
|
||||
HTML-CIRCLE: double perimeter = circle.perimeter();
|
||||
HTML-CIRCLE: </code>
|
||||
HTML-CIRCLE: </pre>
|
||||
HTML-CIRCLE: </div>
|
||||
HTML-CIRCLE: </div>
|
||||
HTML-CIRCLE: </div>
|
||||
HTML-CIRCLE: </div>
|
||||
|
Loading…
x
Reference in New Issue
Block a user