fix: rendering of Markdown inline formatting and bullet lists (#1156)#1157
Conversation
✨ Highlights
🧾 Changes by Scope
🔝 Top Files
|
|
An automated preview of the documentation is available at https://1157.mrdocs.prtest2.cppalliance.org/index.html If more commits are pushed to the pull request, the docs will rebuild at the same URL. 2026-02-18 18:16:39 UTC |
24dd8d2 to
4d78ef7
Compare
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## develop #1157 +/- ##
===========================================
+ Coverage 76.38% 76.49% +0.11%
===========================================
Files 311 311
Lines 29672 29748 +76
Branches 5863 5877 +14
===========================================
+ Hits 22664 22756 +92
+ Misses 4735 4728 -7
+ Partials 2273 2264 -9 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
Yes. In theory, we could just bypass clang and parse everything ourselves, and this would be somewhat equivalent to a hook. The biggest issue blocking this right now is human resources: the current plan is to address #1113 first (although we're opening this exception for capy issues). We'll have reasonable solutions for the parsing problem once we get it. 😊 |
|
Oh... Regarding your solution, it looks a little verbose (and potentially duplicated), to be honest. 😅 We already parse Markdown elsewhere in the finalize step; this is completely unrelated to the clang parser. The algorithm takes an array of text nodes and converts them inline into nodes with the proper tags (there are even unit tests for that). We just need to complete the plumbing so that the list items also work with this functionality. It shouldn't be much code. The impression I have is that whatever procedure you used to figure out what to change wasn't aware that the logic already exists in the codebase. And that's understandable, because this codebase has become extremely large and complex, and it's hard to understand the context in which each thing happens. 🙃 But we can come up with a reasonable solution to this problem. It's not that bad. Oh... and we also need tests, of course. 🙂 |
140c3ad to
de0c61a
Compare
8463349 to
63f1e29
Compare
…iance#1156) Markdown inline formatting (**bold**, `code`), bullet lists using "- " markers, and nested lists, were not rendered correctly.
This was a pre-existing bug that affected all content inside list items (not just our new Markdown lists, but also existing `@li` ones).
Exercise empty-paragraph, admonition, and styled-continuation branches in Markdown list conversion to meet the 90% patch coverage target.
This bug was introduced with commit #51e2b655af43f36bc2fd3e9c369dbd48046d2de6.
63f1e29 to
c7dc66b
Compare
@alandefreitas: This patch covers the current Capy needs but, as I said on Slack, it is ad-hoc. The only long term solution is what Vinnie suggested: a Clang hook to take over comment processing entirely. A bit reluctantly, given the time I spent on it, I'd say we shouldn't merge it. We can extract the fix to inline.html.hbs from it, though, which is a genuine bug fix and doesn't depend on the Clang hook.
Markdown inline formatting (bold, italic,
code) and bullet lists using "- " markers were not rendered in the HTML output.Inline formatting:
Add
appendMarkdownInlines()to parse bold, italic, andcodespans in text nodes, producingStrongInline,EmphInline, andCodeInlinenodes respectively.Call it from
visitText()so all text nodes are processed.Add a markup/b.html.hbs partial to render
<strong>tags.Add doc/inline.html.hbs to dispatch text, strong, emph, and code inline kinds to their partials without emitting extraneous blank lines.
List detection and conversion:
Add list marker detection functions that recognize "- " at the start of text, after newlines, after ":" or "." punctuation, and at trailing positions within already-started lists.
Add
convertParagraphWithLists()to split a paragraph containing list markers into a prefix paragraph and aListBlock.Apply list detection in
visitParagraph(),@parblocks, and@liblocks so that Markdown lists are converted in all contexts.