Preserve markdown using the Rust based backend parser
We now use a Rust based serializer that can help us preserve markdown more efficiently and reliably. We need to add support for supporting preserving markdown for the following elements.
<table>
<tr>
<th>Markdown Nodes</th>
<th>Implemented</th>
<th>Issue/MR/Description</th>
</tr>
<tr>
<td>Audio/Video/Image</td>
<td>
:white_check_mark:
</td>
<td>
https://gitlab.com/gitlab-org/gitlab/-/issues/455382+
</td>
</tr>
<tr>
<td>Blockquote</td>
<td>
:white_check_mark:
</td>
<td>
* https://gitlab.com/gitlab-org/gitlab/-/merge_requests/68877+
* https://gitlab.com/gitlab-org/gitlab/-/issues/455383+
</td>
</tr>
<tr>
<td>Bold/Italic/Code (inline)/Strike</td>
<td>
:white_check_mark:
</td>
<td>
https://gitlab.com/gitlab-org/gitlab/-/issues/455375+
</td>
</tr>
<tr>
<td>Bullet List/Ordered List/List item</td>
<td>
:question:
</td>
<td>
* https://gitlab.com/gitlab-org/gitlab/-/merge_requests/68877+
* https://gitlab.com/gitlab-org/gitlab/-/issues/455452+
</td>
</tr>
<tr>
<td>Code Block/Code Suggestion/Diagram</td>
<td>
:white_check_mark:
</td>
<td>
https://gitlab.com/gitlab-org/gitlab/-/issues/455386+
</td>
</tr>
<tr>
<td>Color Chip/Emoji/References</td>
<td>
:question:
</td>
<td>
https://gitlab.com/gitlab-org/gitlab/-/issues/379407+
</td>
</tr>
<tr>
<td>Footnotes</td>
<td>
:white_check_mark:
</td>
<td>
https://gitlab.com/gitlab-org/gitlab/-/issues/455389+
</td>
</tr>
<tr>
<td>Hard break/Horizontal rule</td>
<td>
:question:
</td>
<td>
* https://gitlab.com/gitlab-org/gitlab/-/issues/455390+
*
</td>
</tr>
<tr>
<td>Inline diff</td>
<td>
:white_check_mark:
</td>
<td>
https://gitlab.com/gitlab-org/gitlab/-/issues/455394+
</td>
</tr>
<tr>
<td>Link</td>
<td>
:white_check_mark:
</td>
<td>
https://gitlab.com/gitlab-org/gitlab/-/issues/455392+
</td>
</tr>
<tr>
<td>Link (reference)</td>
<td>
:question: (Partial)
</td>
<td>
https://gitlab.com/gitlab-org/gitlab/-/issues/455393+
</td>
</tr>
<tr>
<td>Math (inline)</td>
<td>
:white_check_mark:
</td>
<td>
https://gitlab.com/gitlab-org/gitlab/-/issues/455395+
</td>
</tr>
<tr>
<td>Paragraph</td>
<td>
:white_check_mark:
</td>
<td>
https://gitlab.com/gitlab-org/gitlab/-/issues/455388+
</td>
</tr>
<tr>
<td>Headings (6 levels)</td>
<td>
:white_check_mark:
</td>
<td>
https://gitlab.com/gitlab-org/gitlab/-/issues/455387+
</td>
</tr>
<tr>
<td>Table of Contents</td>
<td>
:question:
</td>
<td>
https://gitlab.com/gitlab-org/gitlab/-/issues/455397+
</td>
</tr>
<tr>
<td>Tables: cell, header, row, column</td>
<td>
:white_check_mark:
</td>
<td>
https://gitlab.com/gitlab-org/gitlab/-/issues/455396+ (works for the most part)
</td>
</tr>
<tr>
<td>Task list (bullet/numeric)</td>
<td>
:white_check_mark:
</td>
<td>
* https://gitlab.com/gitlab-org/gitlab/-/merge_requests/136627+
* https://gitlab.com/gitlab-org/gitlab/-/merge_requests/68877+
</td>
</tr>
</table>
HTML Nodes
<table>
<tr>
<th>HTML Nodes</th>
<th>Implemented</th>
<th>MR</th>
</tr>
<tr>
<td>Description List</td>
<td>N/A</td>
<td>
https://gitlab.com/gitlab-org/gitlab/-/issues/455398+
</td>
</tr>
<tr>
<td>Details/summary</td>
<td>N/A</td>
<td>
https://gitlab.com/gitlab-org/gitlab/-/issues/455399+
</td>
</tr>
<tr>
<td>Figure/Figure caption</td>
<td>N/A</td>
<td>
https://gitlab.com/gitlab-org/gitlab/-/issues/455400+
</td>
</tr>
<tr>
<td>
HTML Marks
```javascript
'ins',
'abbr',
'bdo',
'cite',
'dfn',
'small',
'span',
'time',
'kbd',
'q',
'samp',
'var',
'ruby',
'rp',
'rt',
'mark',
'sub',
'super',
'wbr'
```
</td>
<td>N/A</td>
<td>
https://gitlab.com/gitlab-org/gitlab/-/issues/455403+
</td>
</tr>
<tr>
<td>
HTML Nodes
```javascript
'div',
'pre'
```
</td>
<td>
:question:
</td>
<td>
https://gitlab.com/gitlab-org/gitlab/-/issues/455402+
</td>
</tr>
<tr>
<td>HTML Comments</td>
<td>
:white_check_mark:
</td>
<td>
https://gitlab.com/gitlab-org/gitlab/-/issues/471394+
</td>
</tr>
</table>
epic