| spec.txt | spec.txt | |||
|---|---|---|---|---|
| --- | --- | |||
| title: CommonMark Spec | title: CommonMark Spec | |||
| author: John MacFarlane | author: John MacFarlane | |||
| version: 0.17 | version: 0.18 | |||
| date: 2015-01-24 | date: 2015-03-03 | |||
| license: '[CC-BY-SA 4.0](http://creativecommons.org/licenses/by-sa/4.0/)' | license: '[CC-BY-SA 4.0](http://creativecommons.org/licenses/by-sa/4.0/)' | |||
| ... | ... | |||
| # Introduction | # Introduction | |||
| ## What is Markdown? | ## What is Markdown? | |||
| Markdown is a plain text format for writing structured documents, | Markdown is a plain text format for writing structured documents, | |||
| based on conventions used for indicating formatting in email and | based on conventions used for indicating formatting in email and | |||
| usenet posts. It was developed in 2004 by John Gruber, who wrote | usenet posts. It was developed in 2004 by John Gruber, who wrote | |||
| skipping to change at line 228 | skipping to change at line 228 | |||
| For security reasons, a conforming parser must strip or replace the | For security reasons, a conforming parser must strip or replace the | |||
| Unicode character `U+0000`. | Unicode character `U+0000`. | |||
| A line containing no characters, or a line containing only spaces | A line containing no characters, or a line containing only spaces | |||
| (`U+0020`) or tabs (`U+0009`), is called a [blank line](@blank-line). | (`U+0020`) or tabs (`U+0009`), is called a [blank line](@blank-line). | |||
| The following definitions of character classes will be used in this spec: | The following definitions of character classes will be used in this spec: | |||
| A [whitespace character](@whitespace-character) is a space | A [whitespace character](@whitespace-character) is a space | |||
| (`U+0020`), tab (`U+0009`), carriage return (`U+000D`), or | (`U+0020`), tab (`U+0009`), newline (`U+000A`), line tabulation (`U+000B`), | |||
| newline (`U+000A`). | form feed (`U+000C`), or carriage return (`U+000D`). | |||
| [Whitespace](@whitespace) is a sequence of one or more [whitespace | [Whitespace](@whitespace) is a sequence of one or more [whitespace | |||
| character]s. | character]s. | |||
| A [unicode whitespace character](@unicode-whitespace-character) is | A [unicode whitespace character](@unicode-whitespace-character) is | |||
| any code point in the unicode `Zs` class, or a tab (`U+0009`), | any code point in the unicode `Zs` class, or a tab (`U+0009`), | |||
| carriage return (`U+000D`), newline (`U+000A`), or form feed | carriage return (`U+000D`), newline (`U+000A`), or form feed | |||
| (`U+000C`). | (`U+000C`). | |||
| [Unicode whitespace](@unicode-whitespace) is a sequence of one | [Unicode whitespace](@unicode-whitespace) is a sequence of one | |||
| skipping to change at line 1847 | skipping to change at line 1847 | |||
| . | . | |||
| [Foo bar]: | [Foo bar]: | |||
| <my url> | <my url> | |||
| 'title' | 'title' | |||
| [Foo bar] | [Foo bar] | |||
| . | . | |||
| <p><a href="my%20url" title="title">Foo bar</a></p> | <p><a href="my%20url" title="title">Foo bar</a></p> | |||
| . | . | |||
| The title may extend over multiple lines: | ||||
| . | ||||
| [foo]: /url ' | ||||
| title | ||||
| line1 | ||||
| line2 | ||||
| ' | ||||
| [foo] | ||||
| . | ||||
| <p><a href="/url" title=" | ||||
| title | ||||
| line1 | ||||
| line2 | ||||
| ">foo</a></p> | ||||
| . | ||||
| However, it may not contain a [blank line]: | ||||
| . | ||||
| [foo]: /url 'title | ||||
| with blank line' | ||||
| [foo] | ||||
| . | ||||
| <p>[foo]: /url 'title</p> | ||||
| <p>with blank line'</p> | ||||
| <p>[foo]</p> | ||||
| . | ||||
| The title may be omitted: | The title may be omitted: | |||
| . | . | |||
| [foo]: | [foo]: | |||
| /url | /url | |||
| [foo] | [foo] | |||
| . | . | |||
| <p><a href="/url">foo</a></p> | <p><a href="/url">foo</a></p> | |||
| . | . | |||
| skipping to change at line 1918 | skipping to change at line 1950 | |||
| . | . | |||
| Here is a link reference definition with no corresponding link. | Here is a link reference definition with no corresponding link. | |||
| It contributes nothing to the document. | It contributes nothing to the document. | |||
| . | . | |||
| [foo]: /url | [foo]: /url | |||
| . | . | |||
| . | . | |||
| Here is another one: | ||||
| . | ||||
| [ | ||||
| foo | ||||
| ]: /url | ||||
| bar | ||||
| . | ||||
| <p>bar</p> | ||||
| . | ||||
| This is not a link reference definition, because there are | This is not a link reference definition, because there are | |||
| [non-space character]s after the title: | [non-space character]s after the title: | |||
| . | . | |||
| [foo]: /url "title" ok | [foo]: /url "title" ok | |||
| . | . | |||
| <p>[foo]: /url "title" ok</p> | <p>[foo]: /url "title" ok</p> | |||
| . | . | |||
| This is not a link reference definition, because it is indented | This is not a link reference definition, because it is indented | |||
| skipping to change at line 2691 | skipping to change at line 2734 | |||
| <blockquote> | <blockquote> | |||
| <blockquote> | <blockquote> | |||
| <ul> | <ul> | |||
| <li>one</li> | <li>one</li> | |||
| </ul> | </ul> | |||
| <p>two</p> | <p>two</p> | |||
| </blockquote> | </blockquote> | |||
| </blockquote> | </blockquote> | |||
| . | . | |||
| Note that at least one space is needed between the list marker and | ||||
| any following content, so these are not list items: | ||||
| . | ||||
| -one | ||||
| 2.two | ||||
| . | ||||
| <p>-one</p> | ||||
| <p>2.two</p> | ||||
| . | ||||
| A list item may not contain blocks that are separated by more than | A list item may not contain blocks that are separated by more than | |||
| one blank line. Thus, two blank lines will end a list, unless the | one blank line. Thus, two blank lines will end a list, unless the | |||
| two blanks are contained in a [fenced code block]. | two blanks are contained in a [fenced code block]. | |||
| . | . | |||
| - foo | - foo | |||
| bar | bar | |||
| - foo | - foo | |||
| skipping to change at line 2924 | skipping to change at line 2979 | |||
| bar | bar | |||
| . | . | |||
| <ul> | <ul> | |||
| <li> | <li> | |||
| <p>foo</p> | <p>foo</p> | |||
| <p>bar</p> | <p>bar</p> | |||
| </li> | </li> | |||
| </ul> | </ul> | |||
| . | . | |||
| 3. **Empty list item.** A [list marker] followed by a | 3. **Item starting with a blank line.** If a sequence of lines *Ls* | |||
| line containing only [whitespace] is a list item with no contents. | starting with a single [blank line] constitute a (possibly empty) | |||
| sequence of blocks *Bs*, not separated from each other by more than | ||||
| one blank line, and *M* is a list marker *M* of width *W*, | ||||
| then the result of prepending *M* to the first line of *Ls*, and | ||||
| indenting subsequent lines of *Ls* by *W + 1* spaces, is a list | ||||
| item with *Bs* as its contents. | ||||
| If a line is empty, then it need not be indented. The type of the | ||||
| list item (bullet or ordered) is determined by the type of its list | ||||
| marker. If the list item is ordered, then it is also assigned a | ||||
| start number, based on the ordered list marker. | ||||
| Here are some list items that start with a blank line but are not empty: | ||||
| . | ||||
| - | ||||
| foo | ||||
| - | ||||
| ``` | ||||
| bar | ||||
| ``` | ||||
| - | ||||
| baz | ||||
| . | ||||
| <ul> | ||||
| <li>foo</li> | ||||
| <li> | ||||
| <pre><code>bar | ||||
| </code></pre> | ||||
| </li> | ||||
| <li> | ||||
| <pre><code>baz | ||||
| </code></pre> | ||||
| </li> | ||||
| </ul> | ||||
| . | ||||
| Here is an empty bullet list item: | Here is an empty bullet list item: | |||
| . | . | |||
| - foo | - foo | |||
| - | - | |||
| - bar | - bar | |||
| . | . | |||
| <ul> | <ul> | |||
| <li>foo</li> | <li>foo</li> | |||
| skipping to change at line 3480 | skipping to change at line 3569 | |||
| if its constituent list items begin with | if its constituent list items begin with | |||
| [ordered list marker]s, and a | [ordered list marker]s, and a | |||
| [bullet list](@bullet-list) if its constituent list | [bullet list](@bullet-list) if its constituent list | |||
| items begin with [bullet list marker]s. | items begin with [bullet list marker]s. | |||
| The [start number](@start-number) | The [start number](@start-number) | |||
| of an [ordered list] is determined by the list number of | of an [ordered list] is determined by the list number of | |||
| its initial list item. The numbers of subsequent list items are | its initial list item. The numbers of subsequent list items are | |||
| disregarded. | disregarded. | |||
| A list is [loose](@loose) if it any of its constituent | A list is [loose](@loose) if any of its constituent | |||
| list items are separated by blank lines, or if any of its constituent | list items are separated by blank lines, or if any of its constituent | |||
| list items directly contain two block-level elements with a blank line | list items directly contain two block-level elements with a blank line | |||
| between them. Otherwise a list is [tight](@tight). | between them. Otherwise a list is [tight](@tight). | |||
| (The difference in HTML output is that paragraphs in a loose list are | (The difference in HTML output is that paragraphs in a loose list are | |||
| wrapped in `<p>` tags, while paragraphs in a tight list are not.) | wrapped in `<p>` tags, while paragraphs in a tight list are not.) | |||
| Changing the bullet or ordered list delimiter starts a new list: | Changing the bullet or ordered list delimiter starts a new list: | |||
| . | . | |||
| - foo | - foo | |||
| skipping to change at line 4462 | skipping to change at line 4551 | |||
| for efficient parsing strategies that do not backtrack. | for efficient parsing strategies that do not backtrack. | |||
| First, some definitions. A [delimiter run](@delimiter-run) is either | First, some definitions. A [delimiter run](@delimiter-run) is either | |||
| a sequence of one or more `*` characters that is not preceded or | a sequence of one or more `*` characters that is not preceded or | |||
| followed by a `*` character, or a sequence of one or more `_` | followed by a `*` character, or a sequence of one or more `_` | |||
| characters that is not preceded or followed by a `_` character. | characters that is not preceded or followed by a `_` character. | |||
| A [left-flanking delimiter run](@left-flanking-delimiter-run) is | A [left-flanking delimiter run](@left-flanking-delimiter-run) is | |||
| a [delimiter run] that is (a) not followed by [unicode whitespace], | a [delimiter run] that is (a) not followed by [unicode whitespace], | |||
| and (b) either not followed by a [punctuation character], or | and (b) either not followed by a [punctuation character], or | |||
| preceded by [unicode whitespace] or a [punctuation character]. | preceded by [unicode whitespace] or a [punctuation character] or | |||
| the beginning of a line. | ||||
| A [right-flanking delimiter run](@right-flanking-delimiter-run) is | A [right-flanking delimiter run](@right-flanking-delimiter-run) is | |||
| a [delimiter run] that is (a) not preceded by [unicode whitespace], | a [delimiter run] that is (a) not preceded by [unicode whitespace], | |||
| and (b) either not preceded by a [punctuation character], or | and (b) either not preceded by a [punctuation character], or | |||
| followed by [unicode whitespace] or a [punctuation character]. | followed by [unicode whitespace] or a [punctuation character] or | |||
| the end of a line. | ||||
| Here are some examples of delimiter runs. | Here are some examples of delimiter runs. | |||
| - left-flanking but not right-flanking: | - left-flanking but not right-flanking: | |||
| ``` | ``` | |||
| ***abc | ***abc | |||
| _abc | _abc | |||
| **"abc" | **"abc" | |||
| _"abc" | _"abc" | |||
| skipping to change at line 4730 | skipping to change at line 4821 | |||
| This is not emphasis, because the closing `*` is preceded by | This is not emphasis, because the closing `*` is preceded by | |||
| whitespace: | whitespace: | |||
| . | . | |||
| *foo bar * | *foo bar * | |||
| . | . | |||
| <p>*foo bar *</p> | <p>*foo bar *</p> | |||
| . | . | |||
| A newline also counts as whitespace: | ||||
| . | ||||
| *foo bar | ||||
| * | ||||
| . | ||||
| <p>*foo bar</p> | ||||
| <ul> | ||||
| <li></li> | ||||
| </ul> | ||||
| . | ||||
| This is not emphasis, because the second `*` is | This is not emphasis, because the second `*` is | |||
| preceded by punctuation and followed by an alphanumeric | preceded by punctuation and followed by an alphanumeric | |||
| (hence it is not part of a [right-flanking delimiter run]: | (hence it is not part of a [right-flanking delimiter run]: | |||
| . | . | |||
| *(*foo) | *(*foo) | |||
| . | . | |||
| <p>*(*foo)</p> | <p>*(*foo)</p> | |||
| . | . | |||
| skipping to change at line 4857 | skipping to change at line 4960 | |||
| This is not strong emphasis, because the opening delimiter is | This is not strong emphasis, because the opening delimiter is | |||
| followed by whitespace: | followed by whitespace: | |||
| . | . | |||
| __ foo bar__ | __ foo bar__ | |||
| . | . | |||
| <p>__ foo bar__</p> | <p>__ foo bar__</p> | |||
| . | . | |||
| A newline counts as whitespace: | ||||
| . | ||||
| __ | ||||
| foo bar__ | ||||
| . | ||||
| <p>__ | ||||
| foo bar__</p> | ||||
| . | ||||
| This is not strong emphasis, because the opening `__` is preceded | This is not strong emphasis, because the opening `__` is preceded | |||
| by an alphanumeric and followed by punctuation: | by an alphanumeric and followed by punctuation: | |||
| . | . | |||
| a__"foo"__ | a__"foo"__ | |||
| . | . | |||
| <p>a__"foo"__</p> | <p>a__"foo"__</p> | |||
| . | . | |||
| Intraword strong emphasis is forbidden with `__`: | Intraword strong emphasis is forbidden with `__`: | |||
| skipping to change at line 5507 | skipping to change at line 5619 | |||
| <p><em>a <code>*</code></em></p> | <p><em>a <code>*</code></em></p> | |||
| . | . | |||
| . | . | |||
| _a `_`_ | _a `_`_ | |||
| . | . | |||
| <p><em>a <code>_</code></em></p> | <p><em>a <code>_</code></em></p> | |||
| . | . | |||
| . | . | |||
| **a<http://foo.bar?q=**> | **a<http://foo.bar/?q=**> | |||
| . | . | |||
| <p>**a<a href="http://foo.bar?q=**">http://foo.bar?q=**</a></p> | <p>**a<a href="http://foo.bar/?q=**">http://foo.bar/?q=**</a></p> | |||
| . | . | |||
| . | . | |||
| __a<http://foo.bar?q=__> | __a<http://foo.bar/?q=__> | |||
| . | . | |||
| <p>__a<a href="http://foo.bar?q=__">http://foo.bar?q=__</a></p> | <p>__a<a href="http://foo.bar/?q=__">http://foo.bar/?q=__</a></p> | |||
| . | . | |||
| ## Links | ## Links | |||
| A link contains [link text] (the visible text), a [link destination] | A link contains [link text] (the visible text), a [link destination] | |||
| (the URI that is the link destination), and optionally a [link title]. | (the URI that is the link destination), and optionally a [link title]. | |||
| There are two basic kinds of links in Markdown. In [inline link]s the | There are two basic kinds of links in Markdown. In [inline link]s the | |||
| destination and title are given immediately after the link text. In | destination and title are given immediately after the link text. In | |||
| [reference link]s the destination and title are defined elsewhere in | [reference link]s the destination and title are defined elsewhere in | |||
| the document. | the document. | |||
| skipping to change at line 5571 | skipping to change at line 5683 | |||
| characters (`"`), including a `"` character only if it is | characters (`"`), including a `"` character only if it is | |||
| backslash-escaped, or | backslash-escaped, or | |||
| - a sequence of zero or more characters between straight single-quote | - a sequence of zero or more characters between straight single-quote | |||
| characters (`'`), including a `'` character only if it is | characters (`'`), including a `'` character only if it is | |||
| backslash-escaped, or | backslash-escaped, or | |||
| - a sequence of zero or more characters between matching parentheses | - a sequence of zero or more characters between matching parentheses | |||
| (`(...)`), including a `)` character only if it is backslash-escaped. | (`(...)`), including a `)` character only if it is backslash-escaped. | |||
| Although [link title]s may span multiple lines, they may not contain | ||||
| a [blank line]. | ||||
| An [inline link](@inline-link) consists of a [link text] followed immediately | An [inline link](@inline-link) consists of a [link text] followed immediately | |||
| by a left parenthesis `(`, optional [whitespace], an optional | by a left parenthesis `(`, optional [whitespace], an optional | |||
| [link destination], an optional [link title] separated from the link | [link destination], an optional [link title] separated from the link | |||
| destination by [whitespace], optional [whitespace], and a right | destination by [whitespace], optional [whitespace], and a right | |||
| parenthesis `)`. The link's text consists of the inlines contained | parenthesis `)`. The link's text consists of the inlines contained | |||
| in the [link text] (excluding the enclosing square brackets). | in the [link text] (excluding the enclosing square brackets). | |||
| The link's URI consists of the link destination, excluding enclosing | The link's URI consists of the link destination, excluding enclosing | |||
| `<...>` if present, with backslash-escapes in effect as described | `<...>` if present, with backslash-escapes in effect as described | |||
| above. The link's title consists of the link title, excluding its | above. The link's title consists of the link title, excluding its | |||
| enclosing delimiters, with backslash-escapes in effect as described | enclosing delimiters, with backslash-escapes in effect as described | |||
| skipping to change at line 5874 | skipping to change at line 5989 | |||
| <p>[foo <bar attr="](baz)"></p> | <p>[foo <bar attr="](baz)"></p> | |||
| . | . | |||
| . | . | |||
| [foo`](/uri)` | [foo`](/uri)` | |||
| . | . | |||
| <p>[foo<code>](/uri)</code></p> | <p>[foo<code>](/uri)</code></p> | |||
| . | . | |||
| . | . | |||
| [foo<http://example.com?search=](uri)> | [foo<http://example.com/?search=](uri)> | |||
| . | . | |||
| <p>[foo<a href="http://example.com?search=%5D(uri)">http://example.com?search=]( uri)</a></p> | <p>[foo<a href="http://example.com/?search=%5D(uri)">http://example.com/?search= ](uri)</a></p> | |||
| . | . | |||
| There are three kinds of [reference link](@reference-link)s: | There are three kinds of [reference link](@reference-link)s: | |||
| [full](#full-reference-link), [collapsed](#collapsed-reference-link), | [full](#full-reference-link), [collapsed](#collapsed-reference-link), | |||
| and [shortcut](#shortcut-reference-link). | and [shortcut](#shortcut-reference-link). | |||
| A [full reference link](@full-reference-link) | A [full reference link](@full-reference-link) | |||
| consists of a [link text], optional [whitespace], and a [link label] | consists of a [link text], optional [whitespace], and a [link label] | |||
| that [matches] a [link reference definition] elsewhere in the document. | that [matches] a [link reference definition] elsewhere in the document. | |||
| skipping to change at line 6014 | skipping to change at line 6129 | |||
| . | . | |||
| [foo`][ref]` | [foo`][ref]` | |||
| [ref]: /uri | [ref]: /uri | |||
| . | . | |||
| <p>[foo<code>][ref]</code></p> | <p>[foo<code>][ref]</code></p> | |||
| . | . | |||
| . | . | |||
| [foo<http://example.com?search=][ref]> | [foo<http://example.com/?search=][ref]> | |||
| [ref]: /uri | [ref]: /uri | |||
| . | . | |||
| <p>[foo<a href="http://example.com?search=%5D%5Bref%5D">http://example.com?searc h=][ref]</a></p> | <p>[foo<a href="http://example.com/?search=%5D%5Bref%5D">http://example.com/?sea rch=][ref]</a></p> | |||
| . | . | |||
| Matching is case-insensitive: | Matching is case-insensitive: | |||
| . | . | |||
| [foo][BaR] | [foo][BaR] | |||
| [bar]: /url "title" | [bar]: /url "title" | |||
| . | . | |||
| <p><a href="/url" title="title">foo</a></p> | <p><a href="/url" title="title">foo</a></p> | |||
| skipping to change at line 6215 | skipping to change at line 6330 | |||
| . | . | |||
| . | . | |||
| [[*foo* bar]] | [[*foo* bar]] | |||
| [*foo* bar]: /url "title" | [*foo* bar]: /url "title" | |||
| . | . | |||
| <p>[<a href="/url" title="title"><em>foo</em> bar</a>]</p> | <p>[<a href="/url" title="title"><em>foo</em> bar</a>]</p> | |||
| . | . | |||
| . | ||||
| [[bar [foo] | ||||
| [foo]: /url | ||||
| . | ||||
| <p>[[bar <a href="/url">foo</a></p> | ||||
| . | ||||
| The link labels are case-insensitive: | The link labels are case-insensitive: | |||
| . | . | |||
| [Foo] | [Foo] | |||
| [foo]: /url "title" | [foo]: /url "title" | |||
| . | . | |||
| <p><a href="/url" title="title">Foo</a></p> | <p><a href="/url" title="title">Foo</a></p> | |||
| . | . | |||
| skipping to change at line 6559 | skipping to change at line 6682 | |||
| Here are some valid autolinks: | Here are some valid autolinks: | |||
| . | . | |||
| <http://foo.bar.baz> | <http://foo.bar.baz> | |||
| . | . | |||
| <p><a href="http://foo.bar.baz">http://foo.bar.baz</a></p> | <p><a href="http://foo.bar.baz">http://foo.bar.baz</a></p> | |||
| . | . | |||
| . | . | |||
| <http://foo.bar.baz?q=hello&id=22&boolean> | <http://foo.bar.baz/test?q=hello&id=22&boolean> | |||
| . | . | |||
| <p><a href="http://foo.bar.baz?q=hello&id=22&boolean">http://foo.bar.baz ?q=hello&id=22&boolean</a></p> | <p><a href="http://foo.bar.baz/test?q=hello&id=22&boolean">http://foo.ba r.baz/test?q=hello&id=22&boolean</a></p> | |||
| . | . | |||
| . | . | |||
| <irc://foo.bar:2233/baz> | <irc://foo.bar:2233/baz> | |||
| . | . | |||
| <p><a href="irc://foo.bar:2233/baz">irc://foo.bar:2233/baz</a></p> | <p><a href="irc://foo.bar:2233/baz">irc://foo.bar:2233/baz</a></p> | |||
| . | . | |||
| Uppercase is also fine: | Uppercase is also fine: | |||
| skipping to change at line 6586 | skipping to change at line 6709 | |||
| . | . | |||
| Spaces are not allowed in autolinks: | Spaces are not allowed in autolinks: | |||
| . | . | |||
| <http://foo.bar/baz bim> | <http://foo.bar/baz bim> | |||
| . | . | |||
| <p><http://foo.bar/baz bim></p> | <p><http://foo.bar/baz bim></p> | |||
| . | . | |||
| Backslash-escapes do not work inside autolinks: | ||||
| . | ||||
| <http://example.com/\[\> | ||||
| . | ||||
| <p><a href="http://example.com/%5C%5B%5C">http://example.com/\[\</a></p> | ||||
| . | ||||
| An [email autolink](@email-autolink) | An [email autolink](@email-autolink) | |||
| consists of `<`, followed by an [email address], | consists of `<`, followed by an [email address], | |||
| followed by `>`. The link's label is the email address, | followed by `>`. The link's label is the email address, | |||
| and the URL is `mailto:` followed by the email address. | and the URL is `mailto:` followed by the email address. | |||
| An [email address](@email-address), | An [email address](@email-address), | |||
| for these purposes, is anything that matches | for these purposes, is anything that matches | |||
| the [non-normative regex from the HTML5 | the [non-normative regex from the HTML5 | |||
| spec](https://html.spec.whatwg.org/multipage/forms.html#e-mail-state-(type=email )): | spec](https://html.spec.whatwg.org/multipage/forms.html#e-mail-state-(type=email )): | |||
| skipping to change at line 6613 | skipping to change at line 6744 | |||
| . | . | |||
| <p><a href="mailto:foo@bar.example.com">foo@bar.example.com</a></p> | <p><a href="mailto:foo@bar.example.com">foo@bar.example.com</a></p> | |||
| . | . | |||
| . | . | |||
| <foo+special@Bar.baz-bar0.com> | <foo+special@Bar.baz-bar0.com> | |||
| . | . | |||
| <p><a href="mailto:foo+special@Bar.baz-bar0.com">foo+special@Bar.baz-bar0.com</a ></p> | <p><a href="mailto:foo+special@Bar.baz-bar0.com">foo+special@Bar.baz-bar0.com</a ></p> | |||
| . | . | |||
| Backslash-escapes do not work inside email autolinks: | ||||
| . | ||||
| <foo\+@bar.example.com> | ||||
| . | ||||
| <p><foo+@bar.example.com></p> | ||||
| . | ||||
| These are not autolinks: | These are not autolinks: | |||
| . | . | |||
| <> | <> | |||
| . | . | |||
| <p><></p> | <p><></p> | |||
| . | . | |||
| . | . | |||
| <heck://bing.bong> | <heck://bing.bong> | |||
| End of changes. 25 change blocks. | ||||
| 19 lines changed or deleted | 158 lines changed or added | |||
This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||