Conformance

flowdown reads Markdown with its own parser. This page is what that parser is held to: every example of the specifications is run, and every piece of syntax below is drawn and looked for in the page. The page is written by a script, and the test suite fails when it no longer matches the code.

SuiteExamplesPass
CommonMark 0.31.2652652
GitHub Flavored Markdown, the extensions2222
cmark-gfm's extension tests3030

CommonMark

Every example of the specification, by section. The expected HTML is compared character for character.

SectionExamplesPass
Tabs1111
Backslash escapes1313
Entity and numeric character references1717
Precedence11
Thematic breaks1919
ATX headings1818
Setext headings2727
Indented code blocks1212
Fenced code blocks2929
HTML blocks4444
Link reference definitions2727
Paragraphs88
Blank lines11
Block quotes2525
List items4848
Lists2626
Inlines11
Code spans2222
Emphasis and strong emphasis132132
Links9090
Images2222
Autolinks1919
Raw HTML2020
Hard line breaks1515
Soft line breaks22
Textual content33
All652652

GitHub Flavored Markdown

The examples of GitHub's specification that are about one of its extensions. (The rest of that document restates an older CommonMark, covered above at 0.31.2.) Task lists and footnotes have no examples there; cmark-gfm's own tests below cover them.

ExtensionExamplesPass
Tables88
Strikethrough22
Autolinks1111
Disallowed raw HTML11
All2222

cmark-gfm is GitHub's parser; these are the tests it keeps for its extensions.

SectionExamplesPass
Tables66
Table cell count mismatches22
Embedded pipes11
Oddly-formatted markers11
Escaping11
Embedded HTML11
Reference-style links11
Sequential cells11
Interaction with emphasis11
a table can be recognised when separated from a paragraph of text without an empty line11
Strikethroughs22
Autolinks33
HTML tag filter11
Footnotes11
When a footnote is used multiple times, we insert multiple backrefs.11
Footnote reference labels are href escaped11
Interop22
Task lists33
All3030

GitHub’s writing syntax

What Basic writing and formatting syntax lists, in its order. A dash is syntax that belongs to github.com (its users, issues and emoji), which a reply has no use for: it shows as written.

SyntaxSupportedNote
Headings✓
Bold✓
Italic✓
Strikethrough✓
Bold with nested italic✓
All bold and italic✓
Subscript, superscript, underline✓raw HTML, sanitized
Quoting text✓
Quoting code✓
Supported color models (a swatch beside #0969DA)—
Links✓
Bare URLs become links✓
Section links (heading ids)✓with headingIds
Custom anchors✓names are prefixed, as on GitHub
Line breaks: two spaces, backslash, <br/>✓
Images✓
The <picture> element✓
Lists✓
Nested lists✓
Task lists✓
Mentioning people and teams (@octocat)—
Referencing issues and pull requests (#12)—
Emoji shortcodes (:+1:)—
Paragraphs✓
Footnotes✓
Alerts: note, tip, important, warning, caution✓
Hiding content with comments✓
Ignoring Markdown formatting (\*)✓

From the advanced pages of the same guide:

SyntaxSupportedNote
Tables, with column alignment✓
Collapsed sections (<details>)✓raw HTML, sanitized
Fenced code blocks with a language✓
Diagrams (```mermaid)✓drawn when mermaid is given
Mathematical expressions: $…$, $$…$$, ```math✓with flowdown/math
<kbd> keys✓raw HTML, sanitized

The dialect

What flowdown draws beyond Markdown; Syntax describes each form. Every form is plain Markdown to any other renderer.

SyntaxSupportedNote
Callout with a title✓
Steps✓
Tabs✓
Pros and cons✓
Stats✓
Details (a folded section)✓
Sources✓
Quote with its source✓
Figure with a caption✓
File tree✓
Code block with a file name✓
Diff✓colored with flowdown/highlight
Numbered sections✓
Diagram✓drawn when mermaid is given
Math✓with flowdown/math