diff --git a/corpus/README.md b/corpus/README.md index 6937c57..4a8f0eb 100644 --- a/corpus/README.md +++ b/corpus/README.md @@ -14,6 +14,18 @@ beginning-of-file position, or end-of-file position are significant remain isolated under descriptive filenames. Markdown input remains free of embedded expected HTML and parser-specific assertions. +A fixture identifies its own expected state, so that a heading covering several +cases never leaves the reader deriving which case is which. Where a construct +has room for content, that content names the outcome, as in +`*asterisk opens but underscore closes_`. Where the content is itself under +test, a label outside the construct names the case, as in +``Opening-only one: `code``. Where neither fits, such as thematic breaks, +escape runs, and exact-byte fixtures, a section holds one case so its heading +is unambiguous alone. Placeholder content such as `alpha`, `foo`, or `A` and +`B` is reserved for sections where every case shares one outcome. Naming an +outcome in prose is not the same as embedding expected HTML or a +parser-specific assertion, which stay out of Markdown input. + ## Dialect Boundaries - [`commonmark/`](./commonmark/) covers CommonMark 0.31.2 core syntax. @@ -52,10 +64,10 @@ rules, links, images, autolinks, inline raw HTML, hard and soft breaks, and textual content. The [boundary fixtures](./boundaries/) preserve LF, CRLF, CR, mixed endings, -missing final newlines, a UTF-8 BOM, representative ASCII controls, tabs, an -empty document, and reference-label lengths. The [stress fixtures](./stress.md) -include 32- and 33-level link-destination nesting without treating either depth -as a CommonMark conformance cutoff. +missing final newlines, a UTF-8 BOM, representative ASCII controls, an invalid +UTF-8 byte, tabs, an empty document, reference-label lengths, and long lines. +The [stress fixtures](./stress.md) include 32- and 33-level link-destination +nesting without treating either depth as a CommonMark conformance cutoff. Formal GFM fixtures cover [tables](./gfm/tables.md), [task-list items](./gfm/task-lists.md), [strikethrough](./gfm/strikethrough.md), @@ -67,8 +79,9 @@ The extension survey includes: - [Footnotes](./extensions/footnotes.md) - [YAML](./extensions/frontmatter/yaml.md), [TOML](./extensions/frontmatter/toml.md), and - [JSON](./extensions/frontmatter/json.md) frontmatter, plus a - [not-at-start](./extensions/frontmatter/not-at-start.md) boundary + [JSON](./extensions/frontmatter/json.md) frontmatter, plus + [not-at-start](./extensions/frontmatter/not-at-start.md) and + [unclosed](./extensions/frontmatter/unclosed.md) boundaries - [Dollar and LaTeX-style math](./extensions/math.md) - [Inline, leaf, and container directives](./extensions/directives.md) - [Definition lists](./extensions/definition-lists.md) @@ -81,7 +94,6 @@ The extension survey includes: - [Block and inline attributes](./extensions/attributes.md) - [Highlight, subscript, superscript, insertion, and CriticMarkup-style deletion and addition](./extensions/typography.md) - [Emoji shortcodes](./extensions/emoji.md) -- [Fenced diagrams](./extensions/fenced-diagrams.md) ## Practical Documents @@ -90,5 +102,6 @@ The extension survey includes: - [Extension survey](./practical/extension-survey.md) - [Technical README](./practical/technical-readme.md) - [Multilingual field notes](./practical/multilingual-notes.md) +- [Round-trip normalization walkthrough](./practical/round-trip.md) ![Corpus leaf](./assets/leaf.svg) diff --git a/corpus/boundaries/README.md b/corpus/boundaries/README.md index e121918..2d54247 100644 --- a/corpus/boundaries/README.md +++ b/corpus/boundaries/README.md @@ -1,6 +1,10 @@ # Byte and Grammar Boundaries The `bytes/` fixtures preserve exact byte sequences through attributes in the -repository's `.gitattributes`. The `limits/` fixtures exercise the normative -CommonMark reference-label length boundary as an adjacent 999/1000-character -pair. +repository's `.gitattributes`. `invalid-utf8.md` is deliberately not a valid +UTF-8 document; it must be opened through the application rather than repaired +by an editor that rewrites it on save. + +The `limits/` fixtures exercise the normative CommonMark reference-label length +boundary as an adjacent 999/1000-character pair, and line lengths that a +viewport-wrapping prose surface has to accommodate. diff --git a/corpus/boundaries/bytes/invalid-utf8.md b/corpus/boundaries/bytes/invalid-utf8.md new file mode 100644 index 0000000..57246ae --- /dev/null +++ b/corpus/boundaries/bytes/invalid-utf8.md @@ -0,0 +1 @@ +beforeafter diff --git a/corpus/boundaries/limits/long-line.md b/corpus/boundaries/limits/long-line.md new file mode 100644 index 0000000..2f5181d --- /dev/null +++ b/corpus/boundaries/limits/long-line.md @@ -0,0 +1,15 @@ +# Long Lines + +## A wrappable paragraph on one very long line + +moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture moisture + +## A single token with no break opportunity + +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + +## A long line inside a table cell + +| Bed | Note | +| --- | --- | +| North | bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb | diff --git a/corpus/commonmark/blocks.md b/corpus/commonmark/blocks.md index e8b08ed..248e176 100644 --- a/corpus/commonmark/blocks.md +++ b/corpus/commonmark/blocks.md @@ -2,8 +2,8 @@ ## Block structure takes precedence over inline parsing -- `one -- two` +- `a code span does not +- cross a list-item boundary` ## Asterisks, hyphens, and underscores form thematic breaks @@ -56,6 +56,11 @@ Paragraph becomes a heading --- +## An asterisk thematic break interrupts a paragraph instead + +Paragraph followed by asterisks +*** + ## Definitions resolve full reference links [garden]: /plots/garden "Garden title" @@ -64,6 +69,13 @@ Paragraph becomes a heading Open the [garden] and [field report]. +## Forward-referenced and unreferenced definitions + +Open the [forward reference] before its definition appears. + +[forward reference]: /forward "Forward title" +[never referenced]: /unused "Unused title" + ## Duplicate reference definitions [same]: /first diff --git a/corpus/commonmark/code.md b/corpus/commonmark/code.md index eb1e1cc..ba3a854 100644 --- a/corpus/commonmark/code.md +++ b/corpus/commonmark/code.md @@ -2,8 +2,8 @@ ## Four spaces create an indented code block - alpha - beta + four spaces open the block + two further spaces stay in the content ## Indented code cannot interrupt a paragraph @@ -38,6 +38,12 @@ valid backtick info string valid tilde info string ~~~ +## A backtick in a backtick info string does not open a fence + +``` language`with-backtick +the preceding line stays paragraph text rather than opening a code block +``` + ## Three leading spaces open a fence while four create indented code ``` diff --git a/corpus/commonmark/emphasis.md b/corpus/commonmark/emphasis.md index 0f9790b..ac8640d 100644 --- a/corpus/commonmark/emphasis.md +++ b/corpus/commonmark/emphasis.md @@ -90,25 +90,25 @@ ___underscores open a combination but asterisks close*** \*\*\*not combined emphasis and strong emphasis*** -## Rule of three +## A three-delimiter run splits into nested strong and emphasis -***alpha** beta* +***strong closes first** and emphasis wraps both* -*alpha **beta*** +*emphasis opens first **and strong closes first*** -**alpha *beta*** +**strong opens first *and emphasis closes first*** -___alpha__ beta_ +___strong closes first__ and emphasis wraps both_ -_alpha __beta___ +_emphasis opens first __and strong closes first___ -__alpha _beta___ +__strong opens first _and emphasis closes first___ ## Unequal delimiter runs leave unused markers -***text* +***two markers stay literal* -***text** +***one marker stays literal** ## Matching delimiter characters can nest @@ -118,14 +118,16 @@ __alpha _beta___ ## Mixed asterisk and underscore runs -_**text* +_**underscore and one asterisk stay literal* -_**text** +_**underscore stays literal while strong pairs** -_**text**_ +_**underscore and asterisks all pair**_ -*__text_ +## Mixed runs in intraword position -*__text__ +foo*__nothing pairs intraword_baz -*__text__* +foo*__underscores stay literal intraword__baz + +foo*__asterisks pair, underscores stay literal__*baz diff --git a/corpus/commonmark/html.md b/corpus/commonmark/html.md index 6fde58b..80d9dec 100644 --- a/corpus/commonmark/html.md +++ b/corpus/commonmark/html.md @@ -6,17 +6,73 @@ Markdown *inside* this block is raw. +## A blank line does not end a script or style block + + + + + ## Comments form an HTML block +## A blank line does not end a comment block + + + ## Block-level tags form an HTML block
*Markdown is raw until the blank line for this block type.*
+## A blank line ends a block-level tag block before its closing tag + +
+Raw content of the block. + +*This paragraph follows the block rather than belonging to it.* + +
+ +
+Collapsible summary + +*This paragraph sits between two block-level tag blocks.* + +
+ +## Block-level tags may interrupt a paragraph + +Paragraph text before a known block tag. +
+Raw content after the interruption. +
+ +## A closing tag alone begins a block + + +Raw content following a closing tag that opened the block. + +## Attributes may span lines, omit quotation, and use single quotes + +
+*Raw content of a start tag spread across several lines.* +
+ ## CDATA declarations form an HTML block +## Complete custom tags may not interrupt a paragraph + +Paragraph text before a custom tag. + + ## Tags may appear inside paragraph text Text with raw *inline* HTML after it. @@ -51,6 +112,16 @@ An empty tag
and a custom tag remain raw Text then and and ]]>. +## Mismatched inline tags remain raw + +Text with an opening tag and a foreign closing tag. + +## Event-handler attributes and script content remain literal text + +
A handler attribute stays part of the raw source.
+ +An inline and a span. + ## Malformed tag-like text remains literal < a> <33> <__> diff --git a/corpus/commonmark/links-and-images.md b/corpus/commonmark/links-and-images.md index 8eda425..f0e64e9 100644 --- a/corpus/commonmark/links-and-images.md +++ b/corpus/commonmark/links-and-images.md @@ -32,8 +32,24 @@ +alert(1)> + + + + +[Inline script scheme](javascript:alert(1)) + +[Data destination](data:text/html;base64,PHNjcmlwdD5hbGVydCgxKTwvc2NyaXB0Pg==) + +[Entity-obfuscated scheme](javascript:alert(1)) + +![Data image](data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLz4=) + ## Inline and reference image forms [leaf]: ../assets/leaf.svg "Leaf" diff --git a/corpus/commonmark/lists-and-blockquotes.md b/corpus/commonmark/lists-and-blockquotes.md index f7c555e..e27c623 100644 --- a/corpus/commonmark/lists-and-blockquotes.md +++ b/corpus/commonmark/lists-and-blockquotes.md @@ -7,6 +7,14 @@ lazy continuation without another marker > > Final quoted paragraph. +## Lazy continuation cannot begin a new block + +> Quoted paragraph before a heading +# heading outside the quote + +> Quoted paragraph before a list +- list item outside the quote + ## Nested blockquotes and lists > Outer quote @@ -76,6 +84,17 @@ An ordered list beginning with two does not interrupt: * * third +## A list item can begin with a blank line + +- + content on the line after the marker + +## An empty list item cannot interrupt a paragraph + +A paragraph that +- +continues instead of becoming a list. + ## Marker-padding boundaries - one space diff --git a/corpus/commonmark/text-and-breaks.md b/corpus/commonmark/text-and-breaks.md index eca6143..f7e5386 100644 --- a/corpus/commonmark/text-and-breaks.md +++ b/corpus/commonmark/text-and-breaks.md @@ -54,6 +54,13 @@ This line follows the break. Three spaces follow this line. This line follows the second break. +## Trailing whitespace that does not create a hard break + +One space follows this line. +This line continues the same paragraph. + +Two spaces follow the end of this paragraph. + ## Hard breaks using a backslash A backslash follows this line.\ diff --git a/corpus/environment/asset-handoff.md b/corpus/environment/asset-handoff.md index ff21552..234f3c8 100644 --- a/corpus/environment/asset-handoff.md +++ b/corpus/environment/asset-handoff.md @@ -24,3 +24,15 @@ - ![Protocol-relative image](//example.com/image.png) - ![Unsupported bitmap](../assets/unsupported.bmp) - ![Outside icon](../../src-tauri/icons/128x128.png) + +## Raw HTML embeds + +Raw HTML image + + + + + + + + diff --git a/corpus/extensions/fenced-diagrams.md b/corpus/extensions/fenced-diagrams.md deleted file mode 100644 index 1dcc497..0000000 --- a/corpus/extensions/fenced-diagrams.md +++ /dev/null @@ -1,7 +0,0 @@ -# Mermaid Fenced Diagram - -```mermaid -graph TD - A[Read sensor] --> B[Compare gauge] - B --> C[Plan watering] -``` diff --git a/corpus/extensions/frontmatter/unclosed.md b/corpus/extensions/frontmatter/unclosed.md new file mode 100644 index 0000000..89b441b --- /dev/null +++ b/corpus/extensions/frontmatter/unclosed.md @@ -0,0 +1,10 @@ +--- +title: Unclosed frontmatter candidate +tags: + - markdown + - corpus + +# Body After an Unclosed Delimiter + +The opening delimiter is never closed, so the boundary between the frontmatter +candidate and the document body is ambiguous. diff --git a/corpus/gfm/autolinks.md b/corpus/gfm/autolinks.md index 4f78903..5089355 100644 --- a/corpus/gfm/autolinks.md +++ b/corpus/gfm/autolinks.md @@ -16,9 +16,15 @@ testing@example.com and first.last+tag@example.co.uk ## Left-context punctuation controls recognition -(www.example.com) *https://example.com* _www.example.org_ ~www.example.net~ +Parenthesis before the link: (www.example.com) -prefixwww.example.com +Asterisk before the link: *https://example.com* + +Underscore before the link: _www.example.org_ + +Tilde before the link: ~www.example.net~ + +Word character before the link: prefixwww.example.com ## Trailing punctuation is excluded from the link diff --git a/corpus/gfm/tables.md b/corpus/gfm/tables.md index 77bca16..434359a 100644 --- a/corpus/gfm/tables.md +++ b/corpus/gfm/tables.md @@ -31,9 +31,35 @@ South | 42% | Hold ## Header and delimiter cell counts must match -| A | B | +| Header | Cells | | --- | -| one | two | +| the count mismatch prevents a table | so these lines stay paragraph text | + +## A header and delimiter row without body rows + +| Header only | No body rows | +| --- | --- | + +## Pipe rows without a delimiter row + +| No delimiter row | so these lines | +| stay paragraph text | with literal pipes | + +## Cell splitting precedes inline parsing + +| Form | First cell | Second cell | +| --- | --- | --- | +| an unescaped pipe splits first | `code opens | never closes` | + +## Tables can appear inside containers + +- | Bed | Moisture | + | --- | --- | + | North | 31% | + +> | Bed | Moisture | +> | --- | --- | +> | South | 42% | ## Another block construct terminates the table diff --git a/corpus/interactions.md b/corpus/interactions.md index a42a290..145923f 100644 --- a/corpus/interactions.md +++ b/corpus/interactions.md @@ -2,7 +2,7 @@ ## Links, emphasis, code spans, and autolinks -*[a link*](destination.md) and [a backtick (`)](destination.md). +*[the link wins over the emphasis run*](destination.md) and [a backtick (`)](destination.md). `[not a link](destination.md)` and . @@ -35,9 +35,9 @@ Code: `\*asterisks\* ©`. > fenced code inside the list > ``` > -> [reference]: destination.md +> [quoted leaf]: destination.md > -> Use the [reference]. +> Use the [quoted leaf]. ## Table cells can contain inline constructs diff --git a/corpus/isolated/end-of-file/unclosed-html-block.md b/corpus/isolated/end-of-file/unclosed-html-block.md new file mode 100644 index 0000000..7135a72 --- /dev/null +++ b/corpus/isolated/end-of-file/unclosed-html-block.md @@ -0,0 +1,4 @@ +# Unclosed HTML Block at End of File + +
+The block reaches the end of the file without a closing tag or a blank line. diff --git a/corpus/practical/round-trip.md b/corpus/practical/round-trip.md new file mode 100644 index 0000000..add17a6 --- /dev/null +++ b/corpus/practical/round-trip.md @@ -0,0 +1,82 @@ +Field Notes That Change Shape When Saved +======================================== + +Every section below is written in a form the editor is expected to normalize. +Save the document, reopen it, and compare each section against this description. +A difference named here is intended; a difference that is not named here is not. + +Setext Underlines +----------------- + +The title above and this heading use Setext underlines. Both carry heading +levels that ATX syntax can also express. + +## Emphasis delimiter characters + +The _watering schedule_ and the __replacement estimate__ use underscore +delimiters, while the *manual gauge* and the **north bed** use asterisks. Both +pairs carry the same emphasis and strong emphasis. + +## Bullet and ordered markers + ++ Spare battery ++ Probe cloth + +* Printed layout +* Camera checklist + +3. Reposition the north-bed probe. +8. Publish the calibration note. +9. Review the battery estimate. + +## Indented code + +The collection step is recorded as an indented block: + + pnpm run collect -- --bed north + pnpm run report + +## Inline-code delimiter length + +The command ``pnpm run collect`` uses a two-backtick run around content that +needs only one. + +## Reference links against inline links + +The [calibration review][review] and the +[placement decision](../environment/article-navigator/nested/probe-placement.markdown) +point at comparable notes through different link forms. + +[review]: ../environment/article-navigator/01-overview.md "Calibration review" + +## Table cell padding + +| Bed | Latest reading | Working interpretation | +| :-------- | -------------: | --------------------------- | +| North | `31%` | Reposition before rewatering | +| South | `42%` | Hold the current plan | + +## Hard break spelling + +The gauge was read at 08:30. +The probe was reseated at 08:45.\ +The second reading followed at 09:00. + +## Selections without a faithful semantic equivalent + +Select only the delimiters of **this strong run**, only the destination inside +[this link](../environment/article-navigator/01-overview.md), only the title in +[this titled link](../environment/article-navigator/01-overview.md "Calibration review"), +and only part of this footnote reference[^partial]. Copy each selection and +paste it into a new paragraph. + +[^partial]: The reference above is selected partially on purpose. + +## Blank lines and final newline + +There are three blank lines after this paragraph and the file ends without a +trailing blank run. + + + +The last line of the document. diff --git a/corpus/stress.md b/corpus/stress.md index 255d99b..64218bb 100644 --- a/corpus/stress.md +++ b/corpus/stress.md @@ -42,8 +42,6 @@ ____________beta____________ !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~ ¡¿«»—…、。〈〉《》「」『』【】 -\!\"\#\$\%\&\'\(\)\*\+\,\-\.\/\:\;\<\=\>\?\@\[\\\]\^\_\`\{\|\}\~ - ## Link destination nested to 32 levels [depth](((((((((((((((((((((((((((((((((leaf)))))))))))))))))))))))))))))))))