//! CommonMark test suite.
// > 👉 **Important**: this module is generated by `build.rs`.
// > It is generate from the latest Unicode data.
extern crate micromark;
use micromark::{micromark_with_options, Options};
const DANGER: &Options = &Options {
allow_dangerous_html: true,
allow_dangerous_protocol: true,
default_line_ending: None,
};
#[rustfmt::skip]
#[test]
fn commonmark() {
assert_eq!(
micromark_with_options(r###" foo baz bim
"###, DANGER),
r###"<pre><code>foo baz bim
</code></pre>
"###,
r###"Tabs (0)"###
);
assert_eq!(
micromark_with_options(r###" foo baz bim
"###, DANGER),
r###"<pre><code>foo baz bim
</code></pre>
"###,
r###"Tabs (1)"###
);
assert_eq!(
micromark_with_options(r###" a a
ὐ a
"###, DANGER),
r###"<pre><code>a a
ὐ a
</code></pre>
"###,
r###"Tabs (2)"###
);
assert_eq!(
micromark_with_options(r###" - foo
bar
"###, DANGER),
r###"<ul>
<li>
<p>foo</p>
<p>bar</p>
</li>
</ul>
"###,
r###"Tabs (3)"###
);
assert_eq!(
micromark_with_options(r###"- foo
bar
"###, DANGER),
r###"<ul>
<li>
<p>foo</p>
<pre><code> bar
</code></pre>
</li>
</ul>
"###,
r###"Tabs (4)"###
);
assert_eq!(
micromark_with_options(r###"> foo
"###, DANGER),
r###"<blockquote>
<pre><code> foo
</code></pre>
</blockquote>
"###,
r###"Tabs (5)"###
);
assert_eq!(
micromark_with_options(r###"- foo
"###, DANGER),
r###"<ul>
<li>
<pre><code> foo
</code></pre>
</li>
</ul>
"###,
r###"Tabs (6)"###
);
assert_eq!(
micromark_with_options(r###" foo
bar
"###, DANGER),
r###"<pre><code>foo
bar
</code></pre>
"###,
r###"Tabs (7)"###
);
assert_eq!(
micromark_with_options(r###" - foo
- bar
- baz
"###, DANGER),
r###"<ul>
<li>foo
<ul>
<li>bar
<ul>
<li>baz</li>
</ul>
</li>
</ul>
</li>
</ul>
"###,
r###"Tabs (8)"###
);
assert_eq!(
micromark_with_options(r###"# Foo
"###, DANGER),
r###"<h1>Foo</h1>
"###,
r###"Tabs (9)"###
);
assert_eq!(
micromark_with_options(r###"* * *
"###, DANGER),
r###"<hr />
"###,
r###"Tabs (10)"###
);
assert_eq!(
micromark_with_options(r###"\!\"\#\$\%\&\'\(\)\*\+\,\-\.\/\:\;\<\=\>\?\@\[\\\]\^\_\`\{\|\}\~
"###, DANGER),
r###"<p>!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~</p>
"###,
r###"Backslash escapes (11)"###
);
assert_eq!(
micromark_with_options(r###"\ \A\a\ \3\φ\«
"###, DANGER),
r###"<p>\ \A\a\ \3\φ\«</p>
"###,
r###"Backslash escapes (12)"###
);
assert_eq!(
micromark_with_options(r###"\*not emphasized*
\<br/> not a tag
\[not a link](/foo)
\`not code`
1\. not a list
\* not a list
\# not a heading
\[foo]: /url "not a reference"
\ö not a character entity
"###, DANGER),
r###"<p>*not emphasized*
<br/> not a tag
[not a link](/foo)
`not code`
1. not a list
* not a list
# not a heading
[foo]: /url "not a reference"
&ouml; not a character entity</p>
"###,
r###"Backslash escapes (13)"###
);
assert_eq!(
micromark_with_options(r###"\\*emphasis*
"###, DANGER),
r###"<p>\<em>emphasis</em></p>
"###,
r###"Backslash escapes (14)"###
);
assert_eq!(
micromark_with_options(r###"foo\
bar
"###, DANGER),
r###"<p>foo<br />
bar</p>
"###,
r###"Backslash escapes (15)"###
);
assert_eq!(
micromark_with_options(r###"`` \[\` ``
"###, DANGER),
r###"<p><code>\[\`</code></p>
"###,
r###"Backslash escapes (16)"###
);
assert_eq!(
micromark_with_options(r###" \[\]
"###, DANGER),
r###"<pre><code>\[\]
</code></pre>
"###,
r###"Backslash escapes (17)"###
);
assert_eq!(
micromark_with_options(r###"~~~
\[\]
~~~
"###, DANGER),
r###"<pre><code>\[\]
</code></pre>
"###,
r###"Backslash escapes (18)"###
);
assert_eq!(
micromark_with_options(r###"<http://example.com?find=\*>
"###, DANGER),
r###"<p><a href="http://example.com?find=%5C*">http://example.com?find=\*</a></p>
"###,
r###"Backslash escapes (19)"###
);
assert_eq!(
micromark_with_options(r###"<a href="/bar\/)">
"###, DANGER),
r###"<a href="/bar\/)">
"###,
r###"Backslash escapes (20)"###
);
assert_eq!(
micromark_with_options(r###"[foo](/bar\* "ti\*tle")
"###, DANGER),
r###"<p><a href="/bar*" title="ti*tle">foo</a></p>
"###,
r###"Backslash escapes (21)"###
);
assert_eq!(
micromark_with_options(r###"[foo]
[foo]: /bar\* "ti\*tle"
"###, DANGER),
r###"<p><a href="/bar*" title="ti*tle">foo</a></p>
"###,
r###"Backslash escapes (22)"###
);
assert_eq!(
micromark_with_options(r###"``` foo\+bar
foo
```
"###, DANGER),
r###"<pre><code class="language-foo+bar">foo
</code></pre>
"###,
r###"Backslash escapes (23)"###
);
assert_eq!(
micromark_with_options(r###" & © Æ Ď
¾ ℋ ⅆ
∲ ≧̸
"###, DANGER),
r###"<p> & © Æ Ď
¾ ℋ ⅆ
∲ ≧̸</p>
"###,
r###"Entity and numeric character references (24)"###
);
assert_eq!(
micromark_with_options(r###"# Ӓ Ϡ �
"###, DANGER),
r###"<p># Ӓ Ϡ �</p>
"###,
r###"Entity and numeric character references (25)"###
);
assert_eq!(
micromark_with_options(r###"" ആ ಫ
"###, DANGER),
r###"<p>" ആ ಫ</p>
"###,
r###"Entity and numeric character references (26)"###
);
assert_eq!(
micromark_with_options(r###"  &x; &#; &#x;
�
&#abcdef0;
&ThisIsNotDefined; &hi?;
"###, DANGER),
r###"<p>&nbsp &x; &#; &#x;
&#87654321;
&#abcdef0;
&ThisIsNotDefined; &hi?;</p>
"###,
r###"Entity and numeric character references (27)"###
);
assert_eq!(
micromark_with_options(r###"©
"###, DANGER),
r###"<p>&copy</p>
"###,
r###"Entity and numeric character references (28)"###
);
assert_eq!(
micromark_with_options(r###"&MadeUpEntity;
"###, DANGER),
r###"<p>&MadeUpEntity;</p>
"###,
r###"Entity and numeric character references (29)"###
);
assert_eq!(
micromark_with_options(r###"<a href="öö.html">
"###, DANGER),
r###"<a href="öö.html">
"###,
r###"Entity and numeric character references (30)"###
);
assert_eq!(
micromark_with_options(r###"[foo](/föö "föö")
"###, DANGER),
r###"<p><a href="/f%C3%B6%C3%B6" title="föö">foo</a></p>
"###,
r###"Entity and numeric character references (31)"###
);
assert_eq!(
micromark_with_options(r###"[foo]
[foo]: /föö "föö"
"###, DANGER),
r###"<p><a href="/f%C3%B6%C3%B6" title="föö">foo</a></p>
"###,
r###"Entity and numeric character references (32)"###
);
assert_eq!(
micromark_with_options(r###"``` föö
foo
```
"###, DANGER),
r###"<pre><code class="language-föö">foo
</code></pre>
"###,
r###"Entity and numeric character references (33)"###
);
assert_eq!(
micromark_with_options(r###"`föö`
"###, DANGER),
r###"<p><code>f&ouml;&ouml;</code></p>
"###,
r###"Entity and numeric character references (34)"###
);
assert_eq!(
micromark_with_options(r###" föfö
"###, DANGER),
r###"<pre><code>f&ouml;f&ouml;
</code></pre>
"###,
r###"Entity and numeric character references (35)"###
);
assert_eq!(
micromark_with_options(r###"*foo*
*foo*
"###, DANGER),
r###"<p>*foo*
<em>foo</em></p>
"###,
r###"Entity and numeric character references (36)"###
);
assert_eq!(
micromark_with_options(r###"* foo
* foo
"###, DANGER),
r###"<p>* foo</p>
<ul>
<li>foo</li>
</ul>
"###,
r###"Entity and numeric character references (37)"###
);
assert_eq!(
micromark_with_options(r###"foo bar
"###, DANGER),
r###"<p>foo
bar</p>
"###,
r###"Entity and numeric character references (38)"###
);
assert_eq!(
micromark_with_options(r###"	foo
"###, DANGER),
r###"<p> foo</p>
"###,
r###"Entity and numeric character references (39)"###
);
assert_eq!(
micromark_with_options(r###"[a](url "tit")
"###, DANGER),
r###"<p>[a](url "tit")</p>
"###,
r###"Entity and numeric character references (40)"###
);
assert_eq!(
micromark_with_options(r###"- `one
- two`
"###, DANGER),
r###"<ul>
<li>`one</li>
<li>two`</li>
</ul>
"###,
r###"Precedence (41)"###
);
assert_eq!(
micromark_with_options(r###"***
---
___
"###, DANGER),
r###"<hr />
<hr />
<hr />
"###,
r###"Thematic breaks (42)"###
);
assert_eq!(
micromark_with_options(r###"+++
"###, DANGER),
r###"<p>+++</p>
"###,
r###"Thematic breaks (43)"###
);
assert_eq!(
micromark_with_options(r###"===
"###, DANGER),
r###"<p>===</p>
"###,
r###"Thematic breaks (44)"###
);
assert_eq!(
micromark_with_options(r###"--
**
__
"###, DANGER),
r###"<p>--
**
__</p>
"###,
r###"Thematic breaks (45)"###
);
assert_eq!(
micromark_with_options(r###" ***
***
***
"###, DANGER),
r###"<hr />
<hr />
<hr />
"###,
r###"Thematic breaks (46)"###
);
assert_eq!(
micromark_with_options(r###" ***
"###, DANGER),
r###"<pre><code>***
</code></pre>
"###,
r###"Thematic breaks (47)"###
);
assert_eq!(
micromark_with_options(r###"Foo
***
"###, DANGER),
r###"<p>Foo
***</p>
"###,
r###"Thematic breaks (48)"###
);
assert_eq!(
micromark_with_options(r###"_____________________________________
"###, DANGER),
r###"<hr />
"###,
r###"Thematic breaks (49)"###
);
assert_eq!(
micromark_with_options(r###" - - -
"###, DANGER),
r###"<hr />
"###,
r###"Thematic breaks (50)"###
);
assert_eq!(
micromark_with_options(r###" ** * ** * ** * **
"###, DANGER),
r###"<hr />
"###,
r###"Thematic breaks (51)"###
);
assert_eq!(
micromark_with_options(r###"- - - -
"###, DANGER),
r###"<hr />
"###,
r###"Thematic breaks (52)"###
);
assert_eq!(
micromark_with_options(r###"- - - -
"###, DANGER),
r###"<hr />
"###,
r###"Thematic breaks (53)"###
);
assert_eq!(
micromark_with_options(r###"_ _ _ _ a
a------
---a---
"###, DANGER),
r###"<p>_ _ _ _ a</p>
<p>a------</p>
<p>---a---</p>
"###,
r###"Thematic breaks (54)"###
);
assert_eq!(
micromark_with_options(r###" *-*
"###, DANGER),
r###"<p><em>-</em></p>
"###,
r###"Thematic breaks (55)"###
);
assert_eq!(
micromark_with_options(r###"- foo
***
- bar
"###, DANGER),
r###"<ul>
<li>foo</li>
</ul>
<hr />
<ul>
<li>bar</li>
</ul>
"###,
r###"Thematic breaks (56)"###
);
assert_eq!(
micromark_with_options(r###"Foo
***
bar
"###, DANGER),
r###"<p>Foo</p>
<hr />
<p>bar</p>
"###,
r###"Thematic breaks (57)"###
);
assert_eq!(
micromark_with_options(r###"Foo
---
bar
"###, DANGER),
r###"<h2>Foo</h2>
<p>bar</p>
"###,
r###"Thematic breaks (58)"###
);
assert_eq!(
micromark_with_options(r###"* Foo
* * *
* Bar
"###, DANGER),
r###"<ul>
<li>Foo</li>
</ul>
<hr />
<ul>
<li>Bar</li>
</ul>
"###,
r###"Thematic breaks (59)"###
);
assert_eq!(
micromark_with_options(r###"- Foo
- * * *
"###, DANGER),
r###"<ul>
<li>Foo</li>
<li>
<hr />
</li>
</ul>
"###,
r###"Thematic breaks (60)"###
);
assert_eq!(
micromark_with_options(r###"# foo
## foo
### foo
#### foo
##### foo
###### foo
"###, DANGER),
r###"<h1>foo</h1>
<h2>foo</h2>
<h3>foo</h3>
<h4>foo</h4>
<h5>foo</h5>
<h6>foo</h6>
"###,
r###"ATX headings (61)"###
);
assert_eq!(
micromark_with_options(r###"####### foo
"###, DANGER),
r###"<p>####### foo</p>
"###,
r###"ATX headings (62)"###
);
assert_eq!(
micromark_with_options(r###"#5 bolt
#hashtag
"###, DANGER),
r###"<p>#5 bolt</p>
<p>#hashtag</p>
"###,
r###"ATX headings (63)"###
);
assert_eq!(
micromark_with_options(r###"\## foo
"###, DANGER),
r###"<p>## foo</p>
"###,
r###"ATX headings (64)"###
);
assert_eq!(
micromark_with_options(r###"# foo *bar* \*baz\*
"###, DANGER),
r###"<h1>foo <em>bar</em> *baz*</h1>
"###,
r###"ATX headings (65)"###
);
assert_eq!(
micromark_with_options(r###"# foo
"###, DANGER),
r###"<h1>foo</h1>
"###,
r###"ATX headings (66)"###
);
assert_eq!(
micromark_with_options(r###" ### foo
## foo
# foo
"###, DANGER),
r###"<h3>foo</h3>
<h2>foo</h2>
<h1>foo</h1>
"###,
r###"ATX headings (67)"###
);
assert_eq!(
micromark_with_options(r###" # foo
"###, DANGER),
r###"<pre><code># foo
</code></pre>
"###,
r###"ATX headings (68)"###
);
assert_eq!(
micromark_with_options(r###"foo
# bar
"###, DANGER),
r###"<p>foo
# bar</p>
"###,
r###"ATX headings (69)"###
);
assert_eq!(
micromark_with_options(r###"## foo ##
### bar ###
"###, DANGER),
r###"<h2>foo</h2>
<h3>bar</h3>
"###,
r###"ATX headings (70)"###
);
assert_eq!(
micromark_with_options(r###"# foo ##################################
##### foo ##
"###, DANGER),
r###"<h1>foo</h1>
<h5>foo</h5>
"###,
r###"ATX headings (71)"###
);
assert_eq!(
micromark_with_options(r###"### foo ###
"###, DANGER),
r###"<h3>foo</h3>
"###,
r###"ATX headings (72)"###
);
assert_eq!(
micromark_with_options(r###"### foo ### b
"###, DANGER),
r###"<h3>foo ### b</h3>
"###,
r###"ATX headings (73)"###
);
assert_eq!(
micromark_with_options(r###"# foo#
"###, DANGER),
r###"<h1>foo#</h1>
"###,
r###"ATX headings (74)"###
);
assert_eq!(
micromark_with_options(r###"### foo \###
## foo #\##
# foo \#
"###, DANGER),
r###"<h3>foo ###</h3>
<h2>foo ###</h2>
<h1>foo #</h1>
"###,
r###"ATX headings (75)"###
);
assert_eq!(
micromark_with_options(r###"****
## foo
****
"###, DANGER),
r###"<hr />
<h2>foo</h2>
<hr />
"###,
r###"ATX headings (76)"###
);
assert_eq!(
micromark_with_options(r###"Foo bar
# baz
Bar foo
"###, DANGER),
r###"<p>Foo bar</p>
<h1>baz</h1>
<p>Bar foo</p>
"###,
r###"ATX headings (77)"###
);
assert_eq!(
micromark_with_options(r###"##
#
### ###
"###, DANGER),
r###"<h2></h2>
<h1></h1>
<h3></h3>
"###,
r###"ATX headings (78)"###
);
assert_eq!(
micromark_with_options(r###"Foo *bar*
=========
Foo *bar*
---------
"###, DANGER),
r###"<h1>Foo <em>bar</em></h1>
<h2>Foo <em>bar</em></h2>
"###,
r###"Setext headings (79)"###
);
assert_eq!(
micromark_with_options(r###"Foo *bar
baz*
====
"###, DANGER),
r###"<h1>Foo <em>bar
baz</em></h1>
"###,
r###"Setext headings (80)"###
);
assert_eq!(
micromark_with_options(r###" Foo *bar
baz*
====
"###, DANGER),
r###"<h1>Foo <em>bar
baz</em></h1>
"###,
r###"Setext headings (81)"###
);
assert_eq!(
micromark_with_options(r###"Foo
-------------------------
Foo
=
"###, DANGER),
r###"<h2>Foo</h2>
<h1>Foo</h1>
"###,
r###"Setext headings (82)"###
);
assert_eq!(
micromark_with_options(r###" Foo
---
Foo
-----
Foo
===
"###, DANGER),
r###"<h2>Foo</h2>
<h2>Foo</h2>
<h1>Foo</h1>
"###,
r###"Setext headings (83)"###
);
assert_eq!(
micromark_with_options(r###" Foo
---
Foo
---
"###, DANGER),
r###"<pre><code>Foo
---
Foo
</code></pre>
<hr />
"###,
r###"Setext headings (84)"###
);
assert_eq!(
micromark_with_options(r###"Foo
----
"###, DANGER),
r###"<h2>Foo</h2>
"###,
r###"Setext headings (85)"###
);
assert_eq!(
micromark_with_options(r###"Foo
---
"###, DANGER),
r###"<p>Foo
---</p>
"###,
r###"Setext headings (86)"###
);
assert_eq!(
micromark_with_options(r###"Foo
= =
Foo
--- -
"###, DANGER),
r###"<p>Foo
= =</p>
<p>Foo</p>
<hr />
"###,
r###"Setext headings (87)"###
);
assert_eq!(
micromark_with_options(r###"Foo
-----
"###, DANGER),
r###"<h2>Foo</h2>
"###,
r###"Setext headings (88)"###
);
assert_eq!(
micromark_with_options(r###"Foo\
----
"###, DANGER),
r###"<h2>Foo\</h2>
"###,
r###"Setext headings (89)"###
);
assert_eq!(
micromark_with_options(r###"`Foo
----
`
<a title="a lot
---
of dashes"/>
"###, DANGER),
r###"<h2>`Foo</h2>
<p>`</p>
<h2><a title="a lot</h2>
<p>of dashes"/></p>
"###,
r###"Setext headings (90)"###
);
assert_eq!(
micromark_with_options(r###"> Foo
---
"###, DANGER),
r###"<blockquote>
<p>Foo</p>
</blockquote>
<hr />
"###,
r###"Setext headings (91)"###
);
// To do: some interruption bug.
// assert_eq!(
// micromark_with_options(r###"> foo
// bar
// ===
// "###, DANGER),
// r###"<blockquote>
// <p>foo
// bar
// ===</p>
// </blockquote>
// "###,
// r###"Setext headings (92)"###
// );
assert_eq!(
micromark_with_options(r###"- Foo
---
"###, DANGER),
r###"<ul>
<li>Foo</li>
</ul>
<hr />
"###,
r###"Setext headings (93)"###
);
assert_eq!(
micromark_with_options(r###"Foo
Bar
---
"###, DANGER),
r###"<h2>Foo
Bar</h2>
"###,
r###"Setext headings (94)"###
);
assert_eq!(
micromark_with_options(r###"---
Foo
---
Bar
---
Baz
"###, DANGER),
r###"<hr />
<h2>Foo</h2>
<h2>Bar</h2>
<p>Baz</p>
"###,
r###"Setext headings (95)"###
);
assert_eq!(
micromark_with_options(r###"
====
"###, DANGER),
r###"<p>====</p>
"###,
r###"Setext headings (96)"###
);
assert_eq!(
micromark_with_options(r###"---
---
"###, DANGER),
r###"<hr />
<hr />
"###,
r###"Setext headings (97)"###
);
assert_eq!(
micromark_with_options(r###"- foo
-----
"###, DANGER),
r###"<ul>
<li>foo</li>
</ul>
<hr />
"###,
r###"Setext headings (98)"###
);
assert_eq!(
micromark_with_options(r###" foo
---
"###, DANGER),
r###"<pre><code>foo
</code></pre>
<hr />
"###,
r###"Setext headings (99)"###
);
assert_eq!(
micromark_with_options(r###"> foo
-----
"###, DANGER),
r###"<blockquote>
<p>foo</p>
</blockquote>
<hr />
"###,
r###"Setext headings (100)"###
);
assert_eq!(
micromark_with_options(r###"\> foo
------
"###, DANGER),
r###"<h2>> foo</h2>
"###,
r###"Setext headings (101)"###
);
assert_eq!(
micromark_with_options(r###"Foo
bar
---
baz
"###, DANGER),
r###"<p>Foo</p>
<h2>bar</h2>
<p>baz</p>
"###,
r###"Setext headings (102)"###
);
assert_eq!(
micromark_with_options(r###"Foo
bar
---
baz
"###, DANGER),
r###"<p>Foo
bar</p>
<hr />
<p>baz</p>
"###,
r###"Setext headings (103)"###
);
assert_eq!(
micromark_with_options(r###"Foo
bar
* * *
baz
"###, DANGER),
r###"<p>Foo
bar</p>
<hr />
<p>baz</p>
"###,
r###"Setext headings (104)"###
);
assert_eq!(
micromark_with_options(r###"Foo
bar
\---
baz
"###, DANGER),
r###"<p>Foo
bar
---
baz</p>
"###,
r###"Setext headings (105)"###
);
assert_eq!(
micromark_with_options(r###" a simple
indented code block
"###, DANGER),
r###"<pre><code>a simple
indented code block
</code></pre>
"###,
r###"Indented code blocks (106)"###
);
assert_eq!(
micromark_with_options(r###" - foo
bar
"###, DANGER),
r###"<ul>
<li>
<p>foo</p>
<p>bar</p>
</li>
</ul>
"###,
r###"Indented code blocks (107)"###
);
assert_eq!(
micromark_with_options(r###"1. foo
- bar
"###, DANGER),
r###"<ol>
<li>
<p>foo</p>
<ul>
<li>bar</li>
</ul>
</li>
</ol>
"###,
r###"Indented code blocks (108)"###
);
assert_eq!(
micromark_with_options(r###" <a/>
*hi*
- one
"###, DANGER),
r###"<pre><code><a/>
*hi*
- one
</code></pre>
"###,
r###"Indented code blocks (109)"###
);
assert_eq!(
micromark_with_options(r###" chunk1
chunk2
chunk3
"###, DANGER),
r###"<pre><code>chunk1
chunk2
chunk3
</code></pre>
"###,
r###"Indented code blocks (110)"###
);
assert_eq!(
micromark_with_options(r###" chunk1
chunk2
"###, DANGER),
r###"<pre><code>chunk1
chunk2
</code></pre>
"###,
r###"Indented code blocks (111)"###
);
assert_eq!(
micromark_with_options(r###"Foo
bar
"###, DANGER),
r###"<p>Foo
bar</p>
"###,
r###"Indented code blocks (112)"###
);
assert_eq!(
micromark_with_options(r###" foo
bar
"###, DANGER),
r###"<pre><code>foo
</code></pre>
<p>bar</p>
"###,
r###"Indented code blocks (113)"###
);
assert_eq!(
micromark_with_options(r###"# Heading
foo
Heading
------
foo
----
"###, DANGER),
r###"<h1>Heading</h1>
<pre><code>foo
</code></pre>
<h2>Heading</h2>
<pre><code>foo
</code></pre>
<hr />
"###,
r###"Indented code blocks (114)"###
);
assert_eq!(
micromark_with_options(r###" foo
bar
"###, DANGER),
r###"<pre><code> foo
bar
</code></pre>
"###,
r###"Indented code blocks (115)"###
);
assert_eq!(
micromark_with_options(r###"
foo
"###, DANGER),
r###"<pre><code>foo
</code></pre>
"###,
r###"Indented code blocks (116)"###
);
assert_eq!(
micromark_with_options(r###" foo
"###, DANGER),
r###"<pre><code>foo
</code></pre>
"###,
r###"Indented code blocks (117)"###
);
assert_eq!(
micromark_with_options(r###"```
<
>
```
"###, DANGER),
r###"<pre><code><
>
</code></pre>
"###,
r###"Fenced code blocks (118)"###
);
assert_eq!(
micromark_with_options(r###"~~~
<
>
~~~
"###, DANGER),
r###"<pre><code><
>
</code></pre>
"###,
r###"Fenced code blocks (119)"###
);
assert_eq!(
micromark_with_options(r###"``
foo
``
"###, DANGER),
r###"<p><code>foo</code></p>
"###,
r###"Fenced code blocks (120)"###
);
assert_eq!(
micromark_with_options(r###"```
aaa
~~~
```
"###, DANGER),
r###"<pre><code>aaa
~~~
</code></pre>
"###,
r###"Fenced code blocks (121)"###
);
assert_eq!(
micromark_with_options(r###"~~~
aaa
```
~~~
"###, DANGER),
r###"<pre><code>aaa
```
</code></pre>
"###,
r###"Fenced code blocks (122)"###
);
assert_eq!(
micromark_with_options(r###"````
aaa
```
``````
"###, DANGER),
r###"<pre><code>aaa
```
</code></pre>
"###,
r###"Fenced code blocks (123)"###
);
assert_eq!(
micromark_with_options(r###"~~~~
aaa
~~~
~~~~
"###, DANGER),
r###"<pre><code>aaa
~~~
</code></pre>
"###,
r###"Fenced code blocks (124)"###
);
assert_eq!(
micromark_with_options(r###"```
"###, DANGER),
r###"<pre><code></code></pre>
"###,
r###"Fenced code blocks (125)"###
);
assert_eq!(
micromark_with_options(r###"`````
```
aaa
"###, DANGER),
r###"<pre><code>
```
aaa
</code></pre>
"###,
r###"Fenced code blocks (126)"###
);
assert_eq!(
micromark_with_options(r###"> ```
> aaa
bbb
"###, DANGER),
r###"<blockquote>
<pre><code>aaa
</code></pre>
</blockquote>
<p>bbb</p>
"###,
r###"Fenced code blocks (127)"###
);
assert_eq!(
micromark_with_options(r###"```
```
"###, DANGER),
r###"<pre><code>
</code></pre>
"###,
r###"Fenced code blocks (128)"###
);
assert_eq!(
micromark_with_options(r###"```
```
"###, DANGER),
r###"<pre><code></code></pre>
"###,
r###"Fenced code blocks (129)"###
);
assert_eq!(
micromark_with_options(r###" ```
aaa
aaa
```
"###, DANGER),
r###"<pre><code>aaa
aaa
</code></pre>
"###,
r###"Fenced code blocks (130)"###
);
assert_eq!(
micromark_with_options(r###" ```
aaa
aaa
aaa
```
"###, DANGER),
r###"<pre><code>aaa
aaa
aaa
</code></pre>
"###,
r###"Fenced code blocks (131)"###
);
assert_eq!(
micromark_with_options(r###" ```
aaa
aaa
aaa
```
"###, DANGER),
r###"<pre><code>aaa
aaa
aaa
</code></pre>
"###,
r###"Fenced code blocks (132)"###
);
assert_eq!(
micromark_with_options(r###" ```
aaa
```
"###, DANGER),
r###"<pre><code>```
aaa
```
</code></pre>
"###,
r###"Fenced code blocks (133)"###
);
assert_eq!(
micromark_with_options(r###"```
aaa
```
"###, DANGER),
r###"<pre><code>aaa
</code></pre>
"###,
r###"Fenced code blocks (134)"###
);
assert_eq!(
micromark_with_options(r###" ```
aaa
```
"###, DANGER),
r###"<pre><code>aaa
</code></pre>
"###,
r###"Fenced code blocks (135)"###
);
assert_eq!(
micromark_with_options(r###"```
aaa
```
"###, DANGER),
r###"<pre><code>aaa
```
</code></pre>
"###,
r###"Fenced code blocks (136)"###
);
assert_eq!(
micromark_with_options(r###"``` ```
aaa
"###, DANGER),
r###"<p><code> </code>
aaa</p>
"###,
r###"Fenced code blocks (137)"###
);
assert_eq!(
micromark_with_options(r###"~~~~~~
aaa
~~~ ~~
"###, DANGER),
r###"<pre><code>aaa
~~~ ~~
</code></pre>
"###,
r###"Fenced code blocks (138)"###
);
assert_eq!(
micromark_with_options(r###"foo
```
bar
```
baz
"###, DANGER),
r###"<p>foo</p>
<pre><code>bar
</code></pre>
<p>baz</p>
"###,
r###"Fenced code blocks (139)"###
);
assert_eq!(
micromark_with_options(r###"foo
---
~~~
bar
~~~
# baz
"###, DANGER),
r###"<h2>foo</h2>
<pre><code>bar
</code></pre>
<h1>baz</h1>
"###,
r###"Fenced code blocks (140)"###
);
assert_eq!(
micromark_with_options(r###"```ruby
def foo(x)
return 3
end
```
"###, DANGER),
r###"<pre><code class="language-ruby">def foo(x)
return 3
end
</code></pre>
"###,
r###"Fenced code blocks (141)"###
);
assert_eq!(
micromark_with_options(r###"~~~~ ruby startline=3 $%@#$
def foo(x)
return 3
end
~~~~~~~
"###, DANGER),
r###"<pre><code class="language-ruby">def foo(x)
return 3
end
</code></pre>
"###,
r###"Fenced code blocks (142)"###
);
assert_eq!(
micromark_with_options(r###"````;
````
"###, DANGER),
r###"<pre><code class="language-;"></code></pre>
"###,
r###"Fenced code blocks (143)"###
);
assert_eq!(
micromark_with_options(r###"``` aa ```
foo
"###, DANGER),
r###"<p><code>aa</code>
foo</p>
"###,
r###"Fenced code blocks (144)"###
);
assert_eq!(
micromark_with_options(r###"~~~ aa ``` ~~~
foo
~~~
"###, DANGER),
r###"<pre><code class="language-aa">foo
</code></pre>
"###,
r###"Fenced code blocks (145)"###
);
assert_eq!(
micromark_with_options(r###"```
``` aaa
```
"###, DANGER),
r###"<pre><code>``` aaa
</code></pre>
"###,
r###"Fenced code blocks (146)"###
);
assert_eq!(
micromark_with_options(r###"<table><tr><td>
<pre>
**Hello**,
_world_.
</pre>
</td></tr></table>
"###, DANGER),
r###"<table><tr><td>
<pre>
**Hello**,
<p><em>world</em>.
</pre></p>
</td></tr></table>
"###,
r###"HTML blocks (147)"###
);
assert_eq!(
micromark_with_options(r###"<table>
<tr>
<td>
hi
</td>
</tr>
</table>
okay.
"###, DANGER),
r###"<table>
<tr>
<td>
hi
</td>
</tr>
</table>
<p>okay.</p>
"###,
r###"HTML blocks (148)"###
);
assert_eq!(
micromark_with_options(r###" <div>
*hello*
<foo><a>
"###, DANGER),
r###" <div>
*hello*
<foo><a>
"###,
r###"HTML blocks (149)"###
);
assert_eq!(
micromark_with_options(r###"</div>
*foo*
"###, DANGER),
r###"</div>
*foo*
"###,
r###"HTML blocks (150)"###
);
assert_eq!(
micromark_with_options(r###"<DIV CLASS="foo">
*Markdown*
</DIV>
"###, DANGER),
r###"<DIV CLASS="foo">
<p><em>Markdown</em></p>
</DIV>
"###,
r###"HTML blocks (151)"###
);
assert_eq!(
micromark_with_options(r###"<div id="foo"
class="bar">
</div>
"###, DANGER),
r###"<div id="foo"
class="bar">
</div>
"###,
r###"HTML blocks (152)"###
);
assert_eq!(
micromark_with_options(r###"<div id="foo" class="bar
baz">
</div>
"###, DANGER),
r###"<div id="foo" class="bar
baz">
</div>
"###,
r###"HTML blocks (153)"###
);
assert_eq!(
micromark_with_options(r###"<div>
*foo*
*bar*
"###, DANGER),
r###"<div>
*foo*
<p><em>bar</em></p>
"###,
r###"HTML blocks (154)"###
);
assert_eq!(
micromark_with_options(r###"<div id="foo"
*hi*
"###, DANGER),
r###"<div id="foo"
*hi*
"###,
r###"HTML blocks (155)"###
);
assert_eq!(
micromark_with_options(r###"<div class
foo
"###, DANGER),
r###"<div class
foo
"###,
r###"HTML blocks (156)"###
);
assert_eq!(
micromark_with_options(r###"<div *???-&&&-<---
*foo*
"###, DANGER),
r###"<div *???-&&&-<---
*foo*
"###,
r###"HTML blocks (157)"###
);
assert_eq!(
micromark_with_options(r###"<div><a href="bar">*foo*</a></div>
"###, DANGER),
r###"<div><a href="bar">*foo*</a></div>
"###,
r###"HTML blocks (158)"###
);
assert_eq!(
micromark_with_options(r###"<table><tr><td>
foo
</td></tr></table>
"###, DANGER),
r###"<table><tr><td>
foo
</td></tr></table>
"###,
r###"HTML blocks (159)"###
);
assert_eq!(
micromark_with_options(r###"<div></div>
``` c
int x = 33;
```
"###, DANGER),
r###"<div></div>
``` c
int x = 33;
```
"###,
r###"HTML blocks (160)"###
);
assert_eq!(
micromark_with_options(r###"<a href="foo">
*bar*
</a>
"###, DANGER),
r###"<a href="foo">
*bar*
</a>
"###,
r###"HTML blocks (161)"###
);
assert_eq!(
micromark_with_options(r###"<Warning>
*bar*
</Warning>
"###, DANGER),
r###"<Warning>
*bar*
</Warning>
"###,
r###"HTML blocks (162)"###
);
assert_eq!(
micromark_with_options(r###"<i class="foo">
*bar*
</i>
"###, DANGER),
r###"<i class="foo">
*bar*
</i>
"###,
r###"HTML blocks (163)"###
);
assert_eq!(
micromark_with_options(r###"</ins>
*bar*
"###, DANGER),
r###"</ins>
*bar*
"###,
r###"HTML blocks (164)"###
);
assert_eq!(
micromark_with_options(r###"<del>
*foo*
</del>
"###, DANGER),
r###"<del>
*foo*
</del>
"###,
r###"HTML blocks (165)"###
);
assert_eq!(
micromark_with_options(r###"<del>
*foo*
</del>
"###, DANGER),
r###"<del>
<p><em>foo</em></p>
</del>
"###,
r###"HTML blocks (166)"###
);
assert_eq!(
micromark_with_options(r###"<del>*foo*</del>
"###, DANGER),
r###"<p><del><em>foo</em></del></p>
"###,
r###"HTML blocks (167)"###
);
assert_eq!(
micromark_with_options(r###"<pre language="haskell"><code>
import Text.HTML.TagSoup
main :: IO ()
main = print $ parseTags tags
</code></pre>
okay
"###, DANGER),
r###"<pre language="haskell"><code>
import Text.HTML.TagSoup
main :: IO ()
main = print $ parseTags tags
</code></pre>
<p>okay</p>
"###,
r###"HTML blocks (168)"###
);
assert_eq!(
micromark_with_options(r###"<script type="text/javascript">
// JavaScript example
document.getElementById("demo").innerHTML = "Hello JavaScript!";
</script>
okay
"###, DANGER),
r###"<script type="text/javascript">
// JavaScript example
document.getElementById("demo").innerHTML = "Hello JavaScript!";
</script>
<p>okay</p>
"###,
r###"HTML blocks (169)"###
);
assert_eq!(
micromark_with_options(r###"<textarea>
*foo*
_bar_
</textarea>
"###, DANGER),
r###"<textarea>
*foo*
_bar_
</textarea>
"###,
r###"HTML blocks (170)"###
);
assert_eq!(
micromark_with_options(r###"<style
type="text/css">
h1 {color:red;}
p {color:blue;}
</style>
okay
"###, DANGER),
r###"<style
type="text/css">
h1 {color:red;}
p {color:blue;}
</style>
<p>okay</p>
"###,
r###"HTML blocks (171)"###
);
assert_eq!(
micromark_with_options(r###"<style
type="text/css">
foo
"###, DANGER),
r###"<style
type="text/css">
foo
"###,
r###"HTML blocks (172)"###
);
assert_eq!(
micromark_with_options(r###"> <div>
> foo
bar
"###, DANGER),
r###"<blockquote>
<div>
foo
</blockquote>
<p>bar</p>
"###,
r###"HTML blocks (173)"###
);
assert_eq!(
micromark_with_options(r###"- <div>
- foo
"###, DANGER),
r###"<ul>
<li>
<div>
</li>
<li>foo</li>
</ul>
"###,
r###"HTML blocks (174)"###
);
assert_eq!(
micromark_with_options(r###"<style>p{color:red;}</style>
*foo*
"###, DANGER),
r###"<style>p{color:red;}</style>
<p><em>foo</em></p>
"###,
r###"HTML blocks (175)"###
);
assert_eq!(
micromark_with_options(r###"<!-- foo -->*bar*
*baz*
"###, DANGER),
r###"<!-- foo -->*bar*
<p><em>baz</em></p>
"###,
r###"HTML blocks (176)"###
);
assert_eq!(
micromark_with_options(r###"<script>
foo
</script>1. *bar*
"###, DANGER),
r###"<script>
foo
</script>1. *bar*
"###,
r###"HTML blocks (177)"###
);
assert_eq!(
micromark_with_options(r###"<!-- Foo
bar
baz -->
okay
"###, DANGER),
r###"<!-- Foo
bar
baz -->
<p>okay</p>
"###,
r###"HTML blocks (178)"###
);
assert_eq!(
micromark_with_options(r###"<?php
echo '>';
?>
okay
"###, DANGER),
r###"<?php
echo '>';
?>
<p>okay</p>
"###,
r###"HTML blocks (179)"###
);
assert_eq!(
micromark_with_options(r###"<!DOCTYPE html>
"###, DANGER),
r###"<!DOCTYPE html>
"###,
r###"HTML blocks (180)"###
);
assert_eq!(
micromark_with_options(r###"<![CDATA[
function matchwo(a,b)
{
if (a < b && a < 0) then {
return 1;
} else {
return 0;
}
}
]]>
okay
"###, DANGER),
r###"<![CDATA[
function matchwo(a,b)
{
if (a < b && a < 0) then {
return 1;
} else {
return 0;
}
}
]]>
<p>okay</p>
"###,
r###"HTML blocks (181)"###
);
assert_eq!(
micromark_with_options(r###" <!-- foo -->
<!-- foo -->
"###, DANGER),
r###" <!-- foo -->
<pre><code><!-- foo -->
</code></pre>
"###,
r###"HTML blocks (182)"###
);
assert_eq!(
micromark_with_options(r###" <div>
<div>
"###, DANGER),
r###" <div>
<pre><code><div>
</code></pre>
"###,
r###"HTML blocks (183)"###
);
assert_eq!(
micromark_with_options(r###"Foo
<div>
bar
</div>
"###, DANGER),
r###"<p>Foo</p>
<div>
bar
</div>
"###,
r###"HTML blocks (184)"###
);
assert_eq!(
micromark_with_options(r###"<div>
bar
</div>
*foo*
"###, DANGER),
r###"<div>
bar
</div>
*foo*
"###,
r###"HTML blocks (185)"###
);
assert_eq!(
micromark_with_options(r###"Foo
<a href="bar">
baz
"###, DANGER),
r###"<p>Foo
<a href="bar">
baz</p>
"###,
r###"HTML blocks (186)"###
);
assert_eq!(
micromark_with_options(r###"<div>
*Emphasized* text.
</div>
"###, DANGER),
r###"<div>
<p><em>Emphasized</em> text.</p>
</div>
"###,
r###"HTML blocks (187)"###
);
assert_eq!(
micromark_with_options(r###"<div>
*Emphasized* text.
</div>
"###, DANGER),
r###"<div>
*Emphasized* text.
</div>
"###,
r###"HTML blocks (188)"###
);
assert_eq!(
micromark_with_options(r###"<table>
<tr>
<td>
Hi
</td>
</tr>
</table>
"###, DANGER),
r###"<table>
<tr>
<td>
Hi
</td>
</tr>
</table>
"###,
r###"HTML blocks (189)"###
);
assert_eq!(
micromark_with_options(r###"<table>
<tr>
<td>
Hi
</td>
</tr>
</table>
"###, DANGER),
r###"<table>
<tr>
<pre><code><td>
Hi
</td>
</code></pre>
</tr>
</table>
"###,
r###"HTML blocks (190)"###
);
assert_eq!(
micromark_with_options(r###"[foo]: /url "title"
[foo]
"###, DANGER),
r###"<p><a href="/url" title="title">foo</a></p>
"###,
r###"Link reference definitions (191)"###
);
assert_eq!(
micromark_with_options(r###" [foo]:
/url
'the title'
[foo]
"###, DANGER),
r###"<p><a href="/url" title="the title">foo</a></p>
"###,
r###"Link reference definitions (192)"###
);
assert_eq!(
micromark_with_options(r###"[Foo*bar\]]:my_(url) 'title (with parens)'
[Foo*bar\]]
"###, DANGER),
r###"<p><a href="my_(url)" title="title (with parens)">Foo*bar]</a></p>
"###,
r###"Link reference definitions (193)"###
);
assert_eq!(
micromark_with_options(r###"[Foo bar]:
<my url>
'title'
[Foo bar]
"###, DANGER),
r###"<p><a href="my%20url" title="title">Foo bar</a></p>
"###,
r###"Link reference definitions (194)"###
);
assert_eq!(
micromark_with_options(r###"[foo]: /url '
title
line1
line2
'
[foo]
"###, DANGER),
r###"<p><a href="/url" title="
title
line1
line2
">foo</a></p>
"###,
r###"Link reference definitions (195)"###
);
assert_eq!(
micromark_with_options(r###"[foo]: /url 'title
with blank line'
[foo]
"###, DANGER),
r###"<p>[foo]: /url 'title</p>
<p>with blank line'</p>
<p>[foo]</p>
"###,
r###"Link reference definitions (196)"###
);
assert_eq!(
micromark_with_options(r###"[foo]:
/url
[foo]
"###, DANGER),
r###"<p><a href="/url">foo</a></p>
"###,
r###"Link reference definitions (197)"###
);
assert_eq!(
micromark_with_options(r###"[foo]:
[foo]
"###, DANGER),
r###"<p>[foo]:</p>
<p>[foo]</p>
"###,
r###"Link reference definitions (198)"###
);
assert_eq!(
micromark_with_options(r###"[foo]: <>
[foo]
"###, DANGER),
r###"<p><a href="">foo</a></p>
"###,
r###"Link reference definitions (199)"###
);
assert_eq!(
micromark_with_options(r###"[foo]: <bar>(baz)
[foo]
"###, DANGER),
r###"<p>[foo]: <bar>(baz)</p>
<p>[foo]</p>
"###,
r###"Link reference definitions (200)"###
);
assert_eq!(
micromark_with_options(r###"[foo]: /url\bar\*baz "foo\"bar\baz"
[foo]
"###, DANGER),
r###"<p><a href="/url%5Cbar*baz" title="foo"bar\baz">foo</a></p>
"###,
r###"Link reference definitions (201)"###
);
assert_eq!(
micromark_with_options(r###"[foo]
[foo]: url
"###, DANGER),
r###"<p><a href="url">foo</a></p>
"###,
r###"Link reference definitions (202)"###
);
assert_eq!(
micromark_with_options(r###"[foo]
[foo]: first
[foo]: second
"###, DANGER),
r###"<p><a href="first">foo</a></p>
"###,
r###"Link reference definitions (203)"###
);
assert_eq!(
micromark_with_options(r###"[FOO]: /url
[Foo]
"###, DANGER),
r###"<p><a href="/url">Foo</a></p>
"###,
r###"Link reference definitions (204)"###
);
assert_eq!(
micromark_with_options(r###"[ΑΓΩ]: /φου
[αγω]
"###, DANGER),
r###"<p><a href="/%CF%86%CE%BF%CF%85">αγω</a></p>
"###,
r###"Link reference definitions (205)"###
);
assert_eq!(
micromark_with_options(r###"[foo]: /url
"###, DANGER),
r###""###,
r###"Link reference definitions (206)"###
);
assert_eq!(
micromark_with_options(r###"[
foo
]: /url
bar
"###, DANGER),
r###"<p>bar</p>
"###,
r###"Link reference definitions (207)"###
);
assert_eq!(
micromark_with_options(r###"[foo]: /url "title" ok
"###, DANGER),
r###"<p>[foo]: /url "title" ok</p>
"###,
r###"Link reference definitions (208)"###
);
assert_eq!(
micromark_with_options(r###"[foo]: /url
"title" ok
"###, DANGER),
r###"<p>"title" ok</p>
"###,
r###"Link reference definitions (209)"###
);
assert_eq!(
micromark_with_options(r###" [foo]: /url "title"
[foo]
"###, DANGER),
r###"<pre><code>[foo]: /url "title"
</code></pre>
<p>[foo]</p>
"###,
r###"Link reference definitions (210)"###
);
assert_eq!(
micromark_with_options(r###"```
[foo]: /url
```
[foo]
"###, DANGER),
r###"<pre><code>[foo]: /url
</code></pre>
<p>[foo]</p>
"###,
r###"Link reference definitions (211)"###
);
assert_eq!(
micromark_with_options(r###"Foo
[bar]: /baz
[bar]
"###, DANGER),
r###"<p>Foo
[bar]: /baz</p>
<p>[bar]</p>
"###,
r###"Link reference definitions (212)"###
);
assert_eq!(
micromark_with_options(r###"# [Foo]
[foo]: /url
> bar
"###, DANGER),
r###"<h1><a href="/url">Foo</a></h1>
<blockquote>
<p>bar</p>
</blockquote>
"###,
r###"Link reference definitions (213)"###
);
assert_eq!(
micromark_with_options(r###"[foo]: /url
bar
===
[foo]
"###, DANGER),
r###"<h1>bar</h1>
<p><a href="/url">foo</a></p>
"###,
r###"Link reference definitions (214)"###
);
assert_eq!(
micromark_with_options(r###"[foo]: /url
===
[foo]
"###, DANGER),
r###"<p>===
<a href="/url">foo</a></p>
"###,
r###"Link reference definitions (215)"###
);
assert_eq!(
micromark_with_options(r###"[foo]: /foo-url "foo"
[bar]: /bar-url
"bar"
[baz]: /baz-url
[foo],
[bar],
[baz]
"###, DANGER),
r###"<p><a href="/foo-url" title="foo">foo</a>,
<a href="/bar-url" title="bar">bar</a>,
<a href="/baz-url">baz</a></p>
"###,
r###"Link reference definitions (216)"###
);
// To do: eol after definition in otherwise empty block quote.
// assert_eq!(
// micromark_with_options(r###"[foo]
// > [foo]: /url
// "###, DANGER),
// r###"<p><a href="/url">foo</a></p>
// <blockquote>
// </blockquote>
// "###,
// r###"Link reference definitions (217)"###
// );
assert_eq!(
micromark_with_options(r###"aaa
bbb
"###, DANGER),
r###"<p>aaa</p>
<p>bbb</p>
"###,
r###"Paragraphs (218)"###
);
assert_eq!(
micromark_with_options(r###"aaa
bbb
ccc
ddd
"###, DANGER),
r###"<p>aaa
bbb</p>
<p>ccc
ddd</p>
"###,
r###"Paragraphs (219)"###
);
assert_eq!(
micromark_with_options(r###"aaa
bbb
"###, DANGER),
r###"<p>aaa</p>
<p>bbb</p>
"###,
r###"Paragraphs (220)"###
);
assert_eq!(
micromark_with_options(r###" aaa
bbb
"###, DANGER),
r###"<p>aaa
bbb</p>
"###,
r###"Paragraphs (221)"###
);
assert_eq!(
micromark_with_options(r###"aaa
bbb
ccc
"###, DANGER),
r###"<p>aaa
bbb
ccc</p>
"###,
r###"Paragraphs (222)"###
);
assert_eq!(
micromark_with_options(r###" aaa
bbb
"###, DANGER),
r###"<p>aaa
bbb</p>
"###,
r###"Paragraphs (223)"###
);
assert_eq!(
micromark_with_options(r###" aaa
bbb
"###, DANGER),
r###"<pre><code>aaa
</code></pre>
<p>bbb</p>
"###,
r###"Paragraphs (224)"###
);
assert_eq!(
micromark_with_options(r###"aaa
bbb
"###, DANGER),
r###"<p>aaa<br />
bbb</p>
"###,
r###"Paragraphs (225)"###
);
assert_eq!(
micromark_with_options(r###"
aaa
# aaa
"###, DANGER),
r###"<p>aaa</p>
<h1>aaa</h1>
"###,
r###"Blank lines (226)"###
);
assert_eq!(
micromark_with_options(r###"> # Foo
> bar
> baz
"###, DANGER),
r###"<blockquote>
<h1>Foo</h1>
<p>bar
baz</p>
</blockquote>
"###,
r###"Block quotes (227)"###
);
assert_eq!(
micromark_with_options(r###"># Foo
>bar
> baz
"###, DANGER),
r###"<blockquote>
<h1>Foo</h1>
<p>bar
baz</p>
</blockquote>
"###,
r###"Block quotes (228)"###
);
assert_eq!(
micromark_with_options(r###" > # Foo
> bar
> baz
"###, DANGER),
r###"<blockquote>
<h1>Foo</h1>
<p>bar
baz</p>
</blockquote>
"###,
r###"Block quotes (229)"###
);
assert_eq!(
micromark_with_options(r###" > # Foo
> bar
> baz
"###, DANGER),
r###"<pre><code>> # Foo
> bar
> baz
</code></pre>
"###,
r###"Block quotes (230)"###
);
// To do: some lazy bug.
// assert_eq!(
// micromark_with_options(r###"> # Foo
// > bar
// baz
// "###, DANGER),
// r###"<blockquote>
// <h1>Foo</h1>
// <p>bar
// baz</p>
// </blockquote>
// "###,
// r###"Block quotes (231)"###
// );
assert_eq!(
micromark_with_options(r###"> bar
baz
> foo
"###, DANGER),
r###"<blockquote>
<p>bar
baz
foo</p>
</blockquote>
"###,
r###"Block quotes (232)"###
);
assert_eq!(
micromark_with_options(r###"> foo
---
"###, DANGER),
r###"<blockquote>
<p>foo</p>
</blockquote>
<hr />
"###,
r###"Block quotes (233)"###
);
assert_eq!(
micromark_with_options(r###"> - foo
- bar
"###, DANGER),
r###"<blockquote>
<ul>
<li>foo</li>
</ul>
</blockquote>
<ul>
<li>bar</li>
</ul>
"###,
r###"Block quotes (234)"###
);
assert_eq!(
micromark_with_options(r###"> foo
bar
"###, DANGER),
r###"<blockquote>
<pre><code>foo
</code></pre>
</blockquote>
<pre><code>bar
</code></pre>
"###,
r###"Block quotes (235)"###
);
assert_eq!(
micromark_with_options(r###"> ```
foo
```
"###, DANGER),
r###"<blockquote>
<pre><code></code></pre>
</blockquote>
<p>foo</p>
<pre><code></code></pre>
"###,
r###"Block quotes (236)"###
);
// To do: some lazy bug.
// assert_eq!(
// micromark_with_options(r###"> foo
// - bar
// "###, DANGER),
// r###"<blockquote>
// <p>foo
// - bar</p>
// </blockquote>
// "###,
// r###"Block quotes (237)"###
// );
// To do: some eol in empty block quote bug.
// assert_eq!(
// micromark_with_options(r###">
// "###, DANGER),
// r###"<blockquote>
// </blockquote>
// "###,
// r###"Block quotes (238)"###
// );
// To do: some eol in empty block quote bug.
// assert_eq!(
// micromark_with_options(r###">
// >
// >
// "###, DANGER),
// r###"<blockquote>
// </blockquote>
// "###,
// r###"Block quotes (239)"###
// );
// To do: some eol in empty block quote bug.
// assert_eq!(
// micromark_with_options(r###">
// > foo
// >
// "###, DANGER),
// r###"<blockquote>
// <p>foo</p>
// </blockquote>
// "###,
// r###"Block quotes (240)"###
// );
assert_eq!(
micromark_with_options(r###"> foo
> bar
"###, DANGER),
r###"<blockquote>
<p>foo</p>
</blockquote>
<blockquote>
<p>bar</p>
</blockquote>
"###,
r###"Block quotes (241)"###
);
assert_eq!(
micromark_with_options(r###"> foo
> bar
"###, DANGER),
r###"<blockquote>
<p>foo
bar</p>
</blockquote>
"###,
r###"Block quotes (242)"###
);
assert_eq!(
micromark_with_options(r###"> foo
>
> bar
"###, DANGER),
r###"<blockquote>
<p>foo</p>
<p>bar</p>
</blockquote>
"###,
r###"Block quotes (243)"###
);
assert_eq!(
micromark_with_options(r###"foo
> bar
"###, DANGER),
r###"<p>foo</p>
<blockquote>
<p>bar</p>
</blockquote>
"###,
r###"Block quotes (244)"###
);
assert_eq!(
micromark_with_options(r###"> aaa
***
> bbb
"###, DANGER),
r###"<blockquote>
<p>aaa</p>
</blockquote>
<hr />
<blockquote>
<p>bbb</p>
</blockquote>
"###,
r###"Block quotes (245)"###
);
// To do: some eol in empty block quote bug.
// assert_eq!(
// micromark_with_options(r###"> bar
// baz
// "###, DANGER),
// r###"<blockquote>
// <p>bar
// baz</p>
// </blockquote>
// "###,
// r###"Block quotes (246)"###
// );
assert_eq!(
micromark_with_options(r###"> bar
baz
"###, DANGER),
r###"<blockquote>
<p>bar</p>
</blockquote>
<p>baz</p>
"###,
r###"Block quotes (247)"###
);
assert_eq!(
micromark_with_options(r###"> bar
>
baz
"###, DANGER),
r###"<blockquote>
<p>bar</p>
</blockquote>
<p>baz</p>
"###,
r###"Block quotes (248)"###
);
// To do: some lazy bug.
// assert_eq!(
// micromark_with_options(r###"> > > foo
// bar
// "###, DANGER),
// r###"<blockquote>
// <blockquote>
// <blockquote>
// <p>foo
// bar</p>
// </blockquote>
// </blockquote>
// </blockquote>
// "###,
// r###"Block quotes (249)"###
// );
// To do: some lazy bug.
// assert_eq!(
// micromark_with_options(r###">>> foo
// > bar
// >>baz
// "###, DANGER),
// r###"<blockquote>
// <blockquote>
// <blockquote>
// <p>foo
// bar
// baz</p>
// </blockquote>
// </blockquote>
// </blockquote>
// "###,
// r###"Block quotes (250)"###
// );
assert_eq!(
micromark_with_options(r###"> code
> not code
"###, DANGER),
r###"<blockquote>
<pre><code>code
</code></pre>
</blockquote>
<blockquote>
<p>not code</p>
</blockquote>
"###,
r###"Block quotes (251)"###
);
assert_eq!(
micromark_with_options(r###"A paragraph
with two lines.
indented code
> A block quote.
"###, DANGER),
r###"<p>A paragraph
with two lines.</p>
<pre><code>indented code
</code></pre>
<blockquote>
<p>A block quote.</p>
</blockquote>
"###,
r###"List items (252)"###
);
assert_eq!(
micromark_with_options(r###"1. A paragraph
with two lines.
indented code
> A block quote.
"###, DANGER),
r###"<ol>
<li>
<p>A paragraph
with two lines.</p>
<pre><code>indented code
</code></pre>
<blockquote>
<p>A block quote.</p>
</blockquote>
</li>
</ol>
"###,
r###"List items (253)"###
);
assert_eq!(
micromark_with_options(r###"- one
two
"###, DANGER),
r###"<ul>
<li>one</li>
</ul>
<p>two</p>
"###,
r###"List items (254)"###
);
assert_eq!(
micromark_with_options(r###"- one
two
"###, DANGER),
r###"<ul>
<li>
<p>one</p>
<p>two</p>
</li>
</ul>
"###,
r###"List items (255)"###
);
assert_eq!(
micromark_with_options(r###" - one
two
"###, DANGER),
r###"<ul>
<li>one</li>
</ul>
<pre><code> two
</code></pre>
"###,
r###"List items (256)"###
);
assert_eq!(
micromark_with_options(r###" - one
two
"###, DANGER),
r###"<ul>
<li>
<p>one</p>
<p>two</p>
</li>
</ul>
"###,
r###"List items (257)"###
);
assert_eq!(
micromark_with_options(r###" > > 1. one
>>
>> two
"###, DANGER),
r###"<blockquote>
<blockquote>
<ol>
<li>
<p>one</p>
<p>two</p>
</li>
</ol>
</blockquote>
</blockquote>
"###,
r###"List items (258)"###
);
assert_eq!(
micromark_with_options(r###">>- one
>>
> > two
"###, DANGER),
r###"<blockquote>
<blockquote>
<ul>
<li>one</li>
</ul>
<p>two</p>
</blockquote>
</blockquote>
"###,
r###"List items (259)"###
);
assert_eq!(
micromark_with_options(r###"-one
2.two
"###, DANGER),
r###"<p>-one</p>
<p>2.two</p>
"###,
r###"List items (260)"###
);
assert_eq!(
micromark_with_options(r###"- foo
bar
"###, DANGER),
r###"<ul>
<li>
<p>foo</p>
<p>bar</p>
</li>
</ul>
"###,
r###"List items (261)"###
);
assert_eq!(
micromark_with_options(r###"1. foo
```
bar
```
baz
> bam
"###, DANGER),
r###"<ol>
<li>
<p>foo</p>
<pre><code>bar
</code></pre>
<p>baz</p>
<blockquote>
<p>bam</p>
</blockquote>
</li>
</ol>
"###,
r###"List items (262)"###
);
assert_eq!(
micromark_with_options(r###"- Foo
bar
baz
"###, DANGER),
r###"<ul>
<li>
<p>Foo</p>
<pre><code>bar
baz
</code></pre>
</li>
</ul>
"###,
r###"List items (263)"###
);
assert_eq!(
micromark_with_options(r###"123456789. ok
"###, DANGER),
r###"<ol start="123456789">
<li>ok</li>
</ol>
"###,
r###"List items (264)"###
);
assert_eq!(
micromark_with_options(r###"1234567890. not ok
"###, DANGER),
r###"<p>1234567890. not ok</p>
"###,
r###"List items (265)"###
);
assert_eq!(
micromark_with_options(r###"0. ok
"###, DANGER),
r###"<ol start="0">
<li>ok</li>
</ol>
"###,
r###"List items (266)"###
);
assert_eq!(
micromark_with_options(r###"003. ok
"###, DANGER),
r###"<ol start="3">
<li>ok</li>
</ol>
"###,
r###"List items (267)"###
);
assert_eq!(
micromark_with_options(r###"-1. not ok
"###, DANGER),
r###"<p>-1. not ok</p>
"###,
r###"List items (268)"###
);
assert_eq!(
micromark_with_options(r###"- foo
bar
"###, DANGER),
r###"<ul>
<li>
<p>foo</p>
<pre><code>bar
</code></pre>
</li>
</ul>
"###,
r###"List items (269)"###
);
assert_eq!(
micromark_with_options(r###" 10. foo
bar
"###, DANGER),
r###"<ol start="10">
<li>
<p>foo</p>
<pre><code>bar
</code></pre>
</li>
</ol>
"###,
r###"List items (270)"###
);
assert_eq!(
micromark_with_options(r###" indented code
paragraph
more code
"###, DANGER),
r###"<pre><code>indented code
</code></pre>
<p>paragraph</p>
<pre><code>more code
</code></pre>
"###,
r###"List items (271)"###
);
assert_eq!(
micromark_with_options(r###"1. indented code
paragraph
more code
"###, DANGER),
r###"<ol>
<li>
<pre><code>indented code
</code></pre>
<p>paragraph</p>
<pre><code>more code
</code></pre>
</li>
</ol>
"###,
r###"List items (272)"###
);
assert_eq!(
micromark_with_options(r###"1. indented code
paragraph
more code
"###, DANGER),
r###"<ol>
<li>
<pre><code> indented code
</code></pre>
<p>paragraph</p>
<pre><code>more code
</code></pre>
</li>
</ol>
"###,
r###"List items (273)"###
);
assert_eq!(
micromark_with_options(r###" foo
bar
"###, DANGER),
r###"<p>foo</p>
<p>bar</p>
"###,
r###"List items (274)"###
);
assert_eq!(
micromark_with_options(r###"- foo
bar
"###, DANGER),
r###"<ul>
<li>foo</li>
</ul>
<p>bar</p>
"###,
r###"List items (275)"###
);
assert_eq!(
micromark_with_options(r###"- foo
bar
"###, DANGER),
r###"<ul>
<li>
<p>foo</p>
<p>bar</p>
</li>
</ul>
"###,
r###"List items (276)"###
);
assert_eq!(
micromark_with_options(r###"-
foo
-
```
bar
```
-
baz
"###, DANGER),
r###"<ul>
<li>foo</li>
<li>
<pre><code>bar
</code></pre>
</li>
<li>
<pre><code>baz
</code></pre>
</li>
</ul>
"###,
r###"List items (277)"###
);
assert_eq!(
micromark_with_options(r###"-
foo
"###, DANGER),
r###"<ul>
<li>foo</li>
</ul>
"###,
r###"List items (278)"###
);
assert_eq!(
micromark_with_options(r###"-
foo
"###, DANGER),
r###"<ul>
<li></li>
</ul>
<p>foo</p>
"###,
r###"List items (279)"###
);
assert_eq!(
micromark_with_options(r###"- foo
-
- bar
"###, DANGER),
r###"<ul>
<li>foo</li>
<li></li>
<li>bar</li>
</ul>
"###,
r###"List items (280)"###
);
assert_eq!(
micromark_with_options(r###"- foo
-
- bar
"###, DANGER),
r###"<ul>
<li>foo</li>
<li></li>
<li>bar</li>
</ul>
"###,
r###"List items (281)"###
);
assert_eq!(
micromark_with_options(r###"1. foo
2.
3. bar
"###, DANGER),
r###"<ol>
<li>foo</li>
<li></li>
<li>bar</li>
</ol>
"###,
r###"List items (282)"###
);
// To do: some bug w/ line endings and empty items.
// assert_eq!(
// micromark_with_options(r###"*
// "###, DANGER),
// r###"<ul>
// <li></li>
// </ul>
// "###,
// r###"List items (283)"###
// );
assert_eq!(
micromark_with_options(r###"foo
*
foo
1.
"###, DANGER),
r###"<p>foo
*</p>
<p>foo
1.</p>
"###,
r###"List items (284)"###
);
assert_eq!(
micromark_with_options(r###" 1. A paragraph
with two lines.
indented code
> A block quote.
"###, DANGER),
r###"<ol>
<li>
<p>A paragraph
with two lines.</p>
<pre><code>indented code
</code></pre>
<blockquote>
<p>A block quote.</p>
</blockquote>
</li>
</ol>
"###,
r###"List items (285)"###
);
assert_eq!(
micromark_with_options(r###" 1. A paragraph
with two lines.
indented code
> A block quote.
"###, DANGER),
r###"<ol>
<li>
<p>A paragraph
with two lines.</p>
<pre><code>indented code
</code></pre>
<blockquote>
<p>A block quote.</p>
</blockquote>
</li>
</ol>
"###,
r###"List items (286)"###
);
assert_eq!(
micromark_with_options(r###" 1. A paragraph
with two lines.
indented code
> A block quote.
"###, DANGER),
r###"<ol>
<li>
<p>A paragraph
with two lines.</p>
<pre><code>indented code
</code></pre>
<blockquote>
<p>A block quote.</p>
</blockquote>
</li>
</ol>
"###,
r###"List items (287)"###
);
assert_eq!(
micromark_with_options(r###" 1. A paragraph
with two lines.
indented code
> A block quote.
"###, DANGER),
r###"<pre><code>1. A paragraph
with two lines.
indented code
> A block quote.
</code></pre>
"###,
r###"List items (288)"###
);
assert_eq!(
micromark_with_options(r###" 1. A paragraph
with two lines.
indented code
> A block quote.
"###, DANGER),
r###"<ol>
<li>
<p>A paragraph
with two lines.</p>
<pre><code>indented code
</code></pre>
<blockquote>
<p>A block quote.</p>
</blockquote>
</li>
</ol>
"###,
r###"List items (289)"###
);
// To do: Some lazy bug.
// assert_eq!(
// micromark_with_options(r###" 1. A paragraph
// with two lines.
// "###, DANGER),
// r###"<ol>
// <li>A paragraph
// with two lines.</li>
// </ol>
// "###,
// r###"List items (290)"###
// );
// To do: Some lazy bug.
// assert_eq!(
// micromark_with_options(r###"> 1. > Blockquote
// continued here.
// "###, DANGER),
// r###"<blockquote>
// <ol>
// <li>
// <blockquote>
// <p>Blockquote
// continued here.</p>
// </blockquote>
// </li>
// </ol>
// </blockquote>
// "###,
// r###"List items (291)"###
// );
// To do: Some lazy bug.
// assert_eq!(
// micromark_with_options(r###"> 1. > Blockquote
// > continued here.
// "###, DANGER),
// r###"<blockquote>
// <ol>
// <li>
// <blockquote>
// <p>Blockquote
// continued here.</p>
// </blockquote>
// </li>
// </ol>
// </blockquote>
// "###,
// r###"List items (292)"###
// );
assert_eq!(
micromark_with_options(r###"- foo
- bar
- baz
- boo
"###, DANGER),
r###"<ul>
<li>foo
<ul>
<li>bar
<ul>
<li>baz
<ul>
<li>boo</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
"###,
r###"List items (293)"###
);
assert_eq!(
micromark_with_options(r###"- foo
- bar
- baz
- boo
"###, DANGER),
r###"<ul>
<li>foo</li>
<li>bar</li>
<li>baz</li>
<li>boo</li>
</ul>
"###,
r###"List items (294)"###
);
assert_eq!(
micromark_with_options(r###"10) foo
- bar
"###, DANGER),
r###"<ol start="10">
<li>foo
<ul>
<li>bar</li>
</ul>
</li>
</ol>
"###,
r###"List items (295)"###
);
assert_eq!(
micromark_with_options(r###"10) foo
- bar
"###, DANGER),
r###"<ol start="10">
<li>foo</li>
</ol>
<ul>
<li>bar</li>
</ul>
"###,
r###"List items (296)"###
);
assert_eq!(
micromark_with_options(r###"- - foo
"###, DANGER),
r###"<ul>
<li>
<ul>
<li>foo</li>
</ul>
</li>
</ul>
"###,
r###"List items (297)"###
);
assert_eq!(
micromark_with_options(r###"1. - 2. foo
"###, DANGER),
r###"<ol>
<li>
<ul>
<li>
<ol start="2">
<li>foo</li>
</ol>
</li>
</ul>
</li>
</ol>
"###,
r###"List items (298)"###
);
assert_eq!(
micromark_with_options(r###"- # Foo
- Bar
---
baz
"###, DANGER),
r###"<ul>
<li>
<h1>Foo</h1>
</li>
<li>
<h2>Bar</h2>
baz</li>
</ul>
"###,
r###"List items (299)"###
);
assert_eq!(
micromark_with_options(r###"- foo
- bar
+ baz
"###, DANGER),
r###"<ul>
<li>foo</li>
<li>bar</li>
</ul>
<ul>
<li>baz</li>
</ul>
"###,
r###"Lists (300)"###
);
assert_eq!(
micromark_with_options(r###"1. foo
2. bar
3) baz
"###, DANGER),
r###"<ol>
<li>foo</li>
<li>bar</li>
</ol>
<ol start="3">
<li>baz</li>
</ol>
"###,
r###"Lists (301)"###
);
assert_eq!(
micromark_with_options(r###"Foo
- bar
- baz
"###, DANGER),
r###"<p>Foo</p>
<ul>
<li>bar</li>
<li>baz</li>
</ul>
"###,
r###"Lists (302)"###
);
// To do: Some interruption bug.
// assert_eq!(
// micromark_with_options(r###"The number of windows in my house is
// 14. The number of doors is 6.
// "###, DANGER),
// r###"<p>The number of windows in my house is
// 14. The number of doors is 6.</p>
// "###,
// r###"Lists (303)"###
// );
assert_eq!(
micromark_with_options(r###"The number of windows in my house is
1. The number of doors is 6.
"###, DANGER),
r###"<p>The number of windows in my house is</p>
<ol>
<li>The number of doors is 6.</li>
</ol>
"###,
r###"Lists (304)"###
);
assert_eq!(
micromark_with_options(r###"- foo
- bar
- baz
"###, DANGER),
r###"<ul>
<li>
<p>foo</p>
</li>
<li>
<p>bar</p>
</li>
<li>
<p>baz</p>
</li>
</ul>
"###,
r###"Lists (305)"###
);
assert_eq!(
micromark_with_options(r###"- foo
- bar
- baz
bim
"###, DANGER),
r###"<ul>
<li>foo
<ul>
<li>bar
<ul>
<li>
<p>baz</p>
<p>bim</p>
</li>
</ul>
</li>
</ul>
</li>
</ul>
"###,
r###"Lists (306)"###
);
assert_eq!(
micromark_with_options(r###"- foo
- bar
<!-- -->
- baz
- bim
"###, DANGER),
r###"<ul>
<li>foo</li>
<li>bar</li>
</ul>
<!-- -->
<ul>
<li>baz</li>
<li>bim</li>
</ul>
"###,
r###"Lists (307)"###
);
assert_eq!(
micromark_with_options(r###"- foo
notcode
- foo
<!-- -->
code
"###, DANGER),
r###"<ul>
<li>
<p>foo</p>
<p>notcode</p>
</li>
<li>
<p>foo</p>
</li>
</ul>
<!-- -->
<pre><code>code
</code></pre>
"###,
r###"Lists (308)"###
);
assert_eq!(
micromark_with_options(r###"- a
- b
- c
- d
- e
- f
- g
"###, DANGER),
r###"<ul>
<li>a</li>
<li>b</li>
<li>c</li>
<li>d</li>
<li>e</li>
<li>f</li>
<li>g</li>
</ul>
"###,
r###"Lists (309)"###
);
assert_eq!(
micromark_with_options(r###"1. a
2. b
3. c
"###, DANGER),
r###"<ol>
<li>
<p>a</p>
</li>
<li>
<p>b</p>
</li>
<li>
<p>c</p>
</li>
</ol>
"###,
r###"Lists (310)"###
);
// To do: Some interruption bug.
// assert_eq!(
// micromark_with_options(r###"- a
// - b
// - c
// - d
// - e
// "###, DANGER),
// r###"<ul>
// <li>a</li>
// <li>b</li>
// <li>c</li>
// <li>d
// - e</li>
// </ul>
// "###,
// r###"Lists (311)"###
// );
assert_eq!(
micromark_with_options(r###"1. a
2. b
3. c
"###, DANGER),
r###"<ol>
<li>
<p>a</p>
</li>
<li>
<p>b</p>
</li>
</ol>
<pre><code>3. c
</code></pre>
"###,
r###"Lists (312)"###
);
assert_eq!(
micromark_with_options(r###"- a
- b
- c
"###, DANGER),
r###"<ul>
<li>
<p>a</p>
</li>
<li>
<p>b</p>
</li>
<li>
<p>c</p>
</li>
</ul>
"###,
r###"Lists (313)"###
);
assert_eq!(
micromark_with_options(r###"* a
*
* c
"###, DANGER),
r###"<ul>
<li>
<p>a</p>
</li>
<li></li>
<li>
<p>c</p>
</li>
</ul>
"###,
r###"Lists (314)"###
);
assert_eq!(
micromark_with_options(r###"- a
- b
c
- d
"###, DANGER),
r###"<ul>
<li>
<p>a</p>
</li>
<li>
<p>b</p>
<p>c</p>
</li>
<li>
<p>d</p>
</li>
</ul>
"###,
r###"Lists (315)"###
);
assert_eq!(
micromark_with_options(r###"- a
- b
[ref]: /url
- d
"###, DANGER),
r###"<ul>
<li>
<p>a</p>
</li>
<li>
<p>b</p>
</li>
<li>
<p>d</p>
</li>
</ul>
"###,
r###"Lists (316)"###
);
assert_eq!(
micromark_with_options(r###"- a
- ```
b
```
- c
"###, DANGER),
r###"<ul>
<li>a</li>
<li>
<pre><code>b
</code></pre>
</li>
<li>c</li>
</ul>
"###,
r###"Lists (317)"###
);
assert_eq!(
micromark_with_options(r###"- a
- b
c
- d
"###, DANGER),
r###"<ul>
<li>a
<ul>
<li>
<p>b</p>
<p>c</p>
</li>
</ul>
</li>
<li>d</li>
</ul>
"###,
r###"Lists (318)"###
);
assert_eq!(
micromark_with_options(r###"* a
> b
>
* c
"###, DANGER),
r###"<ul>
<li>a
<blockquote>
<p>b</p>
</blockquote>
</li>
<li>c</li>
</ul>
"###,
r###"Lists (319)"###
);
assert_eq!(
micromark_with_options(r###"- a
> b
```
c
```
- d
"###, DANGER),
r###"<ul>
<li>a
<blockquote>
<p>b</p>
</blockquote>
<pre><code>c
</code></pre>
</li>
<li>d</li>
</ul>
"###,
r###"Lists (320)"###
);
assert_eq!(
micromark_with_options(r###"- a
"###, DANGER),
r###"<ul>
<li>a</li>
</ul>
"###,
r###"Lists (321)"###
);
assert_eq!(
micromark_with_options(r###"- a
- b
"###, DANGER),
r###"<ul>
<li>a
<ul>
<li>b</li>
</ul>
</li>
</ul>
"###,
r###"Lists (322)"###
);
assert_eq!(
micromark_with_options(r###"1. ```
foo
```
bar
"###, DANGER),
r###"<ol>
<li>
<pre><code>foo
</code></pre>
<p>bar</p>
</li>
</ol>
"###,
r###"Lists (323)"###
);
assert_eq!(
micromark_with_options(r###"* foo
* bar
baz
"###, DANGER),
r###"<ul>
<li>
<p>foo</p>
<ul>
<li>bar</li>
</ul>
<p>baz</p>
</li>
</ul>
"###,
r###"Lists (324)"###
);
assert_eq!(
micromark_with_options(r###"- a
- b
- c
- d
- e
- f
"###, DANGER),
r###"<ul>
<li>
<p>a</p>
<ul>
<li>b</li>
<li>c</li>
</ul>
</li>
<li>
<p>d</p>
<ul>
<li>e</li>
<li>f</li>
</ul>
</li>
</ul>
"###,
r###"Lists (325)"###
);
assert_eq!(
micromark_with_options(r###"`hi`lo`
"###, DANGER),
r###"<p><code>hi</code>lo`</p>
"###,
r###"Inlines (326)"###
);
assert_eq!(
micromark_with_options(r###"`foo`
"###, DANGER),
r###"<p><code>foo</code></p>
"###,
r###"Code spans (327)"###
);
assert_eq!(
micromark_with_options(r###"`` foo ` bar ``
"###, DANGER),
r###"<p><code>foo ` bar</code></p>
"###,
r###"Code spans (328)"###
);
assert_eq!(
micromark_with_options(r###"` `` `
"###, DANGER),
r###"<p><code>``</code></p>
"###,
r###"Code spans (329)"###
);
assert_eq!(
micromark_with_options(r###"` `` `
"###, DANGER),
r###"<p><code> `` </code></p>
"###,
r###"Code spans (330)"###
);
assert_eq!(
micromark_with_options(r###"` a`
"###, DANGER),
r###"<p><code> a</code></p>
"###,
r###"Code spans (331)"###
);
assert_eq!(
micromark_with_options(r###"` b `
"###, DANGER),
r###"<p><code> b </code></p>
"###,
r###"Code spans (332)"###
);
assert_eq!(
micromark_with_options(r###"` `
` `
"###, DANGER),
r###"<p><code> </code>
<code> </code></p>
"###,
r###"Code spans (333)"###
);
assert_eq!(
micromark_with_options(r###"``
foo
bar
baz
``
"###, DANGER),
r###"<p><code>foo bar baz</code></p>
"###,
r###"Code spans (334)"###
);
assert_eq!(
micromark_with_options(r###"``
foo
``
"###, DANGER),
r###"<p><code>foo </code></p>
"###,
r###"Code spans (335)"###
);
assert_eq!(
micromark_with_options(r###"`foo bar
baz`
"###, DANGER),
r###"<p><code>foo bar baz</code></p>
"###,
r###"Code spans (336)"###
);
assert_eq!(
micromark_with_options(r###"`foo\`bar`
"###, DANGER),
r###"<p><code>foo\</code>bar`</p>
"###,
r###"Code spans (337)"###
);
assert_eq!(
micromark_with_options(r###"``foo`bar``
"###, DANGER),
r###"<p><code>foo`bar</code></p>
"###,
r###"Code spans (338)"###
);
assert_eq!(
micromark_with_options(r###"` foo `` bar `
"###, DANGER),
r###"<p><code>foo `` bar</code></p>
"###,
r###"Code spans (339)"###
);
assert_eq!(
micromark_with_options(r###"*foo`*`
"###, DANGER),
r###"<p>*foo<code>*</code></p>
"###,
r###"Code spans (340)"###
);
assert_eq!(
micromark_with_options(r###"[not a `link](/foo`)
"###, DANGER),
r###"<p>[not a <code>link](/foo</code>)</p>
"###,
r###"Code spans (341)"###
);
assert_eq!(
micromark_with_options(r###"`<a href="`">`
"###, DANGER),
r###"<p><code><a href="</code>">`</p>
"###,
r###"Code spans (342)"###
);
assert_eq!(
micromark_with_options(r###"<a href="`">`
"###, DANGER),
r###"<p><a href="`">`</p>
"###,
r###"Code spans (343)"###
);
assert_eq!(
micromark_with_options(r###"`<http://foo.bar.`baz>`
"###, DANGER),
r###"<p><code><http://foo.bar.</code>baz>`</p>
"###,
r###"Code spans (344)"###
);
assert_eq!(
micromark_with_options(r###"<http://foo.bar.`baz>`
"###, DANGER),
r###"<p><a href="http://foo.bar.%60baz">http://foo.bar.`baz</a>`</p>
"###,
r###"Code spans (345)"###
);
assert_eq!(
micromark_with_options(r###"```foo``
"###, DANGER),
r###"<p>```foo``</p>
"###,
r###"Code spans (346)"###
);
assert_eq!(
micromark_with_options(r###"`foo
"###, DANGER),
r###"<p>`foo</p>
"###,
r###"Code spans (347)"###
);
assert_eq!(
micromark_with_options(r###"`foo``bar``
"###, DANGER),
r###"<p>`foo<code>bar</code></p>
"###,
r###"Code spans (348)"###
);
assert_eq!(
micromark_with_options(r###"*foo bar*
"###, DANGER),
r###"<p><em>foo bar</em></p>
"###,
r###"Emphasis and strong emphasis (349)"###
);
assert_eq!(
micromark_with_options(r###"a * foo bar*
"###, DANGER),
r###"<p>a * foo bar*</p>
"###,
r###"Emphasis and strong emphasis (350)"###
);
assert_eq!(
micromark_with_options(r###"a*"foo"*
"###, DANGER),
r###"<p>a*"foo"*</p>
"###,
r###"Emphasis and strong emphasis (351)"###
);
assert_eq!(
micromark_with_options(r###"* a *
"###, DANGER),
r###"<p>* a *</p>
"###,
r###"Emphasis and strong emphasis (352)"###
);
assert_eq!(
micromark_with_options(r###"foo*bar*
"###, DANGER),
r###"<p>foo<em>bar</em></p>
"###,
r###"Emphasis and strong emphasis (353)"###
);
assert_eq!(
micromark_with_options(r###"5*6*78
"###, DANGER),
r###"<p>5<em>6</em>78</p>
"###,
r###"Emphasis and strong emphasis (354)"###
);
assert_eq!(
micromark_with_options(r###"_foo bar_
"###, DANGER),
r###"<p><em>foo bar</em></p>
"###,
r###"Emphasis and strong emphasis (355)"###
);
assert_eq!(
micromark_with_options(r###"_ foo bar_
"###, DANGER),
r###"<p>_ foo bar_</p>
"###,
r###"Emphasis and strong emphasis (356)"###
);
assert_eq!(
micromark_with_options(r###"a_"foo"_
"###, DANGER),
r###"<p>a_"foo"_</p>
"###,
r###"Emphasis and strong emphasis (357)"###
);
assert_eq!(
micromark_with_options(r###"foo_bar_
"###, DANGER),
r###"<p>foo_bar_</p>
"###,
r###"Emphasis and strong emphasis (358)"###
);
assert_eq!(
micromark_with_options(r###"5_6_78
"###, DANGER),
r###"<p>5_6_78</p>
"###,
r###"Emphasis and strong emphasis (359)"###
);
assert_eq!(
micromark_with_options(r###"пристаням_стремятся_
"###, DANGER),
r###"<p>пристаням_стремятся_</p>
"###,
r###"Emphasis and strong emphasis (360)"###
);
assert_eq!(
micromark_with_options(r###"aa_"bb"_cc
"###, DANGER),
r###"<p>aa_"bb"_cc</p>
"###,
r###"Emphasis and strong emphasis (361)"###
);
assert_eq!(
micromark_with_options(r###"foo-_(bar)_
"###, DANGER),
r###"<p>foo-<em>(bar)</em></p>
"###,
r###"Emphasis and strong emphasis (362)"###
);
assert_eq!(
micromark_with_options(r###"_foo*
"###, DANGER),
r###"<p>_foo*</p>
"###,
r###"Emphasis and strong emphasis (363)"###
);
assert_eq!(
micromark_with_options(r###"*foo bar *
"###, DANGER),
r###"<p>*foo bar *</p>
"###,
r###"Emphasis and strong emphasis (364)"###
);
assert_eq!(
micromark_with_options(r###"*foo bar
*
"###, DANGER),
r###"<p>*foo bar
*</p>
"###,
r###"Emphasis and strong emphasis (365)"###
);
assert_eq!(
micromark_with_options(r###"*(*foo)
"###, DANGER),
r###"<p>*(*foo)</p>
"###,
r###"Emphasis and strong emphasis (366)"###
);
assert_eq!(
micromark_with_options(r###"*(*foo*)*
"###, DANGER),
r###"<p><em>(<em>foo</em>)</em></p>
"###,
r###"Emphasis and strong emphasis (367)"###
);
assert_eq!(
micromark_with_options(r###"*foo*bar
"###, DANGER),
r###"<p><em>foo</em>bar</p>
"###,
r###"Emphasis and strong emphasis (368)"###
);
assert_eq!(
micromark_with_options(r###"_foo bar _
"###, DANGER),
r###"<p>_foo bar _</p>
"###,
r###"Emphasis and strong emphasis (369)"###
);
assert_eq!(
micromark_with_options(r###"_(_foo)
"###, DANGER),
r###"<p>_(_foo)</p>
"###,
r###"Emphasis and strong emphasis (370)"###
);
assert_eq!(
micromark_with_options(r###"_(_foo_)_
"###, DANGER),
r###"<p><em>(<em>foo</em>)</em></p>
"###,
r###"Emphasis and strong emphasis (371)"###
);
assert_eq!(
micromark_with_options(r###"_foo_bar
"###, DANGER),
r###"<p>_foo_bar</p>
"###,
r###"Emphasis and strong emphasis (372)"###
);
assert_eq!(
micromark_with_options(r###"_пристаням_стремятся
"###, DANGER),
r###"<p>_пристаням_стремятся</p>
"###,
r###"Emphasis and strong emphasis (373)"###
);
assert_eq!(
micromark_with_options(r###"_foo_bar_baz_
"###, DANGER),
r###"<p><em>foo_bar_baz</em></p>
"###,
r###"Emphasis and strong emphasis (374)"###
);
assert_eq!(
micromark_with_options(r###"_(bar)_.
"###, DANGER),
r###"<p><em>(bar)</em>.</p>
"###,
r###"Emphasis and strong emphasis (375)"###
);
assert_eq!(
micromark_with_options(r###"**foo bar**
"###, DANGER),
r###"<p><strong>foo bar</strong></p>
"###,
r###"Emphasis and strong emphasis (376)"###
);
assert_eq!(
micromark_with_options(r###"** foo bar**
"###, DANGER),
r###"<p>** foo bar**</p>
"###,
r###"Emphasis and strong emphasis (377)"###
);
assert_eq!(
micromark_with_options(r###"a**"foo"**
"###, DANGER),
r###"<p>a**"foo"**</p>
"###,
r###"Emphasis and strong emphasis (378)"###
);
assert_eq!(
micromark_with_options(r###"foo**bar**
"###, DANGER),
r###"<p>foo<strong>bar</strong></p>
"###,
r###"Emphasis and strong emphasis (379)"###
);
assert_eq!(
micromark_with_options(r###"__foo bar__
"###, DANGER),
r###"<p><strong>foo bar</strong></p>
"###,
r###"Emphasis and strong emphasis (380)"###
);
assert_eq!(
micromark_with_options(r###"__ foo bar__
"###, DANGER),
r###"<p>__ foo bar__</p>
"###,
r###"Emphasis and strong emphasis (381)"###
);
assert_eq!(
micromark_with_options(r###"__
foo bar__
"###, DANGER),
r###"<p>__
foo bar__</p>
"###,
r###"Emphasis and strong emphasis (382)"###
);
assert_eq!(
micromark_with_options(r###"a__"foo"__
"###, DANGER),
r###"<p>a__"foo"__</p>
"###,
r###"Emphasis and strong emphasis (383)"###
);
assert_eq!(
micromark_with_options(r###"foo__bar__
"###, DANGER),
r###"<p>foo__bar__</p>
"###,
r###"Emphasis and strong emphasis (384)"###
);
assert_eq!(
micromark_with_options(r###"5__6__78
"###, DANGER),
r###"<p>5__6__78</p>
"###,
r###"Emphasis and strong emphasis (385)"###
);
assert_eq!(
micromark_with_options(r###"пристаням__стремятся__
"###, DANGER),
r###"<p>пристаням__стремятся__</p>
"###,
r###"Emphasis and strong emphasis (386)"###
);
assert_eq!(
micromark_with_options(r###"__foo, __bar__, baz__
"###, DANGER),
r###"<p><strong>foo, <strong>bar</strong>, baz</strong></p>
"###,
r###"Emphasis and strong emphasis (387)"###
);
assert_eq!(
micromark_with_options(r###"foo-__(bar)__
"###, DANGER),
r###"<p>foo-<strong>(bar)</strong></p>
"###,
r###"Emphasis and strong emphasis (388)"###
);
assert_eq!(
micromark_with_options(r###"**foo bar **
"###, DANGER),
r###"<p>**foo bar **</p>
"###,
r###"Emphasis and strong emphasis (389)"###
);
assert_eq!(
micromark_with_options(r###"**(**foo)
"###, DANGER),
r###"<p>**(**foo)</p>
"###,
r###"Emphasis and strong emphasis (390)"###
);
assert_eq!(
micromark_with_options(r###"*(**foo**)*
"###, DANGER),
r###"<p><em>(<strong>foo</strong>)</em></p>
"###,
r###"Emphasis and strong emphasis (391)"###
);
assert_eq!(
micromark_with_options(r###"**Gomphocarpus (*Gomphocarpus physocarpus*, syn.
*Asclepias physocarpa*)**
"###, DANGER),
r###"<p><strong>Gomphocarpus (<em>Gomphocarpus physocarpus</em>, syn.
<em>Asclepias physocarpa</em>)</strong></p>
"###,
r###"Emphasis and strong emphasis (392)"###
);
assert_eq!(
micromark_with_options(r###"**foo "*bar*" foo**
"###, DANGER),
r###"<p><strong>foo "<em>bar</em>" foo</strong></p>
"###,
r###"Emphasis and strong emphasis (393)"###
);
assert_eq!(
micromark_with_options(r###"**foo**bar
"###, DANGER),
r###"<p><strong>foo</strong>bar</p>
"###,
r###"Emphasis and strong emphasis (394)"###
);
assert_eq!(
micromark_with_options(r###"__foo bar __
"###, DANGER),
r###"<p>__foo bar __</p>
"###,
r###"Emphasis and strong emphasis (395)"###
);
assert_eq!(
micromark_with_options(r###"__(__foo)
"###, DANGER),
r###"<p>__(__foo)</p>
"###,
r###"Emphasis and strong emphasis (396)"###
);
assert_eq!(
micromark_with_options(r###"_(__foo__)_
"###, DANGER),
r###"<p><em>(<strong>foo</strong>)</em></p>
"###,
r###"Emphasis and strong emphasis (397)"###
);
assert_eq!(
micromark_with_options(r###"__foo__bar
"###, DANGER),
r###"<p>__foo__bar</p>
"###,
r###"Emphasis and strong emphasis (398)"###
);
assert_eq!(
micromark_with_options(r###"__пристаням__стремятся
"###, DANGER),
r###"<p>__пристаням__стремятся</p>
"###,
r###"Emphasis and strong emphasis (399)"###
);
assert_eq!(
micromark_with_options(r###"__foo__bar__baz__
"###, DANGER),
r###"<p><strong>foo__bar__baz</strong></p>
"###,
r###"Emphasis and strong emphasis (400)"###
);
assert_eq!(
micromark_with_options(r###"__(bar)__.
"###, DANGER),
r###"<p><strong>(bar)</strong>.</p>
"###,
r###"Emphasis and strong emphasis (401)"###
);
assert_eq!(
micromark_with_options(r###"*foo [bar](/url)*
"###, DANGER),
r###"<p><em>foo <a href="/url">bar</a></em></p>
"###,
r###"Emphasis and strong emphasis (402)"###
);
assert_eq!(
micromark_with_options(r###"*foo
bar*
"###, DANGER),
r###"<p><em>foo
bar</em></p>
"###,
r###"Emphasis and strong emphasis (403)"###
);
assert_eq!(
micromark_with_options(r###"_foo __bar__ baz_
"###, DANGER),
r###"<p><em>foo <strong>bar</strong> baz</em></p>
"###,
r###"Emphasis and strong emphasis (404)"###
);
assert_eq!(
micromark_with_options(r###"_foo _bar_ baz_
"###, DANGER),
r###"<p><em>foo <em>bar</em> baz</em></p>
"###,
r###"Emphasis and strong emphasis (405)"###
);
assert_eq!(
micromark_with_options(r###"__foo_ bar_
"###, DANGER),
r###"<p><em><em>foo</em> bar</em></p>
"###,
r###"Emphasis and strong emphasis (406)"###
);
assert_eq!(
micromark_with_options(r###"*foo *bar**
"###, DANGER),
r###"<p><em>foo <em>bar</em></em></p>
"###,
r###"Emphasis and strong emphasis (407)"###
);
assert_eq!(
micromark_with_options(r###"*foo **bar** baz*
"###, DANGER),
r###"<p><em>foo <strong>bar</strong> baz</em></p>
"###,
r###"Emphasis and strong emphasis (408)"###
);
assert_eq!(
micromark_with_options(r###"*foo**bar**baz*
"###, DANGER),
r###"<p><em>foo<strong>bar</strong>baz</em></p>
"###,
r###"Emphasis and strong emphasis (409)"###
);
assert_eq!(
micromark_with_options(r###"*foo**bar*
"###, DANGER),
r###"<p><em>foo**bar</em></p>
"###,
r###"Emphasis and strong emphasis (410)"###
);
assert_eq!(
micromark_with_options(r###"***foo** bar*
"###, DANGER),
r###"<p><em><strong>foo</strong> bar</em></p>
"###,
r###"Emphasis and strong emphasis (411)"###
);
assert_eq!(
micromark_with_options(r###"*foo **bar***
"###, DANGER),
r###"<p><em>foo <strong>bar</strong></em></p>
"###,
r###"Emphasis and strong emphasis (412)"###
);
assert_eq!(
micromark_with_options(r###"*foo**bar***
"###, DANGER),
r###"<p><em>foo<strong>bar</strong></em></p>
"###,
r###"Emphasis and strong emphasis (413)"###
);
assert_eq!(
micromark_with_options(r###"foo***bar***baz
"###, DANGER),
r###"<p>foo<em><strong>bar</strong></em>baz</p>
"###,
r###"Emphasis and strong emphasis (414)"###
);
assert_eq!(
micromark_with_options(r###"foo******bar*********baz
"###, DANGER),
r###"<p>foo<strong><strong><strong>bar</strong></strong></strong>***baz</p>
"###,
r###"Emphasis and strong emphasis (415)"###
);
assert_eq!(
micromark_with_options(r###"*foo **bar *baz* bim** bop*
"###, DANGER),
r###"<p><em>foo <strong>bar <em>baz</em> bim</strong> bop</em></p>
"###,
r###"Emphasis and strong emphasis (416)"###
);
assert_eq!(
micromark_with_options(r###"*foo [*bar*](/url)*
"###, DANGER),
r###"<p><em>foo <a href="/url"><em>bar</em></a></em></p>
"###,
r###"Emphasis and strong emphasis (417)"###
);
assert_eq!(
micromark_with_options(r###"** is not an empty emphasis
"###, DANGER),
r###"<p>** is not an empty emphasis</p>
"###,
r###"Emphasis and strong emphasis (418)"###
);
assert_eq!(
micromark_with_options(r###"**** is not an empty strong emphasis
"###, DANGER),
r###"<p>**** is not an empty strong emphasis</p>
"###,
r###"Emphasis and strong emphasis (419)"###
);
assert_eq!(
micromark_with_options(r###"**foo [bar](/url)**
"###, DANGER),
r###"<p><strong>foo <a href="/url">bar</a></strong></p>
"###,
r###"Emphasis and strong emphasis (420)"###
);
assert_eq!(
micromark_with_options(r###"**foo
bar**
"###, DANGER),
r###"<p><strong>foo
bar</strong></p>
"###,
r###"Emphasis and strong emphasis (421)"###
);
assert_eq!(
micromark_with_options(r###"__foo _bar_ baz__
"###, DANGER),
r###"<p><strong>foo <em>bar</em> baz</strong></p>
"###,
r###"Emphasis and strong emphasis (422)"###
);
assert_eq!(
micromark_with_options(r###"__foo __bar__ baz__
"###, DANGER),
r###"<p><strong>foo <strong>bar</strong> baz</strong></p>
"###,
r###"Emphasis and strong emphasis (423)"###
);
assert_eq!(
micromark_with_options(r###"____foo__ bar__
"###, DANGER),
r###"<p><strong><strong>foo</strong> bar</strong></p>
"###,
r###"Emphasis and strong emphasis (424)"###
);
assert_eq!(
micromark_with_options(r###"**foo **bar****
"###, DANGER),
r###"<p><strong>foo <strong>bar</strong></strong></p>
"###,
r###"Emphasis and strong emphasis (425)"###
);
assert_eq!(
micromark_with_options(r###"**foo *bar* baz**
"###, DANGER),
r###"<p><strong>foo <em>bar</em> baz</strong></p>
"###,
r###"Emphasis and strong emphasis (426)"###
);
assert_eq!(
micromark_with_options(r###"**foo*bar*baz**
"###, DANGER),
r###"<p><strong>foo<em>bar</em>baz</strong></p>
"###,
r###"Emphasis and strong emphasis (427)"###
);
assert_eq!(
micromark_with_options(r###"***foo* bar**
"###, DANGER),
r###"<p><strong><em>foo</em> bar</strong></p>
"###,
r###"Emphasis and strong emphasis (428)"###
);
assert_eq!(
micromark_with_options(r###"**foo *bar***
"###, DANGER),
r###"<p><strong>foo <em>bar</em></strong></p>
"###,
r###"Emphasis and strong emphasis (429)"###
);
assert_eq!(
micromark_with_options(r###"**foo *bar **baz**
bim* bop**
"###, DANGER),
r###"<p><strong>foo <em>bar <strong>baz</strong>
bim</em> bop</strong></p>
"###,
r###"Emphasis and strong emphasis (430)"###
);
assert_eq!(
micromark_with_options(r###"**foo [*bar*](/url)**
"###, DANGER),
r###"<p><strong>foo <a href="/url"><em>bar</em></a></strong></p>
"###,
r###"Emphasis and strong emphasis (431)"###
);
assert_eq!(
micromark_with_options(r###"__ is not an empty emphasis
"###, DANGER),
r###"<p>__ is not an empty emphasis</p>
"###,
r###"Emphasis and strong emphasis (432)"###
);
assert_eq!(
micromark_with_options(r###"____ is not an empty strong emphasis
"###, DANGER),
r###"<p>____ is not an empty strong emphasis</p>
"###,
r###"Emphasis and strong emphasis (433)"###
);
assert_eq!(
micromark_with_options(r###"foo ***
"###, DANGER),
r###"<p>foo ***</p>
"###,
r###"Emphasis and strong emphasis (434)"###
);
assert_eq!(
micromark_with_options(r###"foo *\**
"###, DANGER),
r###"<p>foo <em>*</em></p>
"###,
r###"Emphasis and strong emphasis (435)"###
);
assert_eq!(
micromark_with_options(r###"foo *_*
"###, DANGER),
r###"<p>foo <em>_</em></p>
"###,
r###"Emphasis and strong emphasis (436)"###
);
assert_eq!(
micromark_with_options(r###"foo *****
"###, DANGER),
r###"<p>foo *****</p>
"###,
r###"Emphasis and strong emphasis (437)"###
);
assert_eq!(
micromark_with_options(r###"foo **\***
"###, DANGER),
r###"<p>foo <strong>*</strong></p>
"###,
r###"Emphasis and strong emphasis (438)"###
);
assert_eq!(
micromark_with_options(r###"foo **_**
"###, DANGER),
r###"<p>foo <strong>_</strong></p>
"###,
r###"Emphasis and strong emphasis (439)"###
);
assert_eq!(
micromark_with_options(r###"**foo*
"###, DANGER),
r###"<p>*<em>foo</em></p>
"###,
r###"Emphasis and strong emphasis (440)"###
);
assert_eq!(
micromark_with_options(r###"*foo**
"###, DANGER),
r###"<p><em>foo</em>*</p>
"###,
r###"Emphasis and strong emphasis (441)"###
);
assert_eq!(
micromark_with_options(r###"***foo**
"###, DANGER),
r###"<p>*<strong>foo</strong></p>
"###,
r###"Emphasis and strong emphasis (442)"###
);
assert_eq!(
micromark_with_options(r###"****foo*
"###, DANGER),
r###"<p>***<em>foo</em></p>
"###,
r###"Emphasis and strong emphasis (443)"###
);
assert_eq!(
micromark_with_options(r###"**foo***
"###, DANGER),
r###"<p><strong>foo</strong>*</p>
"###,
r###"Emphasis and strong emphasis (444)"###
);
assert_eq!(
micromark_with_options(r###"*foo****
"###, DANGER),
r###"<p><em>foo</em>***</p>
"###,
r###"Emphasis and strong emphasis (445)"###
);
assert_eq!(
micromark_with_options(r###"foo ___
"###, DANGER),
r###"<p>foo ___</p>
"###,
r###"Emphasis and strong emphasis (446)"###
);
assert_eq!(
micromark_with_options(r###"foo _\__
"###, DANGER),
r###"<p>foo <em>_</em></p>
"###,
r###"Emphasis and strong emphasis (447)"###
);
assert_eq!(
micromark_with_options(r###"foo _*_
"###, DANGER),
r###"<p>foo <em>*</em></p>
"###,
r###"Emphasis and strong emphasis (448)"###
);
assert_eq!(
micromark_with_options(r###"foo _____
"###, DANGER),
r###"<p>foo _____</p>
"###,
r###"Emphasis and strong emphasis (449)"###
);
assert_eq!(
micromark_with_options(r###"foo __\___
"###, DANGER),
r###"<p>foo <strong>_</strong></p>
"###,
r###"Emphasis and strong emphasis (450)"###
);
assert_eq!(
micromark_with_options(r###"foo __*__
"###, DANGER),
r###"<p>foo <strong>*</strong></p>
"###,
r###"Emphasis and strong emphasis (451)"###
);
assert_eq!(
micromark_with_options(r###"__foo_
"###, DANGER),
r###"<p>_<em>foo</em></p>
"###,
r###"Emphasis and strong emphasis (452)"###
);
assert_eq!(
micromark_with_options(r###"_foo__
"###, DANGER),
r###"<p><em>foo</em>_</p>
"###,
r###"Emphasis and strong emphasis (453)"###
);
assert_eq!(
micromark_with_options(r###"___foo__
"###, DANGER),
r###"<p>_<strong>foo</strong></p>
"###,
r###"Emphasis and strong emphasis (454)"###
);
assert_eq!(
micromark_with_options(r###"____foo_
"###, DANGER),
r###"<p>___<em>foo</em></p>
"###,
r###"Emphasis and strong emphasis (455)"###
);
assert_eq!(
micromark_with_options(r###"__foo___
"###, DANGER),
r###"<p><strong>foo</strong>_</p>
"###,
r###"Emphasis and strong emphasis (456)"###
);
assert_eq!(
micromark_with_options(r###"_foo____
"###, DANGER),
r###"<p><em>foo</em>___</p>
"###,
r###"Emphasis and strong emphasis (457)"###
);
assert_eq!(
micromark_with_options(r###"**foo**
"###, DANGER),
r###"<p><strong>foo</strong></p>
"###,
r###"Emphasis and strong emphasis (458)"###
);
assert_eq!(
micromark_with_options(r###"*_foo_*
"###, DANGER),
r###"<p><em><em>foo</em></em></p>
"###,
r###"Emphasis and strong emphasis (459)"###
);
assert_eq!(
micromark_with_options(r###"__foo__
"###, DANGER),
r###"<p><strong>foo</strong></p>
"###,
r###"Emphasis and strong emphasis (460)"###
);
assert_eq!(
micromark_with_options(r###"_*foo*_
"###, DANGER),
r###"<p><em><em>foo</em></em></p>
"###,
r###"Emphasis and strong emphasis (461)"###
);
assert_eq!(
micromark_with_options(r###"****foo****
"###, DANGER),
r###"<p><strong><strong>foo</strong></strong></p>
"###,
r###"Emphasis and strong emphasis (462)"###
);
assert_eq!(
micromark_with_options(r###"____foo____
"###, DANGER),
r###"<p><strong><strong>foo</strong></strong></p>
"###,
r###"Emphasis and strong emphasis (463)"###
);
assert_eq!(
micromark_with_options(r###"******foo******
"###, DANGER),
r###"<p><strong><strong><strong>foo</strong></strong></strong></p>
"###,
r###"Emphasis and strong emphasis (464)"###
);
assert_eq!(
micromark_with_options(r###"***foo***
"###, DANGER),
r###"<p><em><strong>foo</strong></em></p>
"###,
r###"Emphasis and strong emphasis (465)"###
);
assert_eq!(
micromark_with_options(r###"_____foo_____
"###, DANGER),
r###"<p><em><strong><strong>foo</strong></strong></em></p>
"###,
r###"Emphasis and strong emphasis (466)"###
);
assert_eq!(
micromark_with_options(r###"*foo _bar* baz_
"###, DANGER),
r###"<p><em>foo _bar</em> baz_</p>
"###,
r###"Emphasis and strong emphasis (467)"###
);
assert_eq!(
micromark_with_options(r###"*foo __bar *baz bim__ bam*
"###, DANGER),
r###"<p><em>foo <strong>bar *baz bim</strong> bam</em></p>
"###,
r###"Emphasis and strong emphasis (468)"###
);
assert_eq!(
micromark_with_options(r###"**foo **bar baz**
"###, DANGER),
r###"<p>**foo <strong>bar baz</strong></p>
"###,
r###"Emphasis and strong emphasis (469)"###
);
assert_eq!(
micromark_with_options(r###"*foo *bar baz*
"###, DANGER),
r###"<p>*foo <em>bar baz</em></p>
"###,
r###"Emphasis and strong emphasis (470)"###
);
assert_eq!(
micromark_with_options(r###"*[bar*](/url)
"###, DANGER),
r###"<p>*<a href="/url">bar*</a></p>
"###,
r###"Emphasis and strong emphasis (471)"###
);
assert_eq!(
micromark_with_options(r###"_foo [bar_](/url)
"###, DANGER),
r###"<p>_foo <a href="/url">bar_</a></p>
"###,
r###"Emphasis and strong emphasis (472)"###
);
assert_eq!(
micromark_with_options(r###"*<img src="foo" title="*"/>
"###, DANGER),
r###"<p>*<img src="foo" title="*"/></p>
"###,
r###"Emphasis and strong emphasis (473)"###
);
assert_eq!(
micromark_with_options(r###"**<a href="**">
"###, DANGER),
r###"<p>**<a href="**"></p>
"###,
r###"Emphasis and strong emphasis (474)"###
);
assert_eq!(
micromark_with_options(r###"__<a href="__">
"###, DANGER),
r###"<p>__<a href="__"></p>
"###,
r###"Emphasis and strong emphasis (475)"###
);
assert_eq!(
micromark_with_options(r###"*a `*`*
"###, DANGER),
r###"<p><em>a <code>*</code></em></p>
"###,
r###"Emphasis and strong emphasis (476)"###
);
assert_eq!(
micromark_with_options(r###"_a `_`_
"###, DANGER),
r###"<p><em>a <code>_</code></em></p>
"###,
r###"Emphasis and strong emphasis (477)"###
);
assert_eq!(
micromark_with_options(r###"**a<http://foo.bar/?q=**>
"###, DANGER),
r###"<p>**a<a href="http://foo.bar/?q=**">http://foo.bar/?q=**</a></p>
"###,
r###"Emphasis and strong emphasis (478)"###
);
assert_eq!(
micromark_with_options(r###"__a<http://foo.bar/?q=__>
"###, DANGER),
r###"<p>__a<a href="http://foo.bar/?q=__">http://foo.bar/?q=__</a></p>
"###,
r###"Emphasis and strong emphasis (479)"###
);
assert_eq!(
micromark_with_options(r###"[link](/uri "title")
"###, DANGER),
r###"<p><a href="/uri" title="title">link</a></p>
"###,
r###"Links (480)"###
);
assert_eq!(
micromark_with_options(r###"[link](/uri)
"###, DANGER),
r###"<p><a href="/uri">link</a></p>
"###,
r###"Links (481)"###
);
assert_eq!(
micromark_with_options(r###"[](./target.md)
"###, DANGER),
r###"<p><a href="./target.md"></a></p>
"###,
r###"Links (482)"###
);
assert_eq!(
micromark_with_options(r###"[link]()
"###, DANGER),
r###"<p><a href="">link</a></p>
"###,
r###"Links (483)"###
);
assert_eq!(
micromark_with_options(r###"[link](<>)
"###, DANGER),
r###"<p><a href="">link</a></p>
"###,
r###"Links (484)"###
);
assert_eq!(
micromark_with_options(r###"[]()
"###, DANGER),
r###"<p><a href=""></a></p>
"###,
r###"Links (485)"###
);
assert_eq!(
micromark_with_options(r###"[link](/my uri)
"###, DANGER),
r###"<p>[link](/my uri)</p>
"###,
r###"Links (486)"###
);
assert_eq!(
micromark_with_options(r###"[link](</my uri>)
"###, DANGER),
r###"<p><a href="/my%20uri">link</a></p>
"###,
r###"Links (487)"###
);
assert_eq!(
micromark_with_options(r###"[link](foo
bar)
"###, DANGER),
r###"<p>[link](foo
bar)</p>
"###,
r###"Links (488)"###
);
assert_eq!(
micromark_with_options(r###"[link](<foo
bar>)
"###, DANGER),
r###"<p>[link](<foo
bar>)</p>
"###,
r###"Links (489)"###
);
assert_eq!(
micromark_with_options(r###"[a](<b)c>)
"###, DANGER),
r###"<p><a href="b)c">a</a></p>
"###,
r###"Links (490)"###
);
assert_eq!(
micromark_with_options(r###"[link](<foo\>)
"###, DANGER),
r###"<p>[link](<foo>)</p>
"###,
r###"Links (491)"###
);
assert_eq!(
micromark_with_options(r###"[a](<b)c
[a](<b)c>
[a](<b>c)
"###, DANGER),
r###"<p>[a](<b)c
[a](<b)c>
[a](<b>c)</p>
"###,
r###"Links (492)"###
);
assert_eq!(
micromark_with_options(r###"[link](\(foo\))
"###, DANGER),
r###"<p><a href="(foo)">link</a></p>
"###,
r###"Links (493)"###
);
assert_eq!(
micromark_with_options(r###"[link](foo(and(bar)))
"###, DANGER),
r###"<p><a href="foo(and(bar))">link</a></p>
"###,
r###"Links (494)"###
);
assert_eq!(
micromark_with_options(r###"[link](foo(and(bar))
"###, DANGER),
r###"<p>[link](foo(and(bar))</p>
"###,
r###"Links (495)"###
);
assert_eq!(
micromark_with_options(r###"[link](foo\(and\(bar\))
"###, DANGER),
r###"<p><a href="foo(and(bar)">link</a></p>
"###,
r###"Links (496)"###
);
assert_eq!(
micromark_with_options(r###"[link](<foo(and(bar)>)
"###, DANGER),
r###"<p><a href="foo(and(bar)">link</a></p>
"###,
r###"Links (497)"###
);
assert_eq!(
micromark_with_options(r###"[link](foo\)\:)
"###, DANGER),
r###"<p><a href="foo):">link</a></p>
"###,
r###"Links (498)"###
);
assert_eq!(
micromark_with_options(r###"[link](#fragment)
[link](http://example.com#fragment)
[link](http://example.com?foo=3#frag)
"###, DANGER),
r###"<p><a href="#fragment">link</a></p>
<p><a href="http://example.com#fragment">link</a></p>
<p><a href="http://example.com?foo=3#frag">link</a></p>
"###,
r###"Links (499)"###
);
assert_eq!(
micromark_with_options(r###"[link](foo\bar)
"###, DANGER),
r###"<p><a href="foo%5Cbar">link</a></p>
"###,
r###"Links (500)"###
);
assert_eq!(
micromark_with_options(r###"[link](foo%20bä)
"###, DANGER),
r###"<p><a href="foo%20b%C3%A4">link</a></p>
"###,
r###"Links (501)"###
);
assert_eq!(
micromark_with_options(r###"[link]("title")
"###, DANGER),
r###"<p><a href="%22title%22">link</a></p>
"###,
r###"Links (502)"###
);
assert_eq!(
micromark_with_options(r###"[link](/url "title")
[link](/url 'title')
[link](/url (title))
"###, DANGER),
r###"<p><a href="/url" title="title">link</a>
<a href="/url" title="title">link</a>
<a href="/url" title="title">link</a></p>
"###,
r###"Links (503)"###
);
assert_eq!(
micromark_with_options(r###"[link](/url "title \""")
"###, DANGER),
r###"<p><a href="/url" title="title """>link</a></p>
"###,
r###"Links (504)"###
);
assert_eq!(
micromark_with_options(r###"[link](/url "title")
"###, DANGER),
r###"<p><a href="/url%C2%A0%22title%22">link</a></p>
"###,
r###"Links (505)"###
);
assert_eq!(
micromark_with_options(r###"[link](/url "title "and" title")
"###, DANGER),
r###"<p>[link](/url "title "and" title")</p>
"###,
r###"Links (506)"###
);
assert_eq!(
micromark_with_options(r###"[link](/url 'title "and" title')
"###, DANGER),
r###"<p><a href="/url" title="title "and" title">link</a></p>
"###,
r###"Links (507)"###
);
assert_eq!(
micromark_with_options(r###"[link]( /uri
"title" )
"###, DANGER),
r###"<p><a href="/uri" title="title">link</a></p>
"###,
r###"Links (508)"###
);
assert_eq!(
micromark_with_options(r###"[link] (/uri)
"###, DANGER),
r###"<p>[link] (/uri)</p>
"###,
r###"Links (509)"###
);
assert_eq!(
micromark_with_options(r###"[link [foo [bar]]](/uri)
"###, DANGER),
r###"<p><a href="/uri">link [foo [bar]]</a></p>
"###,
r###"Links (510)"###
);
assert_eq!(
micromark_with_options(r###"[link] bar](/uri)
"###, DANGER),
r###"<p>[link] bar](/uri)</p>
"###,
r###"Links (511)"###
);
assert_eq!(
micromark_with_options(r###"[link [bar](/uri)
"###, DANGER),
r###"<p>[link <a href="/uri">bar</a></p>
"###,
r###"Links (512)"###
);
assert_eq!(
micromark_with_options(r###"[link \[bar](/uri)
"###, DANGER),
r###"<p><a href="/uri">link [bar</a></p>
"###,
r###"Links (513)"###
);
assert_eq!(
micromark_with_options(r###"[link *foo **bar** `#`*](/uri)
"###, DANGER),
r###"<p><a href="/uri">link <em>foo <strong>bar</strong> <code>#</code></em></a></p>
"###,
r###"Links (514)"###
);
assert_eq!(
micromark_with_options(r###"[![moon](moon.jpg)](/uri)
"###, DANGER),
r###"<p><a href="/uri"><img src="moon.jpg" alt="moon" /></a></p>
"###,
r###"Links (515)"###
);
assert_eq!(
micromark_with_options(r###"[foo [bar](/uri)](/uri)
"###, DANGER),
r###"<p>[foo <a href="/uri">bar</a>](/uri)</p>
"###,
r###"Links (516)"###
);
assert_eq!(
micromark_with_options(r###"[foo *[bar [baz](/uri)](/uri)*](/uri)
"###, DANGER),
r###"<p>[foo <em>[bar <a href="/uri">baz</a>](/uri)</em>](/uri)</p>
"###,
r###"Links (517)"###
);
assert_eq!(
micromark_with_options(r###"![[[foo](uri1)](uri2)](uri3)
"###, DANGER),
r###"<p><img src="uri3" alt="[foo](uri2)" /></p>
"###,
r###"Links (518)"###
);
assert_eq!(
micromark_with_options(r###"*[foo*](/uri)
"###, DANGER),
r###"<p>*<a href="/uri">foo*</a></p>
"###,
r###"Links (519)"###
);
assert_eq!(
micromark_with_options(r###"[foo *bar](baz*)
"###, DANGER),
r###"<p><a href="baz*">foo *bar</a></p>
"###,
r###"Links (520)"###
);
assert_eq!(
micromark_with_options(r###"*foo [bar* baz]
"###, DANGER),
r###"<p><em>foo [bar</em> baz]</p>
"###,
r###"Links (521)"###
);
assert_eq!(
micromark_with_options(r###"[foo <bar attr="](baz)">
"###, DANGER),
r###"<p>[foo <bar attr="](baz)"></p>
"###,
r###"Links (522)"###
);
assert_eq!(
micromark_with_options(r###"[foo`](/uri)`
"###, DANGER),
r###"<p>[foo<code>](/uri)</code></p>
"###,
r###"Links (523)"###
);
assert_eq!(
micromark_with_options(r###"[foo<http://example.com/?search=](uri)>
"###, DANGER),
r###"<p>[foo<a href="http://example.com/?search=%5D(uri)">http://example.com/?search=](uri)</a></p>
"###,
r###"Links (524)"###
);
assert_eq!(
micromark_with_options(r###"[foo][bar]
[bar]: /url "title"
"###, DANGER),
r###"<p><a href="/url" title="title">foo</a></p>
"###,
r###"Links (525)"###
);
assert_eq!(
micromark_with_options(r###"[link [foo [bar]]][ref]
[ref]: /uri
"###, DANGER),
r###"<p><a href="/uri">link [foo [bar]]</a></p>
"###,
r###"Links (526)"###
);
assert_eq!(
micromark_with_options(r###"[link \[bar][ref]
[ref]: /uri
"###, DANGER),
r###"<p><a href="/uri">link [bar</a></p>
"###,
r###"Links (527)"###
);
assert_eq!(
micromark_with_options(r###"[link *foo **bar** `#`*][ref]
[ref]: /uri
"###, DANGER),
r###"<p><a href="/uri">link <em>foo <strong>bar</strong> <code>#</code></em></a></p>
"###,
r###"Links (528)"###
);
assert_eq!(
micromark_with_options(r###"[![moon](moon.jpg)][ref]
[ref]: /uri
"###, DANGER),
r###"<p><a href="/uri"><img src="moon.jpg" alt="moon" /></a></p>
"###,
r###"Links (529)"###
);
assert_eq!(
micromark_with_options(r###"[foo [bar](/uri)][ref]
[ref]: /uri
"###, DANGER),
r###"<p>[foo <a href="/uri">bar</a>]<a href="/uri">ref</a></p>
"###,
r###"Links (530)"###
);
assert_eq!(
micromark_with_options(r###"[foo *bar [baz][ref]*][ref]
[ref]: /uri
"###, DANGER),
r###"<p>[foo <em>bar <a href="/uri">baz</a></em>]<a href="/uri">ref</a></p>
"###,
r###"Links (531)"###
);
assert_eq!(
micromark_with_options(r###"*[foo*][ref]
[ref]: /uri
"###, DANGER),
r###"<p>*<a href="/uri">foo*</a></p>
"###,
r###"Links (532)"###
);
assert_eq!(
micromark_with_options(r###"[foo *bar][ref]*
[ref]: /uri
"###, DANGER),
r###"<p><a href="/uri">foo *bar</a>*</p>
"###,
r###"Links (533)"###
);
assert_eq!(
micromark_with_options(r###"[foo <bar attr="][ref]">
[ref]: /uri
"###, DANGER),
r###"<p>[foo <bar attr="][ref]"></p>
"###,
r###"Links (534)"###
);
assert_eq!(
micromark_with_options(r###"[foo`][ref]`
[ref]: /uri
"###, DANGER),
r###"<p>[foo<code>][ref]</code></p>
"###,
r###"Links (535)"###
);
assert_eq!(
micromark_with_options(r###"[foo<http://example.com/?search=][ref]>
[ref]: /uri
"###, DANGER),
r###"<p>[foo<a href="http://example.com/?search=%5D%5Bref%5D">http://example.com/?search=][ref]</a></p>
"###,
r###"Links (536)"###
);
assert_eq!(
micromark_with_options(r###"[foo][BaR]
[bar]: /url "title"
"###, DANGER),
r###"<p><a href="/url" title="title">foo</a></p>
"###,
r###"Links (537)"###
);
// To do: Some unicode normalization bug.
// assert_eq!(
// micromark_with_options(r###"[ẞ]
// [SS]: /url
// "###, DANGER),
// r###"<p><a href="/url">ẞ</a></p>
// "###,
// r###"Links (538)"###
// );
assert_eq!(
micromark_with_options(r###"[Foo
bar]: /url
[Baz][Foo bar]
"###, DANGER),
r###"<p><a href="/url">Baz</a></p>
"###,
r###"Links (539)"###
);
assert_eq!(
micromark_with_options(r###"[foo] [bar]
[bar]: /url "title"
"###, DANGER),
r###"<p>[foo] <a href="/url" title="title">bar</a></p>
"###,
r###"Links (540)"###
);
assert_eq!(
micromark_with_options(r###"[foo]
[bar]
[bar]: /url "title"
"###, DANGER),
r###"<p>[foo]
<a href="/url" title="title">bar</a></p>
"###,
r###"Links (541)"###
);
assert_eq!(
micromark_with_options(r###"[foo]: /url1
[foo]: /url2
[bar][foo]
"###, DANGER),
r###"<p><a href="/url1">bar</a></p>
"###,
r###"Links (542)"###
);
assert_eq!(
micromark_with_options(r###"[bar][foo\!]
[foo!]: /url
"###, DANGER),
r###"<p>[bar][foo!]</p>
"###,
r###"Links (543)"###
);
assert_eq!(
micromark_with_options(r###"[foo][ref[]
[ref[]: /uri
"###, DANGER),
r###"<p>[foo][ref[]</p>
<p>[ref[]: /uri</p>
"###,
r###"Links (544)"###
);
assert_eq!(
micromark_with_options(r###"[foo][ref[bar]]
[ref[bar]]: /uri
"###, DANGER),
r###"<p>[foo][ref[bar]]</p>
<p>[ref[bar]]: /uri</p>
"###,
r###"Links (545)"###
);
assert_eq!(
micromark_with_options(r###"[[[foo]]]
[[[foo]]]: /url
"###, DANGER),
r###"<p>[[[foo]]]</p>
<p>[[[foo]]]: /url</p>
"###,
r###"Links (546)"###
);
assert_eq!(
micromark_with_options(r###"[foo][ref\[]
[ref\[]: /uri
"###, DANGER),
r###"<p><a href="/uri">foo</a></p>
"###,
r###"Links (547)"###
);
assert_eq!(
micromark_with_options(r###"[bar\\]: /uri
[bar\\]
"###, DANGER),
r###"<p><a href="/uri">bar\</a></p>
"###,
r###"Links (548)"###
);
assert_eq!(
micromark_with_options(r###"[]
[]: /uri
"###, DANGER),
r###"<p>[]</p>
<p>[]: /uri</p>
"###,
r###"Links (549)"###
);
assert_eq!(
micromark_with_options(r###"[
]
[
]: /uri
"###, DANGER),
r###"<p>[
]</p>
<p>[
]: /uri</p>
"###,
r###"Links (550)"###
);
assert_eq!(
micromark_with_options(r###"[foo][]
[foo]: /url "title"
"###, DANGER),
r###"<p><a href="/url" title="title">foo</a></p>
"###,
r###"Links (551)"###
);
assert_eq!(
micromark_with_options(r###"[*foo* bar][]
[*foo* bar]: /url "title"
"###, DANGER),
r###"<p><a href="/url" title="title"><em>foo</em> bar</a></p>
"###,
r###"Links (552)"###
);
assert_eq!(
micromark_with_options(r###"[Foo][]
[foo]: /url "title"
"###, DANGER),
r###"<p><a href="/url" title="title">Foo</a></p>
"###,
r###"Links (553)"###
);
assert_eq!(
micromark_with_options(r###"[foo]
[]
[foo]: /url "title"
"###, DANGER),
r###"<p><a href="/url" title="title">foo</a>
[]</p>
"###,
r###"Links (554)"###
);
assert_eq!(
micromark_with_options(r###"[foo]
[foo]: /url "title"
"###, DANGER),
r###"<p><a href="/url" title="title">foo</a></p>
"###,
r###"Links (555)"###
);
assert_eq!(
micromark_with_options(r###"[*foo* bar]
[*foo* bar]: /url "title"
"###, DANGER),
r###"<p><a href="/url" title="title"><em>foo</em> bar</a></p>
"###,
r###"Links (556)"###
);
assert_eq!(
micromark_with_options(r###"[[*foo* bar]]
[*foo* bar]: /url "title"
"###, DANGER),
r###"<p>[<a href="/url" title="title"><em>foo</em> bar</a>]</p>
"###,
r###"Links (557)"###
);
assert_eq!(
micromark_with_options(r###"[[bar [foo]
[foo]: /url
"###, DANGER),
r###"<p>[[bar <a href="/url">foo</a></p>
"###,
r###"Links (558)"###
);
assert_eq!(
micromark_with_options(r###"[Foo]
[foo]: /url "title"
"###, DANGER),
r###"<p><a href="/url" title="title">Foo</a></p>
"###,
r###"Links (559)"###
);
assert_eq!(
micromark_with_options(r###"[foo] bar
[foo]: /url
"###, DANGER),
r###"<p><a href="/url">foo</a> bar</p>
"###,
r###"Links (560)"###
);
assert_eq!(
micromark_with_options(r###"\[foo]
[foo]: /url "title"
"###, DANGER),
r###"<p>[foo]</p>
"###,
r###"Links (561)"###
);
assert_eq!(
micromark_with_options(r###"[foo*]: /url
*[foo*]
"###, DANGER),
r###"<p>*<a href="/url">foo*</a></p>
"###,
r###"Links (562)"###
);
assert_eq!(
micromark_with_options(r###"[foo][bar]
[foo]: /url1
[bar]: /url2
"###, DANGER),
r###"<p><a href="/url2">foo</a></p>
"###,
r###"Links (563)"###
);
assert_eq!(
micromark_with_options(r###"[foo][]
[foo]: /url1
"###, DANGER),
r###"<p><a href="/url1">foo</a></p>
"###,
r###"Links (564)"###
);
assert_eq!(
micromark_with_options(r###"[foo]()
[foo]: /url1
"###, DANGER),
r###"<p><a href="">foo</a></p>
"###,
r###"Links (565)"###
);
assert_eq!(
micromark_with_options(r###"[foo](not a link)
[foo]: /url1
"###, DANGER),
r###"<p><a href="/url1">foo</a>(not a link)</p>
"###,
r###"Links (566)"###
);
assert_eq!(
micromark_with_options(r###"[foo][bar][baz]
[baz]: /url
"###, DANGER),
r###"<p>[foo]<a href="/url">bar</a></p>
"###,
r###"Links (567)"###
);
assert_eq!(
micromark_with_options(r###"[foo][bar][baz]
[baz]: /url1
[bar]: /url2
"###, DANGER),
r###"<p><a href="/url2">foo</a><a href="/url1">baz</a></p>
"###,
r###"Links (568)"###
);
assert_eq!(
micromark_with_options(r###"[foo][bar][baz]
[baz]: /url1
[foo]: /url2
"###, DANGER),
r###"<p>[foo]<a href="/url1">bar</a></p>
"###,
r###"Links (569)"###
);
assert_eq!(
micromark_with_options(r###"![foo](/url "title")
"###, DANGER),
r###"<p><img src="/url" alt="foo" title="title" /></p>
"###,
r###"Images (570)"###
);
assert_eq!(
micromark_with_options(r###"![foo *bar*]
[foo *bar*]: train.jpg "train & tracks"
"###, DANGER),
r###"<p><img src="train.jpg" alt="foo bar" title="train & tracks" /></p>
"###,
r###"Images (571)"###
);
assert_eq!(
micromark_with_options(r###"![foo ![bar](/url)](/url2)
"###, DANGER),
r###"<p><img src="/url2" alt="foo bar" /></p>
"###,
r###"Images (572)"###
);
assert_eq!(
micromark_with_options(r###"![foo [bar](/url)](/url2)
"###, DANGER),
r###"<p><img src="/url2" alt="foo bar" /></p>
"###,
r###"Images (573)"###
);
assert_eq!(
micromark_with_options(r###"![foo *bar*][]
[foo *bar*]: train.jpg "train & tracks"
"###, DANGER),
r###"<p><img src="train.jpg" alt="foo bar" title="train & tracks" /></p>
"###,
r###"Images (574)"###
);
assert_eq!(
micromark_with_options(r###"![foo *bar*][foobar]
[FOOBAR]: train.jpg "train & tracks"
"###, DANGER),
r###"<p><img src="train.jpg" alt="foo bar" title="train & tracks" /></p>
"###,
r###"Images (575)"###
);
assert_eq!(
micromark_with_options(r###"![foo](train.jpg)
"###, DANGER),
r###"<p><img src="train.jpg" alt="foo" /></p>
"###,
r###"Images (576)"###
);
assert_eq!(
micromark_with_options(r###"My ![foo bar](/path/to/train.jpg "title" )
"###, DANGER),
r###"<p>My <img src="/path/to/train.jpg" alt="foo bar" title="title" /></p>
"###,
r###"Images (577)"###
);
assert_eq!(
micromark_with_options(r###"![foo](<url>)
"###, DANGER),
r###"<p><img src="url" alt="foo" /></p>
"###,
r###"Images (578)"###
);
assert_eq!(
micromark_with_options(r###"![](/url)
"###, DANGER),
r###"<p><img src="/url" alt="" /></p>
"###,
r###"Images (579)"###
);
assert_eq!(
micromark_with_options(r###"![foo][bar]
[bar]: /url
"###, DANGER),
r###"<p><img src="/url" alt="foo" /></p>
"###,
r###"Images (580)"###
);
assert_eq!(
micromark_with_options(r###"![foo][bar]
[BAR]: /url
"###, DANGER),
r###"<p><img src="/url" alt="foo" /></p>
"###,
r###"Images (581)"###
);
assert_eq!(
micromark_with_options(r###"![foo][]
[foo]: /url "title"
"###, DANGER),
r###"<p><img src="/url" alt="foo" title="title" /></p>
"###,
r###"Images (582)"###
);
assert_eq!(
micromark_with_options(r###"![*foo* bar][]
[*foo* bar]: /url "title"
"###, DANGER),
r###"<p><img src="/url" alt="foo bar" title="title" /></p>
"###,
r###"Images (583)"###
);
assert_eq!(
micromark_with_options(r###"![Foo][]
[foo]: /url "title"
"###, DANGER),
r###"<p><img src="/url" alt="Foo" title="title" /></p>
"###,
r###"Images (584)"###
);
assert_eq!(
micromark_with_options(r###"![foo]
[]
[foo]: /url "title"
"###, DANGER),
r###"<p><img src="/url" alt="foo" title="title" />
[]</p>
"###,
r###"Images (585)"###
);
assert_eq!(
micromark_with_options(r###"![foo]
[foo]: /url "title"
"###, DANGER),
r###"<p><img src="/url" alt="foo" title="title" /></p>
"###,
r###"Images (586)"###
);
assert_eq!(
micromark_with_options(r###"![*foo* bar]
[*foo* bar]: /url "title"
"###, DANGER),
r###"<p><img src="/url" alt="foo bar" title="title" /></p>
"###,
r###"Images (587)"###
);
assert_eq!(
micromark_with_options(r###"![[foo]]
[[foo]]: /url "title"
"###, DANGER),
r###"<p>![[foo]]</p>
<p>[[foo]]: /url "title"</p>
"###,
r###"Images (588)"###
);
assert_eq!(
micromark_with_options(r###"![Foo]
[foo]: /url "title"
"###, DANGER),
r###"<p><img src="/url" alt="Foo" title="title" /></p>
"###,
r###"Images (589)"###
);
assert_eq!(
micromark_with_options(r###"!\[foo]
[foo]: /url "title"
"###, DANGER),
r###"<p>![foo]</p>
"###,
r###"Images (590)"###
);
assert_eq!(
micromark_with_options(r###"\![foo]
[foo]: /url "title"
"###, DANGER),
r###"<p>!<a href="/url" title="title">foo</a></p>
"###,
r###"Images (591)"###
);
assert_eq!(
micromark_with_options(r###"<http://foo.bar.baz>
"###, DANGER),
r###"<p><a href="http://foo.bar.baz">http://foo.bar.baz</a></p>
"###,
r###"Autolinks (592)"###
);
assert_eq!(
micromark_with_options(r###"<http://foo.bar.baz/test?q=hello&id=22&boolean>
"###, DANGER),
r###"<p><a href="http://foo.bar.baz/test?q=hello&id=22&boolean">http://foo.bar.baz/test?q=hello&id=22&boolean</a></p>
"###,
r###"Autolinks (593)"###
);
assert_eq!(
micromark_with_options(r###"<irc://foo.bar:2233/baz>
"###, DANGER),
r###"<p><a href="irc://foo.bar:2233/baz">irc://foo.bar:2233/baz</a></p>
"###,
r###"Autolinks (594)"###
);
assert_eq!(
micromark_with_options(r###"<MAILTO:FOO@BAR.BAZ>
"###, DANGER),
r###"<p><a href="MAILTO:FOO@BAR.BAZ">MAILTO:FOO@BAR.BAZ</a></p>
"###,
r###"Autolinks (595)"###
);
assert_eq!(
micromark_with_options(r###"<a+b+c:d>
"###, DANGER),
r###"<p><a href="a+b+c:d">a+b+c:d</a></p>
"###,
r###"Autolinks (596)"###
);
assert_eq!(
micromark_with_options(r###"<made-up-scheme://foo,bar>
"###, DANGER),
r###"<p><a href="made-up-scheme://foo,bar">made-up-scheme://foo,bar</a></p>
"###,
r###"Autolinks (597)"###
);
assert_eq!(
micromark_with_options(r###"<http://../>
"###, DANGER),
r###"<p><a href="http://../">http://../</a></p>
"###,
r###"Autolinks (598)"###
);
assert_eq!(
micromark_with_options(r###"<localhost:5001/foo>
"###, DANGER),
r###"<p><a href="localhost:5001/foo">localhost:5001/foo</a></p>
"###,
r###"Autolinks (599)"###
);
assert_eq!(
micromark_with_options(r###"<http://foo.bar/baz bim>
"###, DANGER),
r###"<p><http://foo.bar/baz bim></p>
"###,
r###"Autolinks (600)"###
);
assert_eq!(
micromark_with_options(r###"<http://example.com/\[\>
"###, DANGER),
r###"<p><a href="http://example.com/%5C%5B%5C">http://example.com/\[\</a></p>
"###,
r###"Autolinks (601)"###
);
assert_eq!(
micromark_with_options(r###"<foo@bar.example.com>
"###, DANGER),
r###"<p><a href="mailto:foo@bar.example.com">foo@bar.example.com</a></p>
"###,
r###"Autolinks (602)"###
);
assert_eq!(
micromark_with_options(r###"<foo+special@Bar.baz-bar0.com>
"###, DANGER),
r###"<p><a href="mailto:foo+special@Bar.baz-bar0.com">foo+special@Bar.baz-bar0.com</a></p>
"###,
r###"Autolinks (603)"###
);
assert_eq!(
micromark_with_options(r###"<foo\+@bar.example.com>
"###, DANGER),
r###"<p><foo+@bar.example.com></p>
"###,
r###"Autolinks (604)"###
);
assert_eq!(
micromark_with_options(r###"<>
"###, DANGER),
r###"<p><></p>
"###,
r###"Autolinks (605)"###
);
assert_eq!(
micromark_with_options(r###"< http://foo.bar >
"###, DANGER),
r###"<p>< http://foo.bar ></p>
"###,
r###"Autolinks (606)"###
);
assert_eq!(
micromark_with_options(r###"<m:abc>
"###, DANGER),
r###"<p><m:abc></p>
"###,
r###"Autolinks (607)"###
);
assert_eq!(
micromark_with_options(r###"<foo.bar.baz>
"###, DANGER),
r###"<p><foo.bar.baz></p>
"###,
r###"Autolinks (608)"###
);
assert_eq!(
micromark_with_options(r###"http://example.com
"###, DANGER),
r###"<p>http://example.com</p>
"###,
r###"Autolinks (609)"###
);
assert_eq!(
micromark_with_options(r###"foo@bar.example.com
"###, DANGER),
r###"<p>foo@bar.example.com</p>
"###,
r###"Autolinks (610)"###
);
assert_eq!(
micromark_with_options(r###"<a><bab><c2c>
"###, DANGER),
r###"<p><a><bab><c2c></p>
"###,
r###"Raw HTML (611)"###
);
assert_eq!(
micromark_with_options(r###"<a/><b2/>
"###, DANGER),
r###"<p><a/><b2/></p>
"###,
r###"Raw HTML (612)"###
);
assert_eq!(
micromark_with_options(r###"<a /><b2
data="foo" >
"###, DANGER),
r###"<p><a /><b2
data="foo" ></p>
"###,
r###"Raw HTML (613)"###
);
assert_eq!(
micromark_with_options(r###"<a foo="bar" bam = 'baz <em>"</em>'
_boolean zoop:33=zoop:33 />
"###, DANGER),
r###"<p><a foo="bar" bam = 'baz <em>"</em>'
_boolean zoop:33=zoop:33 /></p>
"###,
r###"Raw HTML (614)"###
);
assert_eq!(
micromark_with_options(r###"Foo <responsive-image src="foo.jpg" />
"###, DANGER),
r###"<p>Foo <responsive-image src="foo.jpg" /></p>
"###,
r###"Raw HTML (615)"###
);
assert_eq!(
micromark_with_options(r###"<33> <__>
"###, DANGER),
r###"<p><33> <__></p>
"###,
r###"Raw HTML (616)"###
);
assert_eq!(
micromark_with_options(r###"<a h*#ref="hi">
"###, DANGER),
r###"<p><a h*#ref="hi"></p>
"###,
r###"Raw HTML (617)"###
);
assert_eq!(
micromark_with_options(r###"<a href="hi'> <a href=hi'>
"###, DANGER),
r###"<p><a href="hi'> <a href=hi'></p>
"###,
r###"Raw HTML (618)"###
);
assert_eq!(
micromark_with_options(r###"< a><
foo><bar/ >
<foo bar=baz
bim!bop />
"###, DANGER),
r###"<p>< a><
foo><bar/ >
<foo bar=baz
bim!bop /></p>
"###,
r###"Raw HTML (619)"###
);
assert_eq!(
micromark_with_options(r###"<a href='bar'title=title>
"###, DANGER),
r###"<p><a href='bar'title=title></p>
"###,
r###"Raw HTML (620)"###
);
assert_eq!(
micromark_with_options(r###"</a></foo >
"###, DANGER),
r###"<p></a></foo ></p>
"###,
r###"Raw HTML (621)"###
);
assert_eq!(
micromark_with_options(r###"</a href="foo">
"###, DANGER),
r###"<p></a href="foo"></p>
"###,
r###"Raw HTML (622)"###
);
assert_eq!(
micromark_with_options(r###"foo <!-- this is a
comment - with hyphen -->
"###, DANGER),
r###"<p>foo <!-- this is a
comment - with hyphen --></p>
"###,
r###"Raw HTML (623)"###
);
assert_eq!(
micromark_with_options(r###"foo <!-- not a comment -- two hyphens -->
"###, DANGER),
r###"<p>foo <!-- not a comment -- two hyphens --></p>
"###,
r###"Raw HTML (624)"###
);
assert_eq!(
micromark_with_options(r###"foo <!--> foo -->
foo <!-- foo--->
"###, DANGER),
r###"<p>foo <!--> foo --></p>
<p>foo <!-- foo---></p>
"###,
r###"Raw HTML (625)"###
);
assert_eq!(
micromark_with_options(r###"foo <?php echo $a; ?>
"###, DANGER),
r###"<p>foo <?php echo $a; ?></p>
"###,
r###"Raw HTML (626)"###
);
assert_eq!(
micromark_with_options(r###"foo <!ELEMENT br EMPTY>
"###, DANGER),
r###"<p>foo <!ELEMENT br EMPTY></p>
"###,
r###"Raw HTML (627)"###
);
assert_eq!(
micromark_with_options(r###"foo <![CDATA[>&<]]>
"###, DANGER),
r###"<p>foo <![CDATA[>&<]]></p>
"###,
r###"Raw HTML (628)"###
);
assert_eq!(
micromark_with_options(r###"foo <a href="ö">
"###, DANGER),
r###"<p>foo <a href="ö"></p>
"###,
r###"Raw HTML (629)"###
);
assert_eq!(
micromark_with_options(r###"foo <a href="\*">
"###, DANGER),
r###"<p>foo <a href="\*"></p>
"###,
r###"Raw HTML (630)"###
);
assert_eq!(
micromark_with_options(r###"<a href="\"">
"###, DANGER),
r###"<p><a href="""></p>
"###,
r###"Raw HTML (631)"###
);
assert_eq!(
micromark_with_options(r###"foo
baz
"###, DANGER),
r###"<p>foo<br />
baz</p>
"###,
r###"Hard line breaks (632)"###
);
assert_eq!(
micromark_with_options(r###"foo\
baz
"###, DANGER),
r###"<p>foo<br />
baz</p>
"###,
r###"Hard line breaks (633)"###
);
assert_eq!(
micromark_with_options(r###"foo
baz
"###, DANGER),
r###"<p>foo<br />
baz</p>
"###,
r###"Hard line breaks (634)"###
);
assert_eq!(
micromark_with_options(r###"foo
bar
"###, DANGER),
r###"<p>foo<br />
bar</p>
"###,
r###"Hard line breaks (635)"###
);
assert_eq!(
micromark_with_options(r###"foo\
bar
"###, DANGER),
r###"<p>foo<br />
bar</p>
"###,
r###"Hard line breaks (636)"###
);
assert_eq!(
micromark_with_options(r###"*foo
bar*
"###, DANGER),
r###"<p><em>foo<br />
bar</em></p>
"###,
r###"Hard line breaks (637)"###
);
assert_eq!(
micromark_with_options(r###"*foo\
bar*
"###, DANGER),
r###"<p><em>foo<br />
bar</em></p>
"###,
r###"Hard line breaks (638)"###
);
assert_eq!(
micromark_with_options(r###"`code
span`
"###, DANGER),
r###"<p><code>code span</code></p>
"###,
r###"Hard line breaks (639)"###
);
assert_eq!(
micromark_with_options(r###"`code\
span`
"###, DANGER),
r###"<p><code>code\ span</code></p>
"###,
r###"Hard line breaks (640)"###
);
assert_eq!(
micromark_with_options(r###"<a href="foo
bar">
"###, DANGER),
r###"<p><a href="foo
bar"></p>
"###,
r###"Hard line breaks (641)"###
);
assert_eq!(
micromark_with_options(r###"<a href="foo\
bar">
"###, DANGER),
r###"<p><a href="foo\
bar"></p>
"###,
r###"Hard line breaks (642)"###
);
assert_eq!(
micromark_with_options(r###"foo\
"###, DANGER),
r###"<p>foo\</p>
"###,
r###"Hard line breaks (643)"###
);
assert_eq!(
micromark_with_options(r###"foo
"###, DANGER),
r###"<p>foo</p>
"###,
r###"Hard line breaks (644)"###
);
assert_eq!(
micromark_with_options(r###"### foo\
"###, DANGER),
r###"<h3>foo\</h3>
"###,
r###"Hard line breaks (645)"###
);
assert_eq!(
micromark_with_options(r###"### foo
"###, DANGER),
r###"<h3>foo</h3>
"###,
r###"Hard line breaks (646)"###
);
assert_eq!(
micromark_with_options(r###"foo
baz
"###, DANGER),
r###"<p>foo
baz</p>
"###,
r###"Soft line breaks (647)"###
);
assert_eq!(
micromark_with_options(r###"foo
baz
"###, DANGER),
r###"<p>foo
baz</p>
"###,
r###"Soft line breaks (648)"###
);
assert_eq!(
micromark_with_options(r###"hello $.;'there
"###, DANGER),
r###"<p>hello $.;'there</p>
"###,
r###"Textual content (649)"###
);
assert_eq!(
micromark_with_options(r###"Foo χρῆν
"###, DANGER),
r###"<p>Foo χρῆν</p>
"###,
r###"Textual content (650)"###
);
assert_eq!(
micromark_with_options(r###"Multiple spaces
"###, DANGER),
r###"<p>Multiple spaces</p>
"###,
r###"Textual content (651)"###
);
}