From c1ad321d79a98cbe13007764dd6ea1ac6c3e9c0a Mon Sep 17 00:00:00 2001 From: Michael Howell Date: Tue, 30 May 2023 22:03:59 -0700 Subject: [PATCH] Add a separate mode to parse footnotes the same way GitHub does Resolves #20 Resolves #530 This change is similar to, but a more limited change than, . It changes the syntax, but does not touch the generated HTML or event API. Motivation ---------- This commit is written with usage in mdBook, rustdoc, and docs.rs in mind. * Having a standard to follow, or at least a public test suite in [cmark-gfm] [^c], makes it easier to distinguish bugs from features. * It makes sense to commit to following GitHub's behavior specifically, because mdBook chapters and docs.rs README files are often viewed in GitHub preview windows, so any divergence will be very annoying. * If mdBook and docs.rs are going to use this syntax, then rustdoc should, too. * Having both footnote syntaxes use the same API and rendering makes it more feasible for rustdoc to change the syntax over an [edition]. To introduce a syntax change in a new edition of Rust, we must make rustdoc warn anyone who writes code that will have its meaning change. To do it, run the parser twice in lockstep (with `ENABLE_FOOTNOTES` on one parser, and `ENABLE_GFM_FOOTNOTES` on the other), and warn if they diverge. * Alternatively, run a Crater build with this same code to check if this actually causes widespread breakage. * In particular, using tree rewriting to push the footnotes to the end is not as useful as it sounds, since that's not enough to exactly copy the way GitHub renders footnotes. To do that, you also need to sort the footnotes by the order in which they are *referenced*, not the order in which they are defined. This type of tree rewriting is also a waste of time if you want "margin note" rendering instead of putting them all at the end. [cmark-gfm]: https://github.com/github/cmark-gfm/blob/1e230827a584ebc9938c3eadc5059c55ef3c9abf/test/extensions.txt#L702 [edition]: https://doc.rust-lang.org/edition-guide/editions/index.html [^c]: cmark-gfm is under the MIT license, so incorporating parts of its test suite into pulldown-cmark should be fine. --- build.rs | 12 +- examples/footnote-rewrite.rs | 153 ++++ specs/gfm_footnotes.txt | 424 ++++++++++ src/firstpass.rs | 57 +- src/lib.rs | 9 + src/linklabel.rs | 2 + src/parse.rs | 76 +- tests/lib.rs | 8 +- tests/suite/footnotes.rs | 16 +- tests/suite/gfm_footnotes.rs | 419 ++++++++++ tests/suite/gfm_strikethrough.rs | 6 +- tests/suite/gfm_table.rs | 18 +- tests/suite/gfm_tasklist.rs | 4 +- tests/suite/heading_attrs.rs | 84 +- tests/suite/metadata_blocks.rs | 20 +- tests/suite/mod.rs | 1 + tests/suite/regression.rs | 148 ++-- tests/suite/smart_punct.rs | 32 +- tests/suite/spec.rs | 1304 +++++++++++++++--------------- tests/suite/table.rs | 24 +- 20 files changed, 1951 insertions(+), 866 deletions(-) create mode 100644 examples/footnote-rewrite.rs create mode 100644 specs/gfm_footnotes.txt create mode 100644 tests/suite/gfm_footnotes.rs diff --git a/build.rs b/build.rs index 09649081a..c0b70cc84 100644 --- a/build.rs +++ b/build.rs @@ -64,7 +64,7 @@ fn generate_tests_from_spec() { let spec_name = file_path.file_stem().unwrap().to_str().unwrap(); - let spec = Spec::new(&raw_spec); + let spec = Spec::new(&raw_spec, spec_name.starts_with("gfm_")); let mut n_tests = 0; spec_rs @@ -86,7 +86,7 @@ fn {}_test_{i}() {{ let original = r##"{original}"##; let expected = r##"{expected}"##; - test_markdown_html(original, expected, {smart_punct}, {metadata_blocks}); + test_markdown_html(original, expected, {smart_punct}, {metadata_blocks}, {is_gfm}); }} "###, spec_name, @@ -95,6 +95,7 @@ fn {}_test_{i}() {{ expected = testcase.expected, smart_punct = testcase.smart_punct, metadata_blocks = testcase.metadata_blocks, + is_gfm = testcase.is_gfm, )) .unwrap(); @@ -134,12 +135,13 @@ fn {}_test_{i}() {{ #[cfg(feature = "gen-tests")] pub struct Spec<'a> { spec: &'a str, + is_gfm: bool, } #[cfg(feature = "gen-tests")] impl<'a> Spec<'a> { - pub fn new(spec: &'a str) -> Self { - Spec { spec } + pub fn new(spec: &'a str, is_gfm: bool) -> Self { + Spec { spec, is_gfm } } } @@ -149,6 +151,7 @@ pub struct TestCase { pub expected: String, pub smart_punct: bool, pub metadata_blocks: bool, + pub is_gfm: bool, } #[cfg(feature = "gen-tests")] @@ -190,6 +193,7 @@ impl<'a> Iterator for Spec<'a> { let test_case = TestCase { original: spec[i_start..i_end].to_string().replace("→", "\t"), expected: spec[i_end + 2..e_end].to_string().replace("→", "\t"), + is_gfm: self.is_gfm, smart_punct, metadata_blocks, }; diff --git a/examples/footnote-rewrite.rs b/examples/footnote-rewrite.rs new file mode 100644 index 000000000..a7ce44232 --- /dev/null +++ b/examples/footnote-rewrite.rs @@ -0,0 +1,153 @@ +use std::io::Write as _; +use std::fmt::Write as _; +use std::collections::HashMap; + +use pulldown_cmark::{html, Event, Options, Parser, Tag, TagEnd, CowStr}; + +/// This example shows how to do footnotes as bottom-notes, in the style of GitHub. +fn main() { + let markdown_input: &str = "This is an [^a] footnote [^a].\n\n[^a]: footnote contents"; + println!("Parsing the following markdown string:\n{}", markdown_input); + + // To generate this style, you have to collect the footnotes at the end, while parsing. + // You also need to count usages. + let mut footnotes = Vec::new(); + let mut in_footnote = Vec::new(); + let mut footnote_numbers = HashMap::new(); + // ENABLE_GFM_FOOTNOTES is used in this example, but ENABLE_FOOTNOTES would work, too. + let parser = Parser::new_ext(markdown_input, Options::ENABLE_GFM_FOOTNOTES) + .filter_map(|event| { + match event { + Event::Start(Tag::FootnoteDefinition(_)) => { + in_footnote.push(vec![event]); + None + } + Event::End(TagEnd::FootnoteDefinition) => { + let mut f = in_footnote.pop().unwrap(); + f.push(event); + footnotes.push(f); + None + } + Event::FootnoteReference(name) => { + let n = footnote_numbers.len() + 1; + let (n, nr) = footnote_numbers.entry(name.clone()).or_insert((n, 0usize)); + *nr += 1; + let html = Event::Html(format!(r##"[{n}]"##).into()); + if in_footnote.len() == 0 { + Some(html) + } else { + in_footnote.last_mut().unwrap().push(html); + None + } + } + _ if in_footnote.len() != 0 => { + in_footnote.last_mut().unwrap().push(event); + None + } + _ => Some(event), + } + }); + + // Write to anything implementing the `Write` trait. This could also be a file + // or network socket. + let stdout = std::io::stdout(); + let mut handle = stdout.lock(); + handle.write_all(b"\nHTML output:\n").unwrap(); + html::write_html(&mut handle, parser).unwrap(); + + // To make the footnotes look right, we need to sort them by their appearance order, not by + // the in-tree order of their actual definitions. Unused items are omitted entirely. + // + // For example, this code: + // + // test [^1] [^2] + // [^2]: second used, first defined + // [^1]: test + // + // Gets rendered like *this* if you copy it into a GitHub comment box: + // + //

test [1] [2]

+ //
+ //
    + //
  1. test ↩
  2. + //
  3. second used, first defined ↩
  4. + //
+ if footnotes.len() != 0 { + footnotes.retain(|f| match f.first() { + Some(Event::Start(Tag::FootnoteDefinition(name))) => footnote_numbers.get(name).unwrap_or(&(0, 0)).1 != 0, + _ => false, + }); + footnotes.sort_by_cached_key(|f| match f.first() { + Some(Event::Start(Tag::FootnoteDefinition(name))) => footnote_numbers.get(name).unwrap_or(&(0, 0)).0, + _ => unreachable!(), + }); + handle.write_all(b"
    \n").unwrap(); + html::write_html(&mut handle, footnotes.into_iter().flat_map(|fl| { + // To write backrefs, the name needs kept until the end of the footnote definition. + let mut name = CowStr::from(""); + // Backrefs are included in the final paragraph of the footnote, if it's normal text. + // For example, this DOM can be produced: + // + // Markdown: + // + // five [^feet]. + // + // [^feet]: + // A foot is defined, in this case, as 0.3048 m. + // + // Historically, the foot has not been defined this way, corresponding to many + // subtly different units depending on the location. + // + // HTML: + // + //

    five [1].

    + // + //
      + //
    1. + //

      A foot is defined, in this case, as 0.3048 m.

      + //

      Historically, the foot has not been defined this way, corresponding to many + // subtly different units depending on the location.

      + //
    2. + //
    + // + // This is mostly a visual hack, so that footnotes use less vertical space. + // + // If there is no final paragraph, such as a tabular, list, or image footnote, it gets + // pushed after the last tag instead. + let mut has_written_backrefs = false; + let fl_len = fl.len(); + let footnote_numbers = &footnote_numbers; + fl.into_iter().enumerate().map(move |(i, f)| { + match f { + Event::Start(Tag::FootnoteDefinition(current_name)) => { + name = current_name; + has_written_backrefs = false; + Event::Html(format!(r##"
  1. "##).into()) + } + Event::End(TagEnd::FootnoteDefinition) | Event::End(TagEnd::Paragraph) if !has_written_backrefs && i >= fl_len - 2 => { + let usage_count = footnote_numbers.get(&name).unwrap().1; + let mut end = String::with_capacity(name.len() + (r##"
  2. "##.len() * usage_count)); + for usage in 1 ..= usage_count { + if usage == 1 { + write!(&mut end, r##" "##).unwrap(); + } else { + write!(&mut end, r##" ↩{usage}"##).unwrap(); + } + } + has_written_backrefs = true; + if f == Event::End(TagEnd::FootnoteDefinition) { + end.push_str("\n"); + } else { + end.push_str("

    \n"); + } + Event::Html(end.into()) + } + Event::End(TagEnd::FootnoteDefinition) => Event::Html("\n".into()), + Event::FootnoteReference(_) => unreachable!("converted to HTML earlier"), + f => f, + } + }) + })).unwrap(); + handle.write_all(b"
\n").unwrap(); + } +} diff --git a/specs/gfm_footnotes.txt b/specs/gfm_footnotes.txt new file mode 100644 index 000000000..9506e4868 --- /dev/null +++ b/specs/gfm_footnotes.txt @@ -0,0 +1,424 @@ +Run this with `cargo run -- -F -s specs/footnotes.txt`. + +Parts of this test case are based on +. +Other parts were based on trial-and-error with GitHub's issue comment preview. + +This spec describes nearly identical *parsing* to GFM, but not identical *rendering*. The HTML +outputting module may be extended with features such as backreferences, but these are not built +into the parser, and are unrelated to the syntax in any case. Alternative footnote rendering +styles can be found in `/examples/footnote-rewrite.rs`. + +```````````````````````````````` example +Lorem ipsum.[^a] [^missing] + +[^a]: Cool. +. +

Lorem ipsum.1 [^missing]

+
1 +

Cool.

+
+```````````````````````````````` + + +Footnotes can be used inside blockquotes: + +```````````````````````````````` example +> This is the song that never ends.\ +> Yes it goes on and on my friends.[^lambchops] +> +> [^lambchops]: +. +
+

This is the song that never ends.
+Yes it goes on and on my friends.1

+ +
+```````````````````````````````` + + +Footnotes can be complex block structures, but their contents must be indented first! + +Without four spaces of indentation, no nesting: + +```````````````````````````````` example +Songs that simply loop are a popular way to annoy people. [^examples] + +[^examples]: + * [The song that never ends](https://www.youtube.com/watch?v=0U2zJOryHKQ) + * [I know a song that gets on everybody's nerves](https://www.youtube.com/watch?v=TehWI09qxls) + * [Ninety-nine bottles of beer on the wall](https://www.youtube.com/watch?v=qVjCag8XoHQ) +. +

Songs that simply loop are a popular way to annoy people. 1

+
1
+ +```````````````````````````````` + + +Yes, nesting: + +```````````````````````````````` example +Songs that simply loop are a popular way to annoy people. [^examples] + +[^examples]: + * [The song that never ends](https://www.youtube.com/watch?v=0U2zJOryHKQ) + * [I know a song that gets on everybody's nerves](https://www.youtube.com/watch?v=TehWI09qxls) + * [Ninety-nine bottles of beer on the wall](https://www.youtube.com/watch?v=qVjCag8XoHQ) +. +

Songs that simply loop are a popular way to annoy people. 1

+ +```````````````````````````````` + + +How this works with indented code blocks, blockquotes: + +```````````````````````````````` example +[^not-code] [^code] [^quote] [^not-quote] [^indented-quote] + +[^not-code]: not code + +[^code]: + code + +[^quote]: > quote + +[^not-quote]: + > external quote + +[^indented-quote]: + > indented quote +. +

1 2 3 4 5

+
1 +

not code

+
+
2 +
code
+
+
+
3 +

quote

+
+
4
+

external quote

5 +

indented quote

+
+```````````````````````````````` + + +Line breaks in paragraphs, however, are okay. Note that GitHub *comments* have hard line breaks without escapes, while *Gists* don't. +To see compatible rendering with the examples in this file, try the code in a GitHub Gist file with a `.md` extension. + +```````````````````````````````` example +[^ab] [^cd] + +[^ab]: a +b + +[^cd]: c\ +d +. +

1 2

+
1 +

a +b

+
+
2 +

c
+d

+
+```````````````````````````````` + + +Footnotes can even have multiple paragraphs. You need to indent, though. + +```````````````````````````````` example +[^lorem]: If heaven ever wishes to grant me a boon, it will be a total effacing of the results of a mere chance which fixed my eye on a certain stray piece of shelf-paper. It was nothing on which I would naturally have stumbled in the course of my daily round, for it was an old number of an Australian journal, the Sydney Bulletin for April 18, 1925. It had escaped even the cutting bureau which had at the time of its issuance been avidly collecting material for my uncle's research. + +I had largely given over my inquiries into what Professor Angell called the "Cthulhu Cult", and was visiting a learned friend in Paterson, New Jersey; the curator of a local museum and a mineralogist of note. Examining one day the reserve specimens roughly set on the storage shelves in a rear room of the museum, my eye was caught by an odd picture in one of the old papers spread beneath the stones. It was the Sydney Bulletin I have mentioned, for my friend had wide affiliations in all conceivable foreign parts; and the picture was a half-tone cut of a hideous stone image almost identical with that which Legrasse had found in the swamp. + +[^ipsum]: If heaven ever wishes to grant me a boon, it will be a total effacing of the results of a mere chance which fixed my eye on a certain stray piece of shelf-paper. It was nothing on which I would naturally have stumbled in the course of my daily round, for it was an old number of an Australian journal, the Sydney Bulletin for April 18, 1925. It had escaped even the cutting bureau which had at the time of its issuance been avidly collecting material for my uncle's research. + + I had largely given over my inquiries into what Professor Angell called the "Cthulhu Cult", and was visiting a learned friend in Paterson, New Jersey; the curator of a local museum and a mineralogist of note. Examining one day the reserve specimens roughly set on the storage shelves in a rear room of the museum, my eye was caught by an odd picture in one of the old papers spread beneath the stones. It was the Sydney Bulletin I have mentioned, for my friend had wide affiliations in all conceivable foreign parts; and the picture was a half-tone cut of a hideous stone image almost identical with that which Legrasse had found in the swamp. +. +
1 +

If heaven ever wishes to grant me a boon, it will be a total effacing of the results of a mere chance which fixed my eye on a certain stray piece of shelf-paper. It was nothing on which I would naturally have stumbled in the course of my daily round, for it was an old number of an Australian journal, the Sydney Bulletin for April 18, 1925. It had escaped even the cutting bureau which had at the time of its issuance been avidly collecting material for my uncle's research.

+
+

I had largely given over my inquiries into what Professor Angell called the "Cthulhu Cult", and was visiting a learned friend in Paterson, New Jersey; the curator of a local museum and a mineralogist of note. Examining one day the reserve specimens roughly set on the storage shelves in a rear room of the museum, my eye was caught by an odd picture in one of the old papers spread beneath the stones. It was the Sydney Bulletin I have mentioned, for my friend had wide affiliations in all conceivable foreign parts; and the picture was a half-tone cut of a hideous stone image almost identical with that which Legrasse had found in the swamp.

+
2 +

If heaven ever wishes to grant me a boon, it will be a total effacing of the results of a mere chance which fixed my eye on a certain stray piece of shelf-paper. It was nothing on which I would naturally have stumbled in the course of my daily round, for it was an old number of an Australian journal, the Sydney Bulletin for April 18, 1925. It had escaped even the cutting bureau which had at the time of its issuance been avidly collecting material for my uncle's research.

+

I had largely given over my inquiries into what Professor Angell called the "Cthulhu Cult", and was visiting a learned friend in Paterson, New Jersey; the curator of a local museum and a mineralogist of note. Examining one day the reserve specimens roughly set on the storage shelves in a rear room of the museum, my eye was caught by an odd picture in one of the old papers spread beneath the stones. It was the Sydney Bulletin I have mentioned, for my friend had wide affiliations in all conceivable foreign parts; and the picture was a half-tone cut of a hideous stone image almost identical with that which Legrasse had found in the swamp.

+
+```````````````````````````````` + + +A footnote will end on a single line break if the following paragraph isn't indented. Note that +this behavior changed in version 0.1.0, to become more like hoedown. See issue #21. + +```````````````````````````````` example +[^ipsum]: How much wood would a woodchuck chuck. + +If a woodchuck could chuck wood. + + +# Forms of entertainment that aren't childish +. +
1 +

How much wood would a woodchuck chuck.

+
+

If a woodchuck could chuck wood.

+

Forms of entertainment that aren't childish

+```````````````````````````````` + + +If the following footnote is indented, however, then it'll be included, regardless of how many +blank lines separate it from the footnote definition. See +. + +```````````````````````````````` example +Footnotes [^one] [^many]. + +[^one]: + + + + + + first paragraph inside footnote + +[^many]: first paragraph inside footnote + + + + + + second paragraph still inside footnote +. +

Footnotes 1 2.

+
1 +

first paragraph inside footnote

+
+
2 +

first paragraph inside footnote

+

second paragraph still inside footnote

+
+```````````````````````````````` + + +A footnote will also break if it's inside another container. + +```````````````````````````````` example +> He's also really stupid. [^why] +> +> [^why]: Because your mamma! + +As such, we can guarantee that the non-childish forms of entertainment are probably more entertaining to adults, since, having had a whole childhood doing the childish ones, the non-childish ones are merely the ones that haven't gotten boring yet. +. +
+

He's also really stupid. 1

+
1 +

Because your mamma!

+
+
+

As such, we can guarantee that the non-childish forms of entertainment are probably more entertaining to adults, since, having had a whole childhood doing the childish ones, the non-childish ones are merely the ones that haven't gotten boring yet.

+```````````````````````````````` + + +As a special exception, footnotes cannot be nested directly inside each other. + +```````````````````````````````` example +Nested footnotes are considered poor style. [^a] [^xkcd] [^indent1] [^indent2] + +[^a]: This does not mean that footnotes cannot reference each other. [^b] + +[^b]: This means that a footnote definition cannot be directly inside another footnote definition. +> This means that a footnote cannot be directly inside another footnote's body. [^e] +> +> [^e]: They can, however, be inside anything else. + +[^xkcd]: [The other kind of nested footnote is, however, considered poor style.](https://xkcd.com/1208/) + +[^indent1]: indent1 + + [^indent2]: indent2 +. +

Nested footnotes are considered poor style. 1 2 3 4

+
1 +

This does not mean that footnotes cannot reference each other. 5

+
+
5 +

This means that a footnote definition cannot be directly inside another footnote definition.

+
+
+

This means that a footnote cannot be directly inside another footnote's body. 6

+
6 +

They can, however, be inside anything else.

+
+
+ +
3 +

indent1

+
+
4 +

indent2

+
+```````````````````````````````` + + +They do **not** need one line between each other. + +```````````````````````````````` example +[^Doh] Ray Me Fa So La Te Do! [^1] + +[^Doh]: I know. Wrong Doe. And it won't render right. +[^1]: Common for people practicing music. +. +

1 Ray Me Fa So La Te Do! 2

+
1 +

I know. Wrong Doe. And it won't render right.

+
+
2 +

Common for people practicing music.

+
+```````````````````````````````` + +ISSUE 413 + +```````````````````````````````` example +Lorem ipsum.[^a] + +An unordered list before the footnotes: +* Ipsum +* Lorem + +[^a]: Cool. +. +

Lorem ipsum.1

+

An unordered list before the footnotes:

+
    +
  • Ipsum
  • +
  • Lorem
  • +
+
1 +

Cool.

+
+```````````````````````````````` + + +Test case for more footnotes with list. Note that, while the DOM produced here is similar to +GitHub's DOM (except GitHub reorders all footnotes to the end), they have a weird flexbox setup +that causes lists nested inside footnotes to look really weird. + + + +```````````````````````````````` example +Songs that simply loop are a popular way to annoy people. [^examples] + +[^examples]: * [The song that never ends](https://www.youtube.com/watch?v=0U2zJOryHKQ) +* [I know a song that gets on everybody's nerves](https://www.youtube.com/watch?v=TehWI09qxls) +* [Ninety-nine bottles of beer on the wall](https://www.youtube.com/watch?v=qVjCag8XoHQ) + + +Songs that simply loop are a popular way to annoy people. [^examples2] + +[^examples2]: * [The song that never ends](https://www.youtube.com/watch?v=0U2zJOryHKQ) 2 + * [I know a song that gets on everybody's nerves](https://www.youtube.com/watch?v=TehWI09qxls) 2 + - [Ninety-nine bottles of beer on the wall](https://www.youtube.com/watch?v=qVjCag8XoHQ) 2 + + +Songs that simply loop are a popular way to annoy people. [^examples3] + +[^examples3]: * [The song that never ends](https://www.youtube.com/watch?v=0U2zJOryHKQ) 3 + + * [I know a song that gets on everybody's nerves](https://www.youtube.com/watch?v=TehWI09qxls) 3 + + * [Ninety-nine bottles of beer on the wall](https://www.youtube.com/watch?v=qVjCag8XoHQ) 3 +. +

Songs that simply loop are a popular way to annoy people. 1

+ + +

Songs that simply loop are a popular way to annoy people. 2

+ +

Songs that simply loop are a popular way to annoy people. 3

+ +```````````````````````````````` + + +Test case for the relationship between link references and footnotes. + + +In this case, pulldown-cmark treats all four `[cmark-gfm]` uses as links. +GitHub, however, writes +`My [cmark-gfm]1.` +in the first paragraph. This seems like a bug, and would require some gymnastics for +pulldown-cmark to copy it, but this test case is kept here to keep track of the decision to +diverge from GFM's behavior. + +```````````````````````````````` example +My [cmark-gfm][^c]. + +My [cmark-gfm][cmark-gfm][^c]. + +My [cmark-gfm][][^c]. + +My [cmark-gfm] [^c]. + +My [cmark-gfm[^c]]. + +[cmark-gfm]: https://github.com/github/cmark-gfm/blob/1e230827a584ebc9938c3eadc5059c55ef3c9abf/test/extensions.txt#L702 + +[^c]: cmark-gfm is under the MIT license, so incorporating parts of its + test suite into pulldown-cmark should be fine. + + +My [otherlink[^c]]. + +[otherlink[^c]]: https://github.com/github/cmark-gfm/blob/1e230827a584ebc9938c3eadc5059c55ef3c9abf/test/extensions.txt#L702 +. +

My cmark-gfm1.

+

My cmark-gfm1.

+

My cmark-gfm1.

+

My cmark-gfm 1.

+

My [cmark-gfm1].

+
1 +

cmark-gfm is under the MIT license, so incorporating parts of its +test suite into pulldown-cmark should be fine.

+
+

My [otherlink1].

+

[otherlink1]: https://github.com/github/cmark-gfm/blob/1e230827a584ebc9938c3eadc5059c55ef3c9abf/test/extensions.txt#L702

+```````````````````````````````` diff --git a/src/firstpass.rs b/src/firstpass.rs index ccad82e0c..7c2b92376 100644 --- a/src/firstpass.rs +++ b/src/firstpass.rs @@ -4,7 +4,7 @@ use std::cmp::max; use std::ops::Range; -use crate::parse::{scan_containers, Allocations, HeadingAttributes, Item, ItemBody, LinkDef}; +use crate::parse::{scan_containers, Allocations, HeadingAttributes, Item, ItemBody, LinkDef, FootnoteDef}; use crate::strings::CowStr; use crate::tree::{Tree, TreeIndex}; use crate::Options; @@ -67,7 +67,7 @@ impl<'a, 'b> FirstPass<'a, 'b> { let bytes = self.text.as_bytes(); let mut line_start = LineStart::new(&bytes[start_ix..]); - let i = scan_containers(&self.tree, &mut line_start); + let i = scan_containers(&self.tree, &mut line_start, self.options.contains(Options::ENABLE_GFM_FOOTNOTES)); for _ in i..self.tree.spine_len() { self.pop(start_ix); } @@ -91,6 +91,15 @@ impl<'a, 'b> FirstPass<'a, 'b> { start_ix += scan_blank_line(&bytes[start_ix..]).unwrap_or(0); line_start = LineStart::new(&bytes[start_ix..]); } + } else if self.options.contains(Options::ENABLE_GFM_FOOTNOTES) { + // Footnote definitions of the form + // [^bar]: + // * anything really + let container_start = start_ix + line_start.bytes_scanned(); + if let Some(bytecount) = self.parse_footnote(container_start) { + start_ix = container_start + bytecount; + line_start = LineStart::new(&bytes[start_ix..]); + } } // Process new containers @@ -308,13 +317,13 @@ impl<'a, 'b> FirstPass<'a, 'b> { let bytes = self.text.as_bytes(); let mut line_start = LineStart::new(&bytes[ix..]); let current_container = - scan_containers(&self.tree, &mut line_start) == self.tree.spine_len(); + scan_containers(&self.tree, &mut line_start, self.options.contains(Options::ENABLE_GFM_FOOTNOTES)) == self.tree.spine_len(); if !current_container { return None; } line_start.scan_all_space(); ix += line_start.bytes_scanned(); - if scan_paragraph_interrupt(&bytes[ix..], current_container) { + if scan_paragraph_interrupt(&bytes[ix..], current_container, self.options.contains(Options::ENABLE_GFM_FOOTNOTES)) { return None; } @@ -365,7 +374,7 @@ impl<'a, 'b> FirstPass<'a, 'b> { ix = next_ix; let mut line_start = LineStart::new(&bytes[ix..]); let current_container = - scan_containers(&self.tree, &mut line_start) == self.tree.spine_len(); + scan_containers(&self.tree, &mut line_start, self.options.contains(Options::ENABLE_GFM_FOOTNOTES)) == self.tree.spine_len(); if !line_start.scan_space(4) { let ix_new = ix + line_start.bytes_scanned(); if current_container { @@ -389,7 +398,7 @@ impl<'a, 'b> FirstPass<'a, 'b> { } // first check for non-empty lists, then for other interrupts let suffix = &bytes[ix_new..]; - if scan_paragraph_interrupt(suffix, current_container) { + if scan_paragraph_interrupt(suffix, current_container, self.options.contains(Options::ENABLE_GFM_FOOTNOTES)) { break; } } @@ -506,7 +515,7 @@ impl<'a, 'b> FirstPass<'a, 'b> { // check if we may be parsing a table let next_line_ix = ix + eol_bytes; let mut line_start = LineStart::new(&bytes[next_line_ix..]); - if scan_containers(&self.tree, &mut line_start) == self.tree.spine_len() { + if scan_containers(&self.tree, &mut line_start, self.options.contains(Options::ENABLE_GFM_FOOTNOTES)) == self.tree.spine_len() { let table_head_ix = next_line_ix + line_start.bytes_scanned(); let (table_head_bytes, alignment) = scan_table_head(&bytes[table_head_ix..]); @@ -787,7 +796,7 @@ impl<'a, 'b> FirstPass<'a, 'b> { self.append_html_line(remaining_space, line_start_ix, ix); let mut line_start = LineStart::new(&bytes[ix..]); - let n_containers = scan_containers(&self.tree, &mut line_start); + let n_containers = scan_containers(&self.tree, &mut line_start, self.options.contains(Options::ENABLE_GFM_FOOTNOTES)); if n_containers < self.tree.spine_len() { break; } @@ -822,7 +831,7 @@ impl<'a, 'b> FirstPass<'a, 'b> { self.append_html_line(remaining_space, line_start_ix, ix); let mut line_start = LineStart::new(&bytes[ix..]); - let n_containers = scan_containers(&self.tree, &mut line_start); + let n_containers = scan_containers(&self.tree, &mut line_start, self.options.contains(Options::ENABLE_GFM_FOOTNOTES)); if n_containers < self.tree.spine_len() || line_start.is_at_eol() { break; } @@ -865,7 +874,7 @@ impl<'a, 'b> FirstPass<'a, 'b> { } let mut line_start = LineStart::new(&bytes[ix..]); - let n_containers = scan_containers(&self.tree, &mut line_start); + let n_containers = scan_containers(&self.tree, &mut line_start, self.options.contains(Options::ENABLE_GFM_FOOTNOTES)); if n_containers < self.tree.spine_len() || !(line_start.scan_space(4) || line_start.is_at_eol()) { @@ -912,7 +921,7 @@ impl<'a, 'b> FirstPass<'a, 'b> { self.tree.push(); loop { let mut line_start = LineStart::new(&bytes[ix..]); - let n_containers = scan_containers(&self.tree, &mut line_start); + let n_containers = scan_containers(&self.tree, &mut line_start, self.options.contains(Options::ENABLE_GFM_FOOTNOTES)); if n_containers < self.tree.spine_len() { break; } @@ -961,7 +970,7 @@ impl<'a, 'b> FirstPass<'a, 'b> { self.tree.push(); loop { let mut line_start = LineStart::new(&bytes[ix..]); - let n_containers = scan_containers(&self.tree, &mut line_start); + let n_containers = scan_containers(&self.tree, &mut line_start, self.options.contains(Options::ENABLE_GFM_FOOTNOTES)); if n_containers < self.tree.spine_len() { break; } @@ -1187,6 +1196,19 @@ impl<'a, 'b> FirstPass<'a, 'b> { } i += 1; self.finish_list(start); + if self.options.contains(Options::ENABLE_GFM_FOOTNOTES) { + if let Some(node_ix) = self.tree.peek_up() { + if let ItemBody::FootnoteDefinition(..) = self.tree[node_ix].item.body { + // finish previous footnote if it's still open + self.pop(start); + } + } + i += scan_whitespace_no_nl(&bytes[i..]); + } + self.allocs.footdefs.0.insert(UniCase::new(label.clone()), FootnoteDef { + span: start..i, + use_count: 0, + }); self.tree.append(Item { start, end: 0, // will get set later @@ -1203,10 +1225,10 @@ impl<'a, 'b> FirstPass<'a, 'b> { scan_link_label_rest(&self.text[start..], &|bytes| { let mut line_start = LineStart::new(bytes); let current_container = - scan_containers(&self.tree, &mut line_start) == self.tree.spine_len(); + scan_containers(&self.tree, &mut line_start, self.options.contains(Options::ENABLE_GFM_FOOTNOTES)) == self.tree.spine_len(); let bytes_scanned = line_start.bytes_scanned(); let suffix = &bytes[bytes_scanned..]; - if scan_paragraph_interrupt(suffix, current_container) { + if scan_paragraph_interrupt(suffix, current_container, self.options.contains(Options::ENABLE_GFM_FOOTNOTES)) { None } else { Some(bytes_scanned) @@ -1246,7 +1268,7 @@ impl<'a, 'b> FirstPass<'a, 'b> { break; } let mut line_start = LineStart::new(&bytes[i..]); - if self.tree.spine_len() != scan_containers(&self.tree, &mut line_start) { + if self.tree.spine_len() != scan_containers(&self.tree, &mut line_start, self.options.contains(Options::ENABLE_GFM_FOOTNOTES)) { return None; } i += line_start.bytes_scanned(); @@ -1383,7 +1405,7 @@ fn count_header_cols( } /// Checks whether we should break a paragraph on the given input. -fn scan_paragraph_interrupt(bytes: &[u8], current_container: bool) -> bool { +fn scan_paragraph_interrupt(bytes: &[u8], current_container: bool, gfm_footnote: bool) -> bool { scan_eol(bytes).is_some() || scan_hrule(bytes).is_ok() || scan_atx_heading(bytes).is_some() @@ -1398,6 +1420,9 @@ fn scan_paragraph_interrupt(bytes: &[u8], current_container: bool) -> bool { }) || bytes.starts_with(b"<") && (get_html_end_tag(&bytes[1..]).is_some() || starts_html_block_type_6(&bytes[1..])) + || (gfm_footnote && bytes.starts_with(b"[^") && scan_link_label_rest(std::str::from_utf8(&bytes[2..]).unwrap(), &|_| None).map_or(false, |(len, _)| { + bytes[2 + len] == b':' + })) } /// Assumes `text_bytes` is preceded by `<`. diff --git a/src/lib.rs b/src/lib.rs index f00d7589f..71d8831ca 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -337,6 +337,7 @@ bitflags::bitflags! { /// that are not part of the CommonMark spec. pub struct Options: u32 { const ENABLE_TABLES = 1 << 1; + /// Older footnote syntax. const ENABLE_FOOTNOTES = 1 << 2; const ENABLE_STRIKETHROUGH = 1 << 3; const ENABLE_TASKLISTS = 1 << 4; @@ -358,5 +359,13 @@ bitflags::bitflags! { /// - `+++` line at start /// - `+++` line at end const ENABLE_PLUSES_DELIMITED_METADATA_BLOCKS = 1 << 8; + /// GitHub-compatible footnote syntax. Mutually-exclusive with `ENABLE_FOOTNOTES`. + const ENABLE_GFM_FOOTNOTES = 1 << 9; + } +} + +impl Options { + pub(crate) fn has_footnotes(&self) -> bool { + self.contains(Options::ENABLE_FOOTNOTES) || self.contains(Options::ENABLE_GFM_FOOTNOTES) } } diff --git a/src/linklabel.rs b/src/linklabel.rs index 19c4964ea..9c588efc5 100644 --- a/src/linklabel.rs +++ b/src/linklabel.rs @@ -33,6 +33,8 @@ pub(crate) enum ReferenceLabel<'a> { pub(crate) type LinkLabel<'a> = UniCase>; +pub(crate) type FootnoteLabel<'a> = UniCase>; + /// Assumes the opening bracket has already been scanned. /// The line break handler determines what happens when a linebreak /// is found. It is passed the bytes following the line break and diff --git a/src/parse.rs b/src/parse.rs index c9a5626fe..5c8365bdb 100644 --- a/src/parse.rs +++ b/src/parse.rs @@ -29,7 +29,7 @@ use std::ops::{Index, Range}; use unicase::UniCase; use crate::firstpass::run_first_pass; -use crate::linklabel::{scan_link_label_rest, LinkLabel, ReferenceLabel}; +use crate::linklabel::{scan_link_label_rest, LinkLabel, ReferenceLabel, FootnoteLabel}; use crate::strings::CowStr; use crate::tree::{Tree, TreeIndex}; use crate::{scanners::*, MetadataBlockKind}; @@ -390,7 +390,8 @@ impl<'input, 'callback> Parser<'input, 'callback> { &self.tree, block_text, next, - self.options.contains(Options::ENABLE_FOOTNOTES), + self.options.has_footnotes(), + self.options.contains(Options::ENABLE_GFM_FOOTNOTES), ); let (node_after_link, link_type) = match scan_result { // [label][reference] @@ -447,7 +448,8 @@ impl<'input, 'callback> Parser<'input, 'callback> { scan_link_label( &self.tree, &self.text[label_start..label_end], - self.options.contains(Options::ENABLE_FOOTNOTES), + self.options.has_footnotes(), + self.options.contains(Options::ENABLE_GFM_FOOTNOTES), ) .map(|(ix, label)| (label, label_start + ix)) .filter(|(_, end)| *end == label_end) @@ -462,15 +464,21 @@ impl<'input, 'callback> Parser<'input, 'callback> { // see if it's a footnote reference if let Some((ReferenceLabel::Footnote(l), end)) = label { - self.tree[tos.node].next = node_after_link; - self.tree[tos.node].child = None; - self.tree[tos.node].item.body = - ItemBody::FootnoteReference(self.allocs.allocate_cow(l)); - self.tree[tos.node].item.end = end; - prev = Some(tos.node); - cur = node_after_link; - self.link_stack.clear(); - continue; + let footref = self.allocs.allocate_cow(l); + if let Some(def) = self.allocs.footdefs.get_mut(self.allocs.cows[footref.0].to_owned().into()) { + def.use_count += 1; + } + if !self.options.contains(Options::ENABLE_GFM_FOOTNOTES) || self.allocs.footdefs.contains(&self.allocs.cows[footref.0]) { + self.tree[tos.node].next = node_after_link; + self.tree[tos.node].child = None; + self.tree[tos.node].item.body = + ItemBody::FootnoteReference(footref); + self.tree[tos.node].item.end = end; + prev = Some(tos.node); + cur = node_after_link; + self.link_stack.clear(); + continue; + } } else if let Some((ReferenceLabel::Link(link_label), end)) = label { let type_url_title = self .allocs @@ -881,7 +889,7 @@ impl<'input, 'callback> Parser<'input, 'callback> { &bytes[(ix - 1)..], Some(&|bytes| { let mut line_start = LineStart::new(bytes); - let _ = scan_containers(&self.tree, &mut line_start); + let _ = scan_containers(&self.tree, &mut line_start, self.options.contains(Options::ENABLE_GFM_FOOTNOTES)); line_start.bytes_scanned() }), )?; @@ -898,7 +906,7 @@ impl<'input, 'callback> Parser<'input, 'callback> { } /// Returns number of containers scanned. -pub(crate) fn scan_containers(tree: &Tree, line_start: &mut LineStart) -> usize { +pub(crate) fn scan_containers(tree: &Tree, line_start: &mut LineStart, gfm_footnotes: bool) -> usize { let mut i = 0; for &node_ix in tree.walk_spine() { match tree[node_ix].item.body { @@ -915,6 +923,13 @@ pub(crate) fn scan_containers(tree: &Tree, line_start: &mut LineStart) -> break; } } + ItemBody::FootnoteDefinition(..) if gfm_footnotes => { + let save = line_start.clone(); + if !line_start.scan_space(4) && !line_start.is_at_eol() { + *line_start = save; + break; + } + } _ => (), } i += 1; @@ -1084,6 +1099,7 @@ fn scan_link_label<'text, 'tree>( tree: &'tree Tree, text: &'text str, allow_footnote_refs: bool, + gfm_footnotes: bool, ) -> Option<(usize, ReferenceLabel<'text>)> { let bytes = text.as_bytes(); if bytes.len() < 2 || bytes[0] != b'[' { @@ -1091,7 +1107,7 @@ fn scan_link_label<'text, 'tree>( } let linebreak_handler = |bytes: &[u8]| { let mut line_start = LineStart::new(bytes); - let _ = scan_containers(tree, &mut line_start); + let _ = scan_containers(tree, &mut line_start, gfm_footnotes); Some(line_start.bytes_scanned()) }; let pair = if allow_footnote_refs && b'^' == bytes[1] { @@ -1109,6 +1125,7 @@ fn scan_reference<'a, 'b>( text: &'b str, cur: Option, allow_footnote_refs: bool, + gfm_footnotes: bool, ) -> RefScan<'b> { let cur_ix = match cur { None => return RefScan::Failed, @@ -1122,7 +1139,7 @@ fn scan_reference<'a, 'b>( let closing_node = tree[cur_ix].next.unwrap(); RefScan::Collapsed(tree[closing_node].next) } else if let Some((ix, ReferenceLabel::Link(label))) = - scan_link_label(tree, &text[start..], allow_footnote_refs) + scan_link_label(tree, &text[start..], allow_footnote_refs, gfm_footnotes) { RefScan::LinkLabel(label, start + ix) } else { @@ -1183,6 +1200,13 @@ pub struct LinkDef<'a> { pub span: Range, } +/// Contains the destination URL, title and source span of a reference definition. +#[derive(Clone, Debug)] +pub struct FootnoteDef { + pub span: Range, + pub use_count: usize, +} + /// Tracks tree indices of code span delimiters of each length. It should prevent /// quadratic scanning behaviours by providing (amortized) constant time lookups. struct CodeDelims { @@ -1245,6 +1269,7 @@ pub(crate) struct HeadingIndex(NonZeroUsize); #[derive(Clone)] pub(crate) struct Allocations<'a> { pub refdefs: RefDefs<'a>, + pub footdefs: FootnoteDefs<'a>, links: Vec<(LinkType, CowStr<'a>, CowStr<'a>, CowStr<'a>)>, cows: Vec>, alignments: Vec>, @@ -1263,6 +1288,10 @@ pub(crate) struct HeadingAttributes<'a> { #[derive(Clone, Default, Debug)] pub struct RefDefs<'input>(pub(crate) HashMap, LinkDef<'input>>); +/// Keeps track of the footnote definitions defined in the document. +#[derive(Clone, Default, Debug)] +pub struct FootnoteDefs<'input>(pub(crate) HashMap, FootnoteDef>); + impl<'input, 'b, 's> RefDefs<'input> where 's: 'b, @@ -1278,10 +1307,25 @@ where } } +impl<'input, 'b, 's> FootnoteDefs<'input> +where + 's: 'b, +{ + /// Performs a lookup on reference label using unicode case folding. + pub fn contains(&'s self, key: &'b str) -> bool { + self.0.contains_key(&UniCase::new(key.into())) + } + /// Performs a lookup on reference label using unicode case folding. + pub fn get_mut(&'s mut self, key: CowStr<'input>) -> Option<&'s mut FootnoteDef> { + self.0.get_mut(&UniCase::new(key.into())) + } +} + impl<'a> Allocations<'a> { pub fn new() -> Self { Self { refdefs: RefDefs::default(), + footdefs: FootnoteDefs::default(), links: Vec::with_capacity(128), cows: Vec::new(), alignments: Vec::new(), diff --git a/tests/lib.rs b/tests/lib.rs index 2e95f8e5e..6178153de 100644 --- a/tests/lib.rs +++ b/tests/lib.rs @@ -14,14 +14,18 @@ use tendril::stream::TendrilSink; mod suite; #[inline(never)] -pub fn test_markdown_html(input: &str, output: &str, smart_punct: bool, metadata_blocks: bool) { +pub fn test_markdown_html(input: &str, output: &str, smart_punct: bool, metadata_blocks: bool, is_gfm: bool) { let mut s = String::new(); let mut opts = Options::empty(); opts.insert(Options::ENABLE_TABLES); - opts.insert(Options::ENABLE_FOOTNOTES); opts.insert(Options::ENABLE_STRIKETHROUGH); opts.insert(Options::ENABLE_TASKLISTS); + if is_gfm { + opts.insert(Options::ENABLE_GFM_FOOTNOTES); + } else { + opts.insert(Options::ENABLE_FOOTNOTES); + } if metadata_blocks { opts.insert(Options::ENABLE_YAML_STYLE_METADATA_BLOCKS); opts.insert(Options::ENABLE_PLUSES_DELIMITED_METADATA_BLOCKS); diff --git a/tests/suite/footnotes.rs b/tests/suite/footnotes.rs index 009936cc9..3fc9aa7b4 100644 --- a/tests/suite/footnotes.rs +++ b/tests/suite/footnotes.rs @@ -15,7 +15,7 @@ fn footnotes_test_1() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -34,7 +34,7 @@ Yes it goes on and on my friends. "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -71,7 +71,7 @@ I had largely given over my inquiries into what Professor Angell called the "Cth

I had largely given over my inquiries into what Professor Angell called the "Cthulhu Cult", and was visiting a learned friend in Paterson, New Jersey; the curator of a local museum and a mineralogist of note. Examining one day the reserve specimens roughly set on the storage shelves in a rear room of the museum, my eye was caught by an odd picture in one of the old papers spread beneath the stones. It was the Sydney Bulletin I have mentioned, for my friend had wide affiliations in all conceivable foreign parts; and the picture was a half-tone cut of a hideous stone image almost identical with that which Legrasse had found in the swamp.

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -90,7 +90,7 @@ If a woodchuck could chuck wood.

Forms of entertainment that aren't childish

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -110,7 +110,7 @@ As such, we can guarantee that the non-childish forms of entertainment are proba

As such, we can guarantee that the non-childish forms of entertainment are probably more entertaining to adults, since, having had a whole childhood doing the childish ones, the non-childish ones are merely the ones that haven't gotten boring yet.

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -144,7 +144,7 @@ fn footnotes_test_7() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -161,5 +161,5 @@ fn footnotes_test_8() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } diff --git a/tests/suite/gfm_footnotes.rs b/tests/suite/gfm_footnotes.rs new file mode 100644 index 000000000..a6f27baf3 --- /dev/null +++ b/tests/suite/gfm_footnotes.rs @@ -0,0 +1,419 @@ +// This file is auto-generated by the build script +// Please, do not modify it manually + +use super::test_markdown_html; + +#[test] +fn gfm_footnotes_test_1() { + let original = r##"Lorem ipsum.[^a] [^missing] + +[^a]: Cool. +"##; + let expected = r##"

Lorem ipsum.1 [^missing]

+
1 +

Cool.

+
+"##; + + test_markdown_html(original, expected, false, false, true); +} + +#[test] +fn gfm_footnotes_test_2() { + let original = r##"> This is the song that never ends.\ +> Yes it goes on and on my friends.[^lambchops] +> +> [^lambchops]: +"##; + let expected = r##"
+

This is the song that never ends.
+Yes it goes on and on my friends.1

+ +
+"##; + + test_markdown_html(original, expected, false, false, true); +} + +#[test] +fn gfm_footnotes_test_3() { + let original = r##"Songs that simply loop are a popular way to annoy people. [^examples] + +[^examples]: + * [The song that never ends](https://www.youtube.com/watch?v=0U2zJOryHKQ) + * [I know a song that gets on everybody's nerves](https://www.youtube.com/watch?v=TehWI09qxls) + * [Ninety-nine bottles of beer on the wall](https://www.youtube.com/watch?v=qVjCag8XoHQ) +"##; + let expected = r##"

Songs that simply loop are a popular way to annoy people. 1

+
1
+ +"##; + + test_markdown_html(original, expected, false, false, true); +} + +#[test] +fn gfm_footnotes_test_4() { + let original = r##"Songs that simply loop are a popular way to annoy people. [^examples] + +[^examples]: + * [The song that never ends](https://www.youtube.com/watch?v=0U2zJOryHKQ) + * [I know a song that gets on everybody's nerves](https://www.youtube.com/watch?v=TehWI09qxls) + * [Ninety-nine bottles of beer on the wall](https://www.youtube.com/watch?v=qVjCag8XoHQ) +"##; + let expected = r##"

Songs that simply loop are a popular way to annoy people. 1

+ +"##; + + test_markdown_html(original, expected, false, false, true); +} + +#[test] +fn gfm_footnotes_test_5() { + let original = r##"[^not-code] [^code] [^quote] [^not-quote] [^indented-quote] + +[^not-code]: not code + +[^code]: + code + +[^quote]: > quote + +[^not-quote]: + > external quote + +[^indented-quote]: + > indented quote +"##; + let expected = r##"

1 2 3 4 5

+
1 +

not code

+
+
2 +
code
+
+
+
3 +

quote

+
+
4
+

external quote

5 +

indented quote

+
+"##; + + test_markdown_html(original, expected, false, false, true); +} + +#[test] +fn gfm_footnotes_test_6() { + let original = r##"[^ab] [^cd] + +[^ab]: a +b + +[^cd]: c\ +d +"##; + let expected = r##"

1 2

+
1 +

a +b

+
+
2 +

c
+d

+
+"##; + + test_markdown_html(original, expected, false, false, true); +} + +#[test] +fn gfm_footnotes_test_7() { + let original = r##"[^lorem]: If heaven ever wishes to grant me a boon, it will be a total effacing of the results of a mere chance which fixed my eye on a certain stray piece of shelf-paper. It was nothing on which I would naturally have stumbled in the course of my daily round, for it was an old number of an Australian journal, the Sydney Bulletin for April 18, 1925. It had escaped even the cutting bureau which had at the time of its issuance been avidly collecting material for my uncle's research. + +I had largely given over my inquiries into what Professor Angell called the "Cthulhu Cult", and was visiting a learned friend in Paterson, New Jersey; the curator of a local museum and a mineralogist of note. Examining one day the reserve specimens roughly set on the storage shelves in a rear room of the museum, my eye was caught by an odd picture in one of the old papers spread beneath the stones. It was the Sydney Bulletin I have mentioned, for my friend had wide affiliations in all conceivable foreign parts; and the picture was a half-tone cut of a hideous stone image almost identical with that which Legrasse had found in the swamp. + +[^ipsum]: If heaven ever wishes to grant me a boon, it will be a total effacing of the results of a mere chance which fixed my eye on a certain stray piece of shelf-paper. It was nothing on which I would naturally have stumbled in the course of my daily round, for it was an old number of an Australian journal, the Sydney Bulletin for April 18, 1925. It had escaped even the cutting bureau which had at the time of its issuance been avidly collecting material for my uncle's research. + + I had largely given over my inquiries into what Professor Angell called the "Cthulhu Cult", and was visiting a learned friend in Paterson, New Jersey; the curator of a local museum and a mineralogist of note. Examining one day the reserve specimens roughly set on the storage shelves in a rear room of the museum, my eye was caught by an odd picture in one of the old papers spread beneath the stones. It was the Sydney Bulletin I have mentioned, for my friend had wide affiliations in all conceivable foreign parts; and the picture was a half-tone cut of a hideous stone image almost identical with that which Legrasse had found in the swamp. +"##; + let expected = r##"
1 +

If heaven ever wishes to grant me a boon, it will be a total effacing of the results of a mere chance which fixed my eye on a certain stray piece of shelf-paper. It was nothing on which I would naturally have stumbled in the course of my daily round, for it was an old number of an Australian journal, the Sydney Bulletin for April 18, 1925. It had escaped even the cutting bureau which had at the time of its issuance been avidly collecting material for my uncle's research.

+
+

I had largely given over my inquiries into what Professor Angell called the "Cthulhu Cult", and was visiting a learned friend in Paterson, New Jersey; the curator of a local museum and a mineralogist of note. Examining one day the reserve specimens roughly set on the storage shelves in a rear room of the museum, my eye was caught by an odd picture in one of the old papers spread beneath the stones. It was the Sydney Bulletin I have mentioned, for my friend had wide affiliations in all conceivable foreign parts; and the picture was a half-tone cut of a hideous stone image almost identical with that which Legrasse had found in the swamp.

+
2 +

If heaven ever wishes to grant me a boon, it will be a total effacing of the results of a mere chance which fixed my eye on a certain stray piece of shelf-paper. It was nothing on which I would naturally have stumbled in the course of my daily round, for it was an old number of an Australian journal, the Sydney Bulletin for April 18, 1925. It had escaped even the cutting bureau which had at the time of its issuance been avidly collecting material for my uncle's research.

+

I had largely given over my inquiries into what Professor Angell called the "Cthulhu Cult", and was visiting a learned friend in Paterson, New Jersey; the curator of a local museum and a mineralogist of note. Examining one day the reserve specimens roughly set on the storage shelves in a rear room of the museum, my eye was caught by an odd picture in one of the old papers spread beneath the stones. It was the Sydney Bulletin I have mentioned, for my friend had wide affiliations in all conceivable foreign parts; and the picture was a half-tone cut of a hideous stone image almost identical with that which Legrasse had found in the swamp.

+
+"##; + + test_markdown_html(original, expected, false, false, true); +} + +#[test] +fn gfm_footnotes_test_8() { + let original = r##"[^ipsum]: How much wood would a woodchuck chuck. + +If a woodchuck could chuck wood. + + +# Forms of entertainment that aren't childish +"##; + let expected = r##"
1 +

How much wood would a woodchuck chuck.

+
+

If a woodchuck could chuck wood.

+

Forms of entertainment that aren't childish

+"##; + + test_markdown_html(original, expected, false, false, true); +} + +#[test] +fn gfm_footnotes_test_9() { + let original = r##"Footnotes [^one] [^many]. + +[^one]: + + + + + + first paragraph inside footnote + +[^many]: first paragraph inside footnote + + + + + + second paragraph still inside footnote +"##; + let expected = r##"

Footnotes 1 2.

+
1 +

first paragraph inside footnote

+
+
2 +

first paragraph inside footnote

+

second paragraph still inside footnote

+
+"##; + + test_markdown_html(original, expected, false, false, true); +} + +#[test] +fn gfm_footnotes_test_10() { + let original = r##"> He's also really stupid. [^why] +> +> [^why]: Because your mamma! + +As such, we can guarantee that the non-childish forms of entertainment are probably more entertaining to adults, since, having had a whole childhood doing the childish ones, the non-childish ones are merely the ones that haven't gotten boring yet. +"##; + let expected = r##"
+

He's also really stupid. 1

+
1 +

Because your mamma!

+
+
+

As such, we can guarantee that the non-childish forms of entertainment are probably more entertaining to adults, since, having had a whole childhood doing the childish ones, the non-childish ones are merely the ones that haven't gotten boring yet.

+"##; + + test_markdown_html(original, expected, false, false, true); +} + +#[test] +fn gfm_footnotes_test_11() { + let original = r##"Nested footnotes are considered poor style. [^a] [^xkcd] [^indent1] [^indent2] + +[^a]: This does not mean that footnotes cannot reference each other. [^b] + +[^b]: This means that a footnote definition cannot be directly inside another footnote definition. +> This means that a footnote cannot be directly inside another footnote's body. [^e] +> +> [^e]: They can, however, be inside anything else. + +[^xkcd]: [The other kind of nested footnote is, however, considered poor style.](https://xkcd.com/1208/) + +[^indent1]: indent1 + + [^indent2]: indent2 +"##; + let expected = r##"

Nested footnotes are considered poor style. 1 2 3 4

+
1 +

This does not mean that footnotes cannot reference each other. 5

+
+
5 +

This means that a footnote definition cannot be directly inside another footnote definition.

+
+
+

This means that a footnote cannot be directly inside another footnote's body. 6

+
6 +

They can, however, be inside anything else.

+
+
+ +
3 +

indent1

+
+
4 +

indent2

+
+"##; + + test_markdown_html(original, expected, false, false, true); +} + +#[test] +fn gfm_footnotes_test_12() { + let original = r##"[^Doh] Ray Me Fa So La Te Do! [^1] + +[^Doh]: I know. Wrong Doe. And it won't render right. +[^1]: Common for people practicing music. +"##; + let expected = r##"

1 Ray Me Fa So La Te Do! 2

+
1 +

I know. Wrong Doe. And it won't render right.

+
+
2 +

Common for people practicing music.

+
+"##; + + test_markdown_html(original, expected, false, false, true); +} + +#[test] +fn gfm_footnotes_test_13() { + let original = r##"Lorem ipsum.[^a] + +An unordered list before the footnotes: +* Ipsum +* Lorem + +[^a]: Cool. +"##; + let expected = r##"

Lorem ipsum.1

+

An unordered list before the footnotes:

+
    +
  • Ipsum
  • +
  • Lorem
  • +
+
1 +

Cool.

+
+"##; + + test_markdown_html(original, expected, false, false, true); +} + +#[test] +fn gfm_footnotes_test_14() { + let original = r##"Songs that simply loop are a popular way to annoy people. [^examples] + +[^examples]: * [The song that never ends](https://www.youtube.com/watch?v=0U2zJOryHKQ) +* [I know a song that gets on everybody's nerves](https://www.youtube.com/watch?v=TehWI09qxls) +* [Ninety-nine bottles of beer on the wall](https://www.youtube.com/watch?v=qVjCag8XoHQ) + + +Songs that simply loop are a popular way to annoy people. [^examples2] + +[^examples2]: * [The song that never ends](https://www.youtube.com/watch?v=0U2zJOryHKQ) 2 + * [I know a song that gets on everybody's nerves](https://www.youtube.com/watch?v=TehWI09qxls) 2 + - [Ninety-nine bottles of beer on the wall](https://www.youtube.com/watch?v=qVjCag8XoHQ) 2 + + +Songs that simply loop are a popular way to annoy people. [^examples3] + +[^examples3]: * [The song that never ends](https://www.youtube.com/watch?v=0U2zJOryHKQ) 3 + + * [I know a song that gets on everybody's nerves](https://www.youtube.com/watch?v=TehWI09qxls) 3 + + * [Ninety-nine bottles of beer on the wall](https://www.youtube.com/watch?v=qVjCag8XoHQ) 3 +"##; + let expected = r##"

Songs that simply loop are a popular way to annoy people. 1

+ + +

Songs that simply loop are a popular way to annoy people. 2

+ +

Songs that simply loop are a popular way to annoy people. 3

+ +"##; + + test_markdown_html(original, expected, false, false, true); +} + +#[test] +fn gfm_footnotes_test_15() { + let original = r##"My [cmark-gfm][^c]. + +My [cmark-gfm][cmark-gfm][^c]. + +My [cmark-gfm][][^c]. + +My [cmark-gfm] [^c]. + +My [cmark-gfm[^c]]. + +[cmark-gfm]: https://github.com/github/cmark-gfm/blob/1e230827a584ebc9938c3eadc5059c55ef3c9abf/test/extensions.txt#L702 + +[^c]: cmark-gfm is under the MIT license, so incorporating parts of its + test suite into pulldown-cmark should be fine. + + +My [otherlink[^c]]. + +[otherlink[^c]]: https://github.com/github/cmark-gfm/blob/1e230827a584ebc9938c3eadc5059c55ef3c9abf/test/extensions.txt#L702 +"##; + let expected = r##"

My cmark-gfm1.

+

My cmark-gfm1.

+

My cmark-gfm1.

+

My cmark-gfm 1.

+

My [cmark-gfm1].

+
1 +

cmark-gfm is under the MIT license, so incorporating parts of its +test suite into pulldown-cmark should be fine.

+
+

My [otherlink1].

+

[otherlink1]: https://github.com/github/cmark-gfm/blob/1e230827a584ebc9938c3eadc5059c55ef3c9abf/test/extensions.txt#L702

+"##; + + test_markdown_html(original, expected, false, false, true); +} diff --git a/tests/suite/gfm_strikethrough.rs b/tests/suite/gfm_strikethrough.rs index 013dad071..560551b2c 100644 --- a/tests/suite/gfm_strikethrough.rs +++ b/tests/suite/gfm_strikethrough.rs @@ -10,7 +10,7 @@ fn gfm_strikethrough_test_1() { let expected = r##"

Hi Hello, there world!

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, true); } #[test] @@ -23,7 +23,7 @@ new paragraph~~.

new paragraph~~.

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, true); } #[test] @@ -33,5 +33,5 @@ fn gfm_strikethrough_test_3() { let expected = r##"

This will ~~~not~~~ strike.

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, true); } diff --git a/tests/suite/gfm_table.rs b/tests/suite/gfm_table.rs index 7f5c1a075..828c7ef3d 100644 --- a/tests/suite/gfm_table.rs +++ b/tests/suite/gfm_table.rs @@ -25,7 +25,7 @@ fn gfm_table_test_1() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, true); } #[test] @@ -50,7 +50,7 @@ bar | baz "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, true); } #[test] @@ -77,7 +77,7 @@ fn gfm_table_test_3() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, true); } #[test] @@ -106,7 +106,7 @@ fn gfm_table_test_4() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, true); } #[test] @@ -139,7 +139,7 @@ bar

bar

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, true); } #[test] @@ -153,7 +153,7 @@ fn gfm_table_test_6() { | bar |

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, true); } #[test] @@ -183,7 +183,7 @@ fn gfm_table_test_7() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, true); } #[test] @@ -201,7 +201,7 @@ fn gfm_table_test_8() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, true); } #[test] @@ -228,5 +228,5 @@ fn gfm_table_test_9() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, true); } diff --git a/tests/suite/gfm_tasklist.rs b/tests/suite/gfm_tasklist.rs index b7d47f510..e1141648e 100644 --- a/tests/suite/gfm_tasklist.rs +++ b/tests/suite/gfm_tasklist.rs @@ -14,7 +14,7 @@ fn gfm_tasklist_test_1() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, true); } #[test] @@ -35,5 +35,5 @@ fn gfm_tasklist_test_2() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, true); } diff --git a/tests/suite/heading_attrs.rs b/tests/suite/heading_attrs.rs index 336073665..35f518cea 100644 --- a/tests/suite/heading_attrs.rs +++ b/tests/suite/heading_attrs.rs @@ -20,7 +20,7 @@ multiple! {.myclass1 myattr #myh3 otherattr=value .myclass2}

multiple!

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -36,7 +36,7 @@ fn heading_attrs_test_2() {

multiple!

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -53,7 +53,7 @@ fn heading_attrs_test_3() {

non-attribute-block {#id4}

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -65,7 +65,7 @@ fn heading_attrs_test_4() {

tabs

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -77,7 +77,7 @@ nextline

nextline

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -99,7 +99,7 @@ nextline {.class}

](https://example.com/) {#myid3}

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -114,7 +114,7 @@ cont "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -133,7 +133,7 @@ fn heading_attrs_test_8() { } "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -145,7 +145,7 @@ fn heading_attrs_test_9() {

recommended style with spaces

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -159,7 +159,7 @@ fn heading_attrs_test_10() {

H3

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -171,7 +171,7 @@ fn heading_attrs_test_11() {

H2

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -183,7 +183,7 @@ fn heading_attrs_test_12() {

H2 {#id2

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -195,7 +195,7 @@ fn heading_attrs_test_13() {

H2 #id2}

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -207,7 +207,7 @@ fn heading_attrs_test_14() {

H2 {#id2}

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -225,7 +225,7 @@ fn heading_attrs_test_15() {
text
"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -235,7 +235,7 @@ fn heading_attrs_test_16() { let expected = r##"

H1

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -245,7 +245,7 @@ fn heading_attrs_test_17() { let expected = r##"

H1

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -255,7 +255,7 @@ fn heading_attrs_test_18() { let expected = r##"

H1

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -267,7 +267,7 @@ fn heading_attrs_test_19() {

H2

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -279,7 +279,7 @@ fn heading_attrs_test_20() {

H2

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -289,7 +289,7 @@ fn heading_attrs_test_21() { let expected = r##"

Header

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -299,7 +299,7 @@ fn heading_attrs_test_22() { let expected = r##"

Header

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -311,7 +311,7 @@ fn heading_attrs_test_23() {

H2 {.foo

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -321,7 +321,7 @@ fn heading_attrs_test_24() { let expected = r##"

H1 {.foo}bar}

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -331,7 +331,7 @@ fn heading_attrs_test_25() { let expected = r##"

H1 {foo}

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -341,7 +341,7 @@ fn heading_attrs_test_26() { let expected = r##"

H1 {.foo}

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -354,7 +354,7 @@ fn heading_attrs_test_27() { .bar} "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -368,7 +368,7 @@ fn heading_attrs_test_28() {

H2 {}

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -378,7 +378,7 @@ fn heading_attrs_test_29() { let expected = r##"

H2 {}

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -396,7 +396,7 @@ newline can be used for setext heading { } "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -410,7 +410,7 @@ fn heading_attrs_test_31() {

stray backslash at the end is preserved \

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -428,7 +428,7 @@ stray backslash at the end is preserved \

stray backslash at the end is preserved \

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -442,7 +442,7 @@ fn heading_attrs_test_33() {

H3

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -461,7 +461,7 @@ H2-2 {#foo**bar**baz}

H2-2

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -475,7 +475,7 @@ fn heading_attrs_test_35() {

H3

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -487,7 +487,7 @@ fn heading_attrs_test_36() {

H2

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -499,7 +499,7 @@ fn heading_attrs_test_37() {

H1

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -518,7 +518,7 @@ fn heading_attrs_test_38() {

#{}

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -545,7 +545,7 @@ fn heading_attrs_test_39() {

{}

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -565,7 +565,7 @@ fn heading_attrs_test_40() {

vertical tab

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -580,7 +580,7 @@ fn heading_attrs_test_41() {

vertical tab (U+000B)

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -592,5 +592,5 @@ fn heading_attrs_test_42() {

IDEOGRAPHIC SPACE (U+3000)

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } diff --git a/tests/suite/metadata_blocks.rs b/tests/suite/metadata_blocks.rs index 8f1af9a4e..7c4f2a717 100644 --- a/tests/suite/metadata_blocks.rs +++ b/tests/suite/metadata_blocks.rs @@ -12,7 +12,7 @@ another_field: 0 "##; let expected = r##""##; - test_markdown_html(original, expected, false, true); + test_markdown_html(original, expected, false, true, false); } #[test] @@ -26,7 +26,7 @@ another_field: 0 another_field: 0

"##; - test_markdown_html(original, expected, false, true); + test_markdown_html(original, expected, false, true, false); } #[test] @@ -38,7 +38,7 @@ fn metadata_blocks_test_3() {
"##; - test_markdown_html(original, expected, false, true); + test_markdown_html(original, expected, false, true, false); } #[test] @@ -54,7 +54,7 @@ another_field: 0 another_field: 0 "##; - test_markdown_html(original, expected, false, true); + test_markdown_html(original, expected, false, true, false); } #[test] @@ -70,7 +70,7 @@ another_field: 0 another_field: 0 "##; - test_markdown_html(original, expected, false, true); + test_markdown_html(original, expected, false, true, false); } #[test] @@ -86,7 +86,7 @@ another_field: 0 "##; - test_markdown_html(original, expected, false, true); + test_markdown_html(original, expected, false, true, false); } #[test] @@ -106,7 +106,7 @@ another_field: 0 another_field: 0 "##; - test_markdown_html(original, expected, false, true); + test_markdown_html(original, expected, false, true, false); } #[test] @@ -127,7 +127,7 @@ another_field: 0 ---a

"##; - test_markdown_html(original, expected, false, true); + test_markdown_html(original, expected, false, true, false); } #[test] @@ -139,7 +139,7 @@ another_field: 0 "##; let expected = r##""##; - test_markdown_html(original, expected, false, true); + test_markdown_html(original, expected, false, true, false); } #[test] @@ -151,5 +151,5 @@ another_field: 0 "##; let expected = r##""##; - test_markdown_html(original, expected, false, true); + test_markdown_html(original, expected, false, true, false); } diff --git a/tests/suite/mod.rs b/tests/suite/mod.rs index 1d7219e21..330b0c2d9 100644 --- a/tests/suite/mod.rs +++ b/tests/suite/mod.rs @@ -4,6 +4,7 @@ pub use super::test_markdown_html; mod footnotes; +mod gfm_footnotes; mod gfm_strikethrough; mod gfm_table; mod gfm_tasklist; diff --git a/tests/suite/regression.rs b/tests/suite/regression.rs index 67b2545fd..e927e46b8 100644 --- a/tests/suite/regression.rs +++ b/tests/suite/regression.rs @@ -16,7 +16,7 @@ This is a test of the details element. "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -36,7 +36,7 @@ fn regression_test_2() {

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -53,7 +53,7 @@ fn regression_test_3() { debug-stub-derive on docs.rs

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -74,7 +74,7 @@ fn regression_test_4() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -84,7 +84,7 @@ fn regression_test_5() { let expected = r##"

foo§(bar)

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -95,7 +95,7 @@ fn regression_test_6() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -109,7 +109,7 @@ fn regression_test_7() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -137,7 +137,7 @@ fn regression_test_8() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -151,7 +151,7 @@ i8 let expected = r##"

i8

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -163,7 +163,7 @@ fn regression_test_10() { let expected = r##"

a

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -175,7 +175,7 @@ fn regression_test_11() { let expected = r##"

a

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -188,7 +188,7 @@ fn regression_test_12() {

[a]: /url (title))

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -201,7 +201,7 @@ b

b

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -212,7 +212,7 @@ foo let expected = r##"

foo

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -222,7 +222,7 @@ fn regression_test_15() { let expected = r##"

`foo`

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -234,7 +234,7 @@ bar bar

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -247,7 +247,7 @@ fn regression_test_17() {

1) bar

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -269,7 +269,7 @@ fn regression_test_18() {

1)2)3)

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -279,7 +279,7 @@ fn regression_test_19() { let expected = r##"

[](<<>)

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -289,7 +289,7 @@ fn regression_test_20() { let expected = r##"

`foo``bar

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -299,7 +299,7 @@ fn regression_test_21() { let expected = r##"

\foo

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -311,7 +311,7 @@ YOLO let expected = r##"

YOLO

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -327,7 +327,7 @@ A | B foo | bar

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -341,7 +341,7 @@ foo|bar "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -355,7 +355,7 @@ foo|bar "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -365,7 +365,7 @@ fn regression_test_26() { let expected = r##"

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -375,7 +375,7 @@ fn regression_test_27() { let expected = r##"

bar

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -385,7 +385,7 @@ fn regression_test_28() { let expected = r##"

http://example.com

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -395,7 +395,7 @@ fn regression_test_29() { let expected = r##"

http://one http://two

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -410,7 +410,7 @@ some text

some text

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -431,7 +431,7 @@ fn regression_test_31() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -446,7 +446,7 @@ x

]: f

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -456,7 +456,7 @@ fn regression_test_33() { let expected = r##"

[foo]:

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -471,7 +471,7 @@ fn regression_test_34() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -486,7 +486,7 @@ yolo | swag

yolo | swag

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -496,7 +496,7 @@ fn regression_test_36() { let expected = r##" "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -508,7 +508,7 @@ fn regression_test_37() { "hi">

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -521,7 +521,7 @@ __a__

a

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -534,7 +534,7 @@ fn regression_test_39() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -544,7 +544,7 @@ fn regression_test_40() { let expected = r##"

\|

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -557,7 +557,7 @@ Paragraph 2

Paragraph 2

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -567,7 +567,7 @@ fn regression_test_42() { let expected = r##"

[link text]

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -579,7 +579,7 @@ fn regression_test_43() { let expected = r##"
foobar
[a](<url>)
"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -593,7 +593,7 @@ fn regression_test_44() {

")

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -606,7 +606,7 @@ fn regression_test_45() {

)

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -619,7 +619,7 @@ fn regression_test_46() {

")

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -629,7 +629,7 @@ fn regression_test_47() { let expected = r##"

<http:// >

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -639,7 +639,7 @@ fn regression_test_48() { let expected = r##"

<http://>

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -658,7 +658,7 @@ fn regression_test_49() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -677,7 +677,7 @@ fn regression_test_50() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -687,7 +687,7 @@ fn regression_test_51() { let expected = r##"

*hi_

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -697,7 +697,7 @@ fn regression_test_52() { let expected = r##"

email: john@example.com_

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -711,7 +711,7 @@ bar">link

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -726,7 +726,7 @@ fn regression_test_54() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -742,7 +742,7 @@ bar

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -760,7 +760,7 @@ fn regression_test_56() {

a b c

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -777,7 +777,7 @@ fn regression_test_57() {

[a b] [a > b]

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -790,7 +790,7 @@ package`] let expected = r##"

cargo package

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -805,7 +805,7 @@ fn regression_test_59() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -817,7 +817,7 @@ fn regression_test_60() {

cargo package

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -833,7 +833,7 @@ the size of usize and have the same alignment.

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -857,7 +857,7 @@ An unordered list before the footnotes: "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -876,7 +876,7 @@ fn regression_test_63() {

assimp-rs

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -921,7 +921,7 @@ fn regression_test_64() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -931,7 +931,7 @@ fn regression_test_65() { let expected = r##"

<foo

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -949,7 +949,7 @@ lo">

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -960,7 +960,7 @@ fn regression_test_67() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -982,7 +982,7 @@ a 2. a

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -998,7 +998,7 @@ fn regression_test_69() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -1015,7 +1015,7 @@ baz

baz

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -1034,7 +1034,7 @@ fn regression_test_71() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -1046,7 +1046,7 @@ fn regression_test_72() { let expected = r##"

[]]

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -1056,7 +1056,7 @@ fn regression_test_73() { let expected = r##"

foobar

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -1066,5 +1066,5 @@ fn regression_test_74() { let expected = r##"

foobar

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } diff --git a/tests/suite/smart_punct.rs b/tests/suite/smart_punct.rs index 36ca92e3a..0e691fd67 100644 --- a/tests/suite/smart_punct.rs +++ b/tests/suite/smart_punct.rs @@ -12,7 +12,7 @@ fn smart_punct_test_1() { “‘Shelob’ is my name.”

"##; - test_markdown_html(original, expected, true, false); + test_markdown_html(original, expected, true, false, false); } #[test] @@ -22,7 +22,7 @@ fn smart_punct_test_2() { let expected = r##"

‘A’, ‘B’, and ‘C’ are letters.

"##; - test_markdown_html(original, expected, true, false); + test_markdown_html(original, expected, true, false, false); } #[test] @@ -34,7 +34,7 @@ So is 'pine.' So is ‘pine.’

"##; - test_markdown_html(original, expected, true, false); + test_markdown_html(original, expected, true, false, false); } #[test] @@ -44,7 +44,7 @@ fn smart_punct_test_4() { let expected = r##"

‘He said, “I want to go.”’

"##; - test_markdown_html(original, expected, true, false); + test_markdown_html(original, expected, true, false, false); } #[test] @@ -54,7 +54,7 @@ fn smart_punct_test_5() { let expected = r##"

Were you alive in the 70’s?

"##; - test_markdown_html(original, expected, true, false); + test_markdown_html(original, expected, true, false, false); } #[test] @@ -64,7 +64,7 @@ fn smart_punct_test_6() { let expected = r##"

Here is some quoted ‘code’ and a “quoted link”.

"##; - test_markdown_html(original, expected, true, false); + test_markdown_html(original, expected, true, false, false); } #[test] @@ -74,7 +74,7 @@ fn smart_punct_test_7() { let expected = r##"

’tis the season to be ‘jolly’

"##; - test_markdown_html(original, expected, true, false); + test_markdown_html(original, expected, true, false, false); } #[test] @@ -84,7 +84,7 @@ fn smart_punct_test_8() { let expected = r##"

‘We’ll use Jane’s boat and John’s truck,’ Jenna said.

"##; - test_markdown_html(original, expected, true, false); + test_markdown_html(original, expected, true, false, false); } #[test] @@ -97,7 +97,7 @@ fn smart_punct_test_9() {

“Second paragraph by same speaker, in fiction.”

"##; - test_markdown_html(original, expected, true, false); + test_markdown_html(original, expected, true, false, false); } #[test] @@ -107,7 +107,7 @@ fn smart_punct_test_10() { let expected = r##"

[a]’s b’

"##; - test_markdown_html(original, expected, true, false); + test_markdown_html(original, expected, true, false, false); } #[test] @@ -121,7 +121,7 @@ This isn't either. 5'8"

"##; - test_markdown_html(original, expected, true, false); + test_markdown_html(original, expected, true, false, false); } #[test] @@ -139,7 +139,7 @@ en – en 2–3

"##; - test_markdown_html(original, expected, true, false); + test_markdown_html(original, expected, true, false, false); } #[test] @@ -167,7 +167,7 @@ nine——— thirteen———––.

"##; - test_markdown_html(original, expected, true, false); + test_markdown_html(original, expected, true, false, false); } #[test] @@ -177,7 +177,7 @@ fn smart_punct_test_14() { let expected = r##"

Escaped hyphens: -- ---.

"##; - test_markdown_html(original, expected, true, false); + test_markdown_html(original, expected, true, false, false); } #[test] @@ -187,7 +187,7 @@ fn smart_punct_test_15() { let expected = r##"

Ellipses…and…and….

"##; - test_markdown_html(original, expected, true, false); + test_markdown_html(original, expected, true, false, false); } #[test] @@ -197,5 +197,5 @@ fn smart_punct_test_16() { let expected = r##"

No ellipses...

"##; - test_markdown_html(original, expected, true, false); + test_markdown_html(original, expected, true, false, false); } diff --git a/tests/suite/spec.rs b/tests/suite/spec.rs index 63ccf811d..1c628645f 100644 --- a/tests/suite/spec.rs +++ b/tests/suite/spec.rs @@ -11,7 +11,7 @@ fn spec_test_1() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -22,7 +22,7 @@ fn spec_test_2() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -35,7 +35,7 @@ fn spec_test_3() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -52,7 +52,7 @@ fn spec_test_4() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -70,7 +70,7 @@ fn spec_test_5() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -83,7 +83,7 @@ fn spec_test_6() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -98,7 +98,7 @@ fn spec_test_7() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -111,7 +111,7 @@ bar "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -133,7 +133,7 @@ fn spec_test_9() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -143,7 +143,7 @@ fn spec_test_10() { let expected = r##"

Foo

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -153,7 +153,7 @@ fn spec_test_11() { let expected = r##"
"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -163,7 +163,7 @@ fn spec_test_12() { let expected = r##"

!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -173,7 +173,7 @@ fn spec_test_13() { let expected = r##"

\ \A\a\ \3\φ\«

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -199,7 +199,7 @@ fn spec_test_14() { &ouml; not a character entity

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -209,7 +209,7 @@ fn spec_test_15() { let expected = r##"

\emphasis

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -221,7 +221,7 @@ bar bar

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -231,7 +231,7 @@ fn spec_test_17() { let expected = r##"

\[\`

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -242,7 +242,7 @@ fn spec_test_18() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -255,7 +255,7 @@ fn spec_test_19() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -265,7 +265,7 @@ fn spec_test_20() { let expected = r##"

http://example.com?find=\*

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -275,7 +275,7 @@ fn spec_test_21() { let expected = r##" "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -285,7 +285,7 @@ fn spec_test_22() { let expected = r##"

foo

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -297,7 +297,7 @@ fn spec_test_23() { let expected = r##"

foo

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -310,7 +310,7 @@ foo "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -324,7 +324,7 @@ fn spec_test_25() { ∲ ≧̸

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -334,7 +334,7 @@ fn spec_test_26() { let expected = r##"

# Ӓ Ϡ �

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -344,7 +344,7 @@ fn spec_test_27() { let expected = r##"

" ആ ಫ

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -360,7 +360,7 @@ fn spec_test_28() { &ThisIsNotDefined; &hi?;

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -370,7 +370,7 @@ fn spec_test_29() { let expected = r##"

&copy

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -380,7 +380,7 @@ fn spec_test_30() { let expected = r##"

&MadeUpEntity;

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -390,7 +390,7 @@ fn spec_test_31() { let expected = r##" "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -400,7 +400,7 @@ fn spec_test_32() { let expected = r##"

foo

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -412,7 +412,7 @@ fn spec_test_33() { let expected = r##"

foo

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -425,7 +425,7 @@ foo "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -435,7 +435,7 @@ fn spec_test_35() { let expected = r##"

f&ouml;&ouml;

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -446,7 +446,7 @@ fn spec_test_36() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -458,7 +458,7 @@ fn spec_test_37() { foo

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -473,7 +473,7 @@ fn spec_test_38() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -485,7 +485,7 @@ fn spec_test_39() { bar

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -495,7 +495,7 @@ fn spec_test_40() { let expected = r##"

foo

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -505,7 +505,7 @@ fn spec_test_41() { let expected = r##"

[a](url "tit")

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -519,7 +519,7 @@ fn spec_test_42() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -533,7 +533,7 @@ ___
"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -543,7 +543,7 @@ fn spec_test_44() { let expected = r##"

+++

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -553,7 +553,7 @@ fn spec_test_45() { let expected = r##"

===

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -567,7 +567,7 @@ __ __

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -581,7 +581,7 @@ fn spec_test_47() {
"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -592,7 +592,7 @@ fn spec_test_48() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -604,7 +604,7 @@ fn spec_test_49() { ***

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -614,7 +614,7 @@ fn spec_test_50() { let expected = r##"
"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -624,7 +624,7 @@ fn spec_test_51() { let expected = r##"
"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -634,7 +634,7 @@ fn spec_test_52() { let expected = r##"
"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -644,7 +644,7 @@ fn spec_test_53() { let expected = r##"
"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -654,7 +654,7 @@ fn spec_test_54() { let expected = r##"
"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -670,7 +670,7 @@ a------

---a---

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -680,7 +680,7 @@ fn spec_test_56() { let expected = r##"

-

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -698,7 +698,7 @@ fn spec_test_57() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -712,7 +712,7 @@ bar

bar

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -725,7 +725,7 @@ bar

bar

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -743,7 +743,7 @@ fn spec_test_60() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -759,7 +759,7 @@ fn spec_test_61() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -779,7 +779,7 @@ fn spec_test_62() {
foo
"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -789,7 +789,7 @@ fn spec_test_63() { let expected = r##"

####### foo

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -802,7 +802,7 @@ fn spec_test_64() {

#hashtag

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -812,7 +812,7 @@ fn spec_test_65() { let expected = r##"

## foo

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -822,7 +822,7 @@ fn spec_test_66() { let expected = r##"

foo bar *baz*

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -832,7 +832,7 @@ fn spec_test_67() { let expected = r##"

foo

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -846,7 +846,7 @@ fn spec_test_68() {

foo

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -857,7 +857,7 @@ fn spec_test_69() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -869,7 +869,7 @@ fn spec_test_70() { # bar

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -881,7 +881,7 @@ fn spec_test_71() {

bar

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -893,7 +893,7 @@ fn spec_test_72() {
foo
"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -903,7 +903,7 @@ fn spec_test_73() { let expected = r##"

foo

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -913,7 +913,7 @@ fn spec_test_74() { let expected = r##"

foo ### b

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -923,7 +923,7 @@ fn spec_test_75() { let expected = r##"

foo#

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -937,7 +937,7 @@ fn spec_test_76() {

foo #

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -951,7 +951,7 @@ fn spec_test_77() {
"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -965,7 +965,7 @@ Bar foo

Bar foo

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -979,7 +979,7 @@ fn spec_test_79() {

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -994,7 +994,7 @@ Foo *bar*

Foo bar

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -1007,7 +1007,7 @@ baz* baz "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -1020,7 +1020,7 @@ baz* baz "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -1035,7 +1035,7 @@ Foo

Foo

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -1054,7 +1054,7 @@ fn spec_test_84() {

Foo

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -1073,7 +1073,7 @@ Foo
"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -1084,7 +1084,7 @@ fn spec_test_86() { let expected = r##"

Foo

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -1096,7 +1096,7 @@ fn spec_test_87() { ---

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -1113,7 +1113,7 @@ Foo
"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -1124,7 +1124,7 @@ fn spec_test_89() { let expected = r##"

Foo

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -1135,7 +1135,7 @@ fn spec_test_90() { let expected = r##"

Foo\

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -1154,7 +1154,7 @@ of dashes"/>

of dashes"/>

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -1168,7 +1168,7 @@ fn spec_test_92() {
"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -1184,7 +1184,7 @@ bar "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -1198,7 +1198,7 @@ fn spec_test_94() {
"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -1211,7 +1211,7 @@ Bar Bar "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -1229,7 +1229,7 @@ Baz

Baz

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -1240,7 +1240,7 @@ fn spec_test_97() { let expected = r##"

====

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -1252,7 +1252,7 @@ fn spec_test_98() {
"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -1266,7 +1266,7 @@ fn spec_test_99() {
"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -1279,7 +1279,7 @@ fn spec_test_100() {
"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -1293,7 +1293,7 @@ fn spec_test_101() {
"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -1304,7 +1304,7 @@ fn spec_test_102() { let expected = r##"

> foo

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -1320,7 +1320,7 @@ baz

baz

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -1338,7 +1338,7 @@ bar

baz

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -1354,7 +1354,7 @@ bar

baz

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -1370,7 +1370,7 @@ bar baz

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -1383,7 +1383,7 @@ fn spec_test_107() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -1400,7 +1400,7 @@ fn spec_test_108() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -1419,7 +1419,7 @@ fn spec_test_109() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -1436,7 +1436,7 @@ fn spec_test_110() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -1459,7 +1459,7 @@ chunk3 "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -1474,7 +1474,7 @@ fn spec_test_112() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -1487,7 +1487,7 @@ fn spec_test_113() { bar

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -1500,7 +1500,7 @@ bar

bar

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -1521,7 +1521,7 @@ Heading
"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -1534,7 +1534,7 @@ bar "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -1549,7 +1549,7 @@ fn spec_test_117() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -1560,7 +1560,7 @@ fn spec_test_118() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -1575,7 +1575,7 @@ fn spec_test_119() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -1590,7 +1590,7 @@ fn spec_test_120() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -1602,7 +1602,7 @@ foo let expected = r##"

foo

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -1617,7 +1617,7 @@ aaa "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -1632,7 +1632,7 @@ aaa "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -1647,7 +1647,7 @@ aaa "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -1662,7 +1662,7 @@ aaa "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -1672,7 +1672,7 @@ fn spec_test_126() { let expected = r##"
"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -1688,7 +1688,7 @@ aaa "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -1705,7 +1705,7 @@ bbb

bbb

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -1720,7 +1720,7 @@ fn spec_test_129() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -1731,7 +1731,7 @@ fn spec_test_130() { let expected = r##"
"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -1746,7 +1746,7 @@ aaa "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -1763,7 +1763,7 @@ aaa "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -1780,7 +1780,7 @@ aaa "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -1795,7 +1795,7 @@ aaa "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -1808,7 +1808,7 @@ aaa "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -1821,7 +1821,7 @@ aaa "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -1835,7 +1835,7 @@ aaa "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -1847,7 +1847,7 @@ aaa aaa

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -1861,7 +1861,7 @@ aaa "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -1878,7 +1878,7 @@ baz

baz

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -1896,7 +1896,7 @@ bar

baz

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -1913,7 +1913,7 @@ end "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -1930,7 +1930,7 @@ end "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -1941,7 +1941,7 @@ fn spec_test_144() { let expected = r##"
"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -1953,7 +1953,7 @@ foo foo

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -1966,7 +1966,7 @@ foo "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -1979,7 +1979,7 @@ fn spec_test_147() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -2000,7 +2000,7 @@ _world_. "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -2025,7 +2025,7 @@ okay.

okay.

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -2039,7 +2039,7 @@ fn spec_test_150() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -2051,7 +2051,7 @@ fn spec_test_151() { *foo* "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -2067,7 +2067,7 @@ fn spec_test_152() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -2081,7 +2081,7 @@ fn spec_test_153() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -2095,7 +2095,7 @@ fn spec_test_154() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -2110,7 +2110,7 @@ fn spec_test_155() {

bar

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -2122,7 +2122,7 @@ fn spec_test_156() { *hi* "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -2134,7 +2134,7 @@ foo foo "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -2146,7 +2146,7 @@ fn spec_test_158() { *foo* "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -2156,7 +2156,7 @@ fn spec_test_159() { let expected = r##"
"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -2170,7 +2170,7 @@ foo "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -2186,7 +2186,7 @@ int x = 33; ``` "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -2200,7 +2200,7 @@ fn spec_test_162() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -2214,7 +2214,7 @@ fn spec_test_163() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -2228,7 +2228,7 @@ fn spec_test_164() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -2240,7 +2240,7 @@ fn spec_test_165() { *bar* "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -2254,7 +2254,7 @@ fn spec_test_166() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -2270,7 +2270,7 @@ fn spec_test_167() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -2280,7 +2280,7 @@ fn spec_test_168() { let expected = r##"

foo

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -2302,7 +2302,7 @@ main = print $ parseTags tags

okay

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -2322,7 +2322,7 @@ document.getElementById("demo").innerHTML = "Hello JavaScript!";

okay

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -2344,7 +2344,7 @@ _bar_ "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -2366,7 +2366,7 @@ p {color:blue;}

okay

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -2382,7 +2382,7 @@ foo foo "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -2399,7 +2399,7 @@ foo

bar

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -2415,7 +2415,7 @@ fn spec_test_175() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -2427,7 +2427,7 @@ fn spec_test_176() {

foo

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -2439,7 +2439,7 @@ fn spec_test_177() {

baz

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -2453,7 +2453,7 @@ foo 1. *bar* "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -2471,7 +2471,7 @@ bar

okay

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -2491,7 +2491,7 @@ okay

okay

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -2501,7 +2501,7 @@ fn spec_test_181() { let expected = r##" "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -2535,7 +2535,7 @@ function matchwo(a,b)

okay

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -2549,7 +2549,7 @@ fn spec_test_183() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -2563,7 +2563,7 @@ fn spec_test_184() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -2579,7 +2579,7 @@ bar "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -2595,7 +2595,7 @@ bar *foo* "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -2609,7 +2609,7 @@ baz baz

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -2625,7 +2625,7 @@ fn spec_test_188() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -2639,7 +2639,7 @@ fn spec_test_189() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -2665,7 +2665,7 @@ Hi "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -2692,7 +2692,7 @@ fn spec_test_191() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -2704,7 +2704,7 @@ fn spec_test_192() { let expected = r##"

foo

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -2718,7 +2718,7 @@ fn spec_test_193() { let expected = r##"

foo

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -2730,7 +2730,7 @@ fn spec_test_194() { let expected = r##"

Foo*bar]

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -2744,7 +2744,7 @@ fn spec_test_195() { let expected = r##"

Foo bar

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -2764,7 +2764,7 @@ line2 ">foo

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -2780,7 +2780,7 @@ with blank line'

[foo]

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -2793,7 +2793,7 @@ fn spec_test_198() { let expected = r##"

foo

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -2806,7 +2806,7 @@ fn spec_test_199() {

[foo]

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -2818,7 +2818,7 @@ fn spec_test_200() { let expected = r##"

foo

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -2831,7 +2831,7 @@ fn spec_test_201() {

[foo]

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -2843,7 +2843,7 @@ fn spec_test_202() { let expected = r##"

foo

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -2855,7 +2855,7 @@ fn spec_test_203() { let expected = r##"

foo

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -2868,7 +2868,7 @@ fn spec_test_204() { let expected = r##"

foo

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -2880,7 +2880,7 @@ fn spec_test_205() { let expected = r##"

Foo

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -2892,7 +2892,7 @@ fn spec_test_206() { let expected = r##"

αγω

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -2901,7 +2901,7 @@ fn spec_test_207() { "##; let expected = r##""##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -2914,7 +2914,7 @@ bar let expected = r##"

bar

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -2924,7 +2924,7 @@ fn spec_test_209() { let expected = r##"

[foo]: /url "title" ok

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -2935,7 +2935,7 @@ fn spec_test_210() { let expected = r##"

"title" ok

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -2949,7 +2949,7 @@ fn spec_test_211() {

[foo]

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -2965,7 +2965,7 @@ fn spec_test_212() {

[foo]

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -2980,7 +2980,7 @@ fn spec_test_213() {

[bar]

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -2995,7 +2995,7 @@ fn spec_test_214() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -3009,7 +3009,7 @@ bar

foo

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -3022,7 +3022,7 @@ fn spec_test_216() { foo

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -3041,7 +3041,7 @@ fn spec_test_217() { baz

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -3055,7 +3055,7 @@ fn spec_test_218() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -3068,7 +3068,7 @@ bbb

bbb

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -3085,7 +3085,7 @@ bbb

ddd

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -3099,7 +3099,7 @@ bbb

bbb

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -3111,7 +3111,7 @@ fn spec_test_222() { bbb

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -3125,7 +3125,7 @@ bbb ccc

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -3137,7 +3137,7 @@ bbb bbb

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -3150,7 +3150,7 @@ bbb

bbb

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -3162,7 +3162,7 @@ bbb bbb

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -3180,7 +3180,7 @@ aaa

aaa

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -3196,7 +3196,7 @@ baz

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -3212,7 +3212,7 @@ baz

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -3228,7 +3228,7 @@ baz

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -3243,7 +3243,7 @@ fn spec_test_231() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -3259,7 +3259,7 @@ baz

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -3275,7 +3275,7 @@ foo

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -3289,7 +3289,7 @@ fn spec_test_234() {
"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -3307,7 +3307,7 @@ fn spec_test_235() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -3323,7 +3323,7 @@ fn spec_test_236() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -3339,7 +3339,7 @@ foo
"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -3353,7 +3353,7 @@ fn spec_test_238() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -3364,7 +3364,7 @@ fn spec_test_239() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -3377,7 +3377,7 @@ fn spec_test_240() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -3391,7 +3391,7 @@ fn spec_test_241() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -3408,7 +3408,7 @@ fn spec_test_242() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -3422,7 +3422,7 @@ bar

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -3437,7 +3437,7 @@ fn spec_test_244() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -3451,7 +3451,7 @@ fn spec_test_245() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -3469,7 +3469,7 @@ fn spec_test_246() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -3483,7 +3483,7 @@ baz

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -3498,7 +3498,7 @@ baz

baz

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -3513,7 +3513,7 @@ baz

baz

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -3531,7 +3531,7 @@ bar

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -3551,7 +3551,7 @@ baz

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -3569,7 +3569,7 @@ fn spec_test_252() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -3590,7 +3590,7 @@ with two lines.

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -3615,7 +3615,7 @@ with two lines.

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -3630,7 +3630,7 @@ fn spec_test_255() {

two

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -3647,7 +3647,7 @@ fn spec_test_256() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -3663,7 +3663,7 @@ fn spec_test_257() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -3680,7 +3680,7 @@ fn spec_test_258() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -3701,7 +3701,7 @@ fn spec_test_259() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -3720,7 +3720,7 @@ fn spec_test_260() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -3733,7 +3733,7 @@ fn spec_test_261() {

2.two

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -3751,7 +3751,7 @@ fn spec_test_262() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -3779,7 +3779,7 @@ fn spec_test_263() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -3803,7 +3803,7 @@ baz "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -3815,7 +3815,7 @@ fn spec_test_265() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -3825,7 +3825,7 @@ fn spec_test_266() { let expected = r##"

1234567890. not ok

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -3837,7 +3837,7 @@ fn spec_test_267() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -3849,7 +3849,7 @@ fn spec_test_268() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -3859,7 +3859,7 @@ fn spec_test_269() { let expected = r##"

-1. not ok

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -3877,7 +3877,7 @@ fn spec_test_270() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -3895,7 +3895,7 @@ fn spec_test_271() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -3913,7 +3913,7 @@ paragraph "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -3935,7 +3935,7 @@ fn spec_test_273() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -3957,7 +3957,7 @@ fn spec_test_274() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -3970,7 +3970,7 @@ bar

bar

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -3985,7 +3985,7 @@ fn spec_test_276() {

bar

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -4002,7 +4002,7 @@ fn spec_test_277() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -4029,7 +4029,7 @@ fn spec_test_278() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -4042,7 +4042,7 @@ fn spec_test_279() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -4057,7 +4057,7 @@ fn spec_test_280() {

foo

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -4073,7 +4073,7 @@ fn spec_test_281() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -4089,7 +4089,7 @@ fn spec_test_282() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -4105,7 +4105,7 @@ fn spec_test_283() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -4117,7 +4117,7 @@ fn spec_test_284() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -4134,7 +4134,7 @@ foo 1.

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -4159,7 +4159,7 @@ with two lines.

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -4184,7 +4184,7 @@ with two lines.

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -4209,7 +4209,7 @@ with two lines.

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -4230,7 +4230,7 @@ fn spec_test_289() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -4255,7 +4255,7 @@ with two lines.

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -4269,7 +4269,7 @@ with two lines. "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -4289,7 +4289,7 @@ continued here.

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -4309,7 +4309,7 @@ continued here.

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -4336,7 +4336,7 @@ fn spec_test_294() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -4354,7 +4354,7 @@ fn spec_test_295() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -4371,7 +4371,7 @@ fn spec_test_296() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -4387,7 +4387,7 @@ fn spec_test_297() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -4403,7 +4403,7 @@ fn spec_test_298() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -4423,7 +4423,7 @@ fn spec_test_299() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -4443,7 +4443,7 @@ baz "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -4461,7 +4461,7 @@ fn spec_test_301() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -4479,7 +4479,7 @@ fn spec_test_302() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -4495,7 +4495,7 @@ fn spec_test_303() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -4507,7 +4507,7 @@ fn spec_test_304() { 14. The number of doors is 6.

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -4521,7 +4521,7 @@ fn spec_test_305() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -4546,7 +4546,7 @@ fn spec_test_306() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -4574,7 +4574,7 @@ fn spec_test_307() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -4598,7 +4598,7 @@ fn spec_test_308() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -4627,7 +4627,7 @@ fn spec_test_309() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -4651,7 +4651,7 @@ fn spec_test_310() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -4675,7 +4675,7 @@ fn spec_test_311() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -4695,7 +4695,7 @@ fn spec_test_312() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -4718,7 +4718,7 @@ fn spec_test_313() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -4741,7 +4741,7 @@ fn spec_test_314() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -4762,7 +4762,7 @@ fn spec_test_315() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -4787,7 +4787,7 @@ fn spec_test_316() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -4811,7 +4811,7 @@ fn spec_test_317() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -4836,7 +4836,7 @@ fn spec_test_318() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -4860,7 +4860,7 @@ fn spec_test_319() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -4880,7 +4880,7 @@ fn spec_test_320() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -4904,7 +4904,7 @@ fn spec_test_321() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -4916,7 +4916,7 @@ fn spec_test_322() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -4933,7 +4933,7 @@ fn spec_test_323() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -4953,7 +4953,7 @@ fn spec_test_324() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -4974,7 +4974,7 @@ fn spec_test_325() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -5005,7 +5005,7 @@ fn spec_test_326() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -5015,7 +5015,7 @@ fn spec_test_327() { let expected = r##"

hilo`

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -5025,7 +5025,7 @@ fn spec_test_328() { let expected = r##"

foo

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -5035,7 +5035,7 @@ fn spec_test_329() { let expected = r##"

foo ` bar

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -5045,7 +5045,7 @@ fn spec_test_330() { let expected = r##"

``

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -5055,7 +5055,7 @@ fn spec_test_331() { let expected = r##"

``

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -5065,7 +5065,7 @@ fn spec_test_332() { let expected = r##"

a

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -5075,7 +5075,7 @@ fn spec_test_333() { let expected = r##"

 b 

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -5087,7 +5087,7 @@ fn spec_test_334() {

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -5101,7 +5101,7 @@ baz let expected = r##"

foo bar baz

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -5113,7 +5113,7 @@ foo let expected = r##"

foo

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -5124,7 +5124,7 @@ baz` let expected = r##"

foo bar baz

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -5134,7 +5134,7 @@ fn spec_test_338() { let expected = r##"

foo\bar`

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -5144,7 +5144,7 @@ fn spec_test_339() { let expected = r##"

foo`bar

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -5154,7 +5154,7 @@ fn spec_test_340() { let expected = r##"

foo `` bar

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -5164,7 +5164,7 @@ fn spec_test_341() { let expected = r##"

*foo*

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -5174,7 +5174,7 @@ fn spec_test_342() { let expected = r##"

[not a link](/foo)

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -5184,7 +5184,7 @@ fn spec_test_343() { let expected = r##"

<a href="">`

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -5194,7 +5194,7 @@ fn spec_test_344() { let expected = r##"

`

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -5204,7 +5204,7 @@ fn spec_test_345() { let expected = r##"

<http://foo.bar.baz>`

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -5214,7 +5214,7 @@ fn spec_test_346() { let expected = r##"

http://foo.bar.`baz`

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -5224,7 +5224,7 @@ fn spec_test_347() { let expected = r##"

```foo``

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -5234,7 +5234,7 @@ fn spec_test_348() { let expected = r##"

`foo

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -5244,7 +5244,7 @@ fn spec_test_349() { let expected = r##"

`foobar

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -5254,7 +5254,7 @@ fn spec_test_350() { let expected = r##"

foo bar

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -5264,7 +5264,7 @@ fn spec_test_351() { let expected = r##"

a * foo bar*

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -5274,7 +5274,7 @@ fn spec_test_352() { let expected = r##"

a*"foo"*

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -5284,7 +5284,7 @@ fn spec_test_353() { let expected = r##"

* a *

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -5294,7 +5294,7 @@ fn spec_test_354() { let expected = r##"

foobar

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -5304,7 +5304,7 @@ fn spec_test_355() { let expected = r##"

5678

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -5314,7 +5314,7 @@ fn spec_test_356() { let expected = r##"

foo bar

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -5324,7 +5324,7 @@ fn spec_test_357() { let expected = r##"

_ foo bar_

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -5334,7 +5334,7 @@ fn spec_test_358() { let expected = r##"

a_"foo"_

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -5344,7 +5344,7 @@ fn spec_test_359() { let expected = r##"

foo_bar_

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -5354,7 +5354,7 @@ fn spec_test_360() { let expected = r##"

5_6_78

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -5364,7 +5364,7 @@ fn spec_test_361() { let expected = r##"

пристаням_стремятся_

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -5374,7 +5374,7 @@ fn spec_test_362() { let expected = r##"

aa_"bb"_cc

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -5384,7 +5384,7 @@ fn spec_test_363() { let expected = r##"

foo-(bar)

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -5394,7 +5394,7 @@ fn spec_test_364() { let expected = r##"

_foo*

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -5404,7 +5404,7 @@ fn spec_test_365() { let expected = r##"

*foo bar *

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -5416,7 +5416,7 @@ fn spec_test_366() { *

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -5426,7 +5426,7 @@ fn spec_test_367() { let expected = r##"

*(*foo)

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -5436,7 +5436,7 @@ fn spec_test_368() { let expected = r##"

(foo)

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -5446,7 +5446,7 @@ fn spec_test_369() { let expected = r##"

foobar

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -5456,7 +5456,7 @@ fn spec_test_370() { let expected = r##"

_foo bar _

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -5466,7 +5466,7 @@ fn spec_test_371() { let expected = r##"

_(_foo)

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -5476,7 +5476,7 @@ fn spec_test_372() { let expected = r##"

(foo)

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -5486,7 +5486,7 @@ fn spec_test_373() { let expected = r##"

_foo_bar

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -5496,7 +5496,7 @@ fn spec_test_374() { let expected = r##"

_пристаням_стремятся

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -5506,7 +5506,7 @@ fn spec_test_375() { let expected = r##"

foo_bar_baz

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -5516,7 +5516,7 @@ fn spec_test_376() { let expected = r##"

(bar).

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -5526,7 +5526,7 @@ fn spec_test_377() { let expected = r##"

foo bar

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -5536,7 +5536,7 @@ fn spec_test_378() { let expected = r##"

** foo bar**

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -5546,7 +5546,7 @@ fn spec_test_379() { let expected = r##"

a**"foo"**

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -5556,7 +5556,7 @@ fn spec_test_380() { let expected = r##"

foobar

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -5566,7 +5566,7 @@ fn spec_test_381() { let expected = r##"

foo bar

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -5576,7 +5576,7 @@ fn spec_test_382() { let expected = r##"

__ foo bar__

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -5588,7 +5588,7 @@ foo bar__ foo bar__

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -5598,7 +5598,7 @@ fn spec_test_384() { let expected = r##"

a__"foo"__

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -5608,7 +5608,7 @@ fn spec_test_385() { let expected = r##"

foo__bar__

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -5618,7 +5618,7 @@ fn spec_test_386() { let expected = r##"

5__6__78

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -5628,7 +5628,7 @@ fn spec_test_387() { let expected = r##"

пристаням__стремятся__

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -5638,7 +5638,7 @@ fn spec_test_388() { let expected = r##"

foo, bar, baz

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -5648,7 +5648,7 @@ fn spec_test_389() { let expected = r##"

foo-(bar)

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -5658,7 +5658,7 @@ fn spec_test_390() { let expected = r##"

**foo bar **

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -5668,7 +5668,7 @@ fn spec_test_391() { let expected = r##"

**(**foo)

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -5678,7 +5678,7 @@ fn spec_test_392() { let expected = r##"

(foo)

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -5690,7 +5690,7 @@ fn spec_test_393() { Asclepias physocarpa)

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -5700,7 +5700,7 @@ fn spec_test_394() { let expected = r##"

foo "bar" foo

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -5710,7 +5710,7 @@ fn spec_test_395() { let expected = r##"

foobar

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -5720,7 +5720,7 @@ fn spec_test_396() { let expected = r##"

__foo bar __

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -5730,7 +5730,7 @@ fn spec_test_397() { let expected = r##"

__(__foo)

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -5740,7 +5740,7 @@ fn spec_test_398() { let expected = r##"

(foo)

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -5750,7 +5750,7 @@ fn spec_test_399() { let expected = r##"

__foo__bar

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -5760,7 +5760,7 @@ fn spec_test_400() { let expected = r##"

__пристаням__стремятся

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -5770,7 +5770,7 @@ fn spec_test_401() { let expected = r##"

foo__bar__baz

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -5780,7 +5780,7 @@ fn spec_test_402() { let expected = r##"

(bar).

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -5790,7 +5790,7 @@ fn spec_test_403() { let expected = r##"

foo bar

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -5802,7 +5802,7 @@ bar* bar

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -5812,7 +5812,7 @@ fn spec_test_405() { let expected = r##"

foo bar baz

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -5822,7 +5822,7 @@ fn spec_test_406() { let expected = r##"

foo bar baz

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -5832,7 +5832,7 @@ fn spec_test_407() { let expected = r##"

foo bar

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -5842,7 +5842,7 @@ fn spec_test_408() { let expected = r##"

foo bar

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -5852,7 +5852,7 @@ fn spec_test_409() { let expected = r##"

foo bar baz

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -5862,7 +5862,7 @@ fn spec_test_410() { let expected = r##"

foobarbaz

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -5872,7 +5872,7 @@ fn spec_test_411() { let expected = r##"

foo**bar

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -5882,7 +5882,7 @@ fn spec_test_412() { let expected = r##"

foo bar

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -5892,7 +5892,7 @@ fn spec_test_413() { let expected = r##"

foo bar

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -5902,7 +5902,7 @@ fn spec_test_414() { let expected = r##"

foobar

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -5912,7 +5912,7 @@ fn spec_test_415() { let expected = r##"

foobarbaz

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -5922,7 +5922,7 @@ fn spec_test_416() { let expected = r##"

foobar***baz

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -5932,7 +5932,7 @@ fn spec_test_417() { let expected = r##"

foo bar baz bim bop

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -5942,7 +5942,7 @@ fn spec_test_418() { let expected = r##"

foo bar

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -5952,7 +5952,7 @@ fn spec_test_419() { let expected = r##"

** is not an empty emphasis

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -5962,7 +5962,7 @@ fn spec_test_420() { let expected = r##"

**** is not an empty strong emphasis

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -5972,7 +5972,7 @@ fn spec_test_421() { let expected = r##"

foo bar

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -5984,7 +5984,7 @@ bar** bar

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -5994,7 +5994,7 @@ fn spec_test_423() { let expected = r##"

foo bar baz

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -6004,7 +6004,7 @@ fn spec_test_424() { let expected = r##"

foo bar baz

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -6014,7 +6014,7 @@ fn spec_test_425() { let expected = r##"

foo bar

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -6024,7 +6024,7 @@ fn spec_test_426() { let expected = r##"

foo bar

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -6034,7 +6034,7 @@ fn spec_test_427() { let expected = r##"

foo bar baz

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -6044,7 +6044,7 @@ fn spec_test_428() { let expected = r##"

foobarbaz

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -6054,7 +6054,7 @@ fn spec_test_429() { let expected = r##"

foo bar

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -6064,7 +6064,7 @@ fn spec_test_430() { let expected = r##"

foo bar

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -6076,7 +6076,7 @@ bim* bop** bim bop

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -6086,7 +6086,7 @@ fn spec_test_432() { let expected = r##"

foo bar

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -6096,7 +6096,7 @@ fn spec_test_433() { let expected = r##"

__ is not an empty emphasis

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -6106,7 +6106,7 @@ fn spec_test_434() { let expected = r##"

____ is not an empty strong emphasis

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -6116,7 +6116,7 @@ fn spec_test_435() { let expected = r##"

foo ***

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -6126,7 +6126,7 @@ fn spec_test_436() { let expected = r##"

foo *

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -6136,7 +6136,7 @@ fn spec_test_437() { let expected = r##"

foo _

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -6146,7 +6146,7 @@ fn spec_test_438() { let expected = r##"

foo *****

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -6156,7 +6156,7 @@ fn spec_test_439() { let expected = r##"

foo *

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -6166,7 +6166,7 @@ fn spec_test_440() { let expected = r##"

foo _

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -6176,7 +6176,7 @@ fn spec_test_441() { let expected = r##"

*foo

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -6186,7 +6186,7 @@ fn spec_test_442() { let expected = r##"

foo*

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -6196,7 +6196,7 @@ fn spec_test_443() { let expected = r##"

*foo

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -6206,7 +6206,7 @@ fn spec_test_444() { let expected = r##"

***foo

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -6216,7 +6216,7 @@ fn spec_test_445() { let expected = r##"

foo*

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -6226,7 +6226,7 @@ fn spec_test_446() { let expected = r##"

foo***

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -6236,7 +6236,7 @@ fn spec_test_447() { let expected = r##"

foo ___

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -6246,7 +6246,7 @@ fn spec_test_448() { let expected = r##"

foo _

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -6256,7 +6256,7 @@ fn spec_test_449() { let expected = r##"

foo *

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -6266,7 +6266,7 @@ fn spec_test_450() { let expected = r##"

foo _____

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -6276,7 +6276,7 @@ fn spec_test_451() { let expected = r##"

foo _

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -6286,7 +6286,7 @@ fn spec_test_452() { let expected = r##"

foo *

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -6296,7 +6296,7 @@ fn spec_test_453() { let expected = r##"

_foo

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -6306,7 +6306,7 @@ fn spec_test_454() { let expected = r##"

foo_

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -6316,7 +6316,7 @@ fn spec_test_455() { let expected = r##"

_foo

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -6326,7 +6326,7 @@ fn spec_test_456() { let expected = r##"

___foo

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -6336,7 +6336,7 @@ fn spec_test_457() { let expected = r##"

foo_

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -6346,7 +6346,7 @@ fn spec_test_458() { let expected = r##"

foo___

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -6356,7 +6356,7 @@ fn spec_test_459() { let expected = r##"

foo

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -6366,7 +6366,7 @@ fn spec_test_460() { let expected = r##"

foo

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -6376,7 +6376,7 @@ fn spec_test_461() { let expected = r##"

foo

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -6386,7 +6386,7 @@ fn spec_test_462() { let expected = r##"

foo

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -6396,7 +6396,7 @@ fn spec_test_463() { let expected = r##"

foo

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -6406,7 +6406,7 @@ fn spec_test_464() { let expected = r##"

foo

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -6416,7 +6416,7 @@ fn spec_test_465() { let expected = r##"

foo

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -6426,7 +6426,7 @@ fn spec_test_466() { let expected = r##"

foo

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -6436,7 +6436,7 @@ fn spec_test_467() { let expected = r##"

foo

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -6446,7 +6446,7 @@ fn spec_test_468() { let expected = r##"

foo _bar baz_

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -6456,7 +6456,7 @@ fn spec_test_469() { let expected = r##"

foo bar *baz bim bam

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -6466,7 +6466,7 @@ fn spec_test_470() { let expected = r##"

**foo bar baz

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -6476,7 +6476,7 @@ fn spec_test_471() { let expected = r##"

*foo bar baz

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -6486,7 +6486,7 @@ fn spec_test_472() { let expected = r##"

*bar*

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -6496,7 +6496,7 @@ fn spec_test_473() { let expected = r##"

_foo bar_

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -6506,7 +6506,7 @@ fn spec_test_474() { let expected = r##"

*

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -6516,7 +6516,7 @@ fn spec_test_475() { let expected = r##"

**

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -6526,7 +6526,7 @@ fn spec_test_476() { let expected = r##"

__

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -6536,7 +6536,7 @@ fn spec_test_477() { let expected = r##"

a *

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -6546,7 +6546,7 @@ fn spec_test_478() { let expected = r##"

a _

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -6556,7 +6556,7 @@ fn spec_test_479() { let expected = r##"

**ahttp://foo.bar/?q=**

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -6566,7 +6566,7 @@ fn spec_test_480() { let expected = r##"

__ahttp://foo.bar/?q=__

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -6576,7 +6576,7 @@ fn spec_test_481() { let expected = r##"

link

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -6586,7 +6586,7 @@ fn spec_test_482() { let expected = r##"

link

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -6596,7 +6596,7 @@ fn spec_test_483() { let expected = r##"

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -6606,7 +6606,7 @@ fn spec_test_484() { let expected = r##"

link

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -6616,7 +6616,7 @@ fn spec_test_485() { let expected = r##"

link

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -6626,7 +6626,7 @@ fn spec_test_486() { let expected = r##"

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -6636,7 +6636,7 @@ fn spec_test_487() { let expected = r##"

[link](/my uri)

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -6646,7 +6646,7 @@ fn spec_test_488() { let expected = r##"

link

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -6658,7 +6658,7 @@ bar) bar)

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -6670,7 +6670,7 @@ bar>) bar>)

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -6680,7 +6680,7 @@ fn spec_test_491() { let expected = r##"

a

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -6690,7 +6690,7 @@ fn spec_test_492() { let expected = r##"

[link](<foo>)

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -6704,7 +6704,7 @@ fn spec_test_493() { [a](c)

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -6714,7 +6714,7 @@ fn spec_test_494() { let expected = r##"

link

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -6724,7 +6724,7 @@ fn spec_test_495() { let expected = r##"

link

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -6734,7 +6734,7 @@ fn spec_test_496() { let expected = r##"

[link](foo(and(bar))

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -6744,7 +6744,7 @@ fn spec_test_497() { let expected = r##"

link

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -6754,7 +6754,7 @@ fn spec_test_498() { let expected = r##"

link

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -6764,7 +6764,7 @@ fn spec_test_499() { let expected = r##"

link

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -6780,7 +6780,7 @@ fn spec_test_500() {

link

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -6790,7 +6790,7 @@ fn spec_test_501() { let expected = r##"

link

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -6800,7 +6800,7 @@ fn spec_test_502() { let expected = r##"

link

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -6810,7 +6810,7 @@ fn spec_test_503() { let expected = r##"

link

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -6824,7 +6824,7 @@ fn spec_test_504() { link

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -6834,7 +6834,7 @@ fn spec_test_505() { let expected = r##"

link

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -6844,7 +6844,7 @@ fn spec_test_506() { let expected = r##"

link

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -6854,7 +6854,7 @@ fn spec_test_507() { let expected = r##"

[link](/url "title "and" title")

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -6864,7 +6864,7 @@ fn spec_test_508() { let expected = r##"

link

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -6875,7 +6875,7 @@ fn spec_test_509() { let expected = r##"

link

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -6885,7 +6885,7 @@ fn spec_test_510() { let expected = r##"

[link] (/uri)

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -6895,7 +6895,7 @@ fn spec_test_511() { let expected = r##"

link [foo [bar]]

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -6905,7 +6905,7 @@ fn spec_test_512() { let expected = r##"

[link] bar](/uri)

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -6915,7 +6915,7 @@ fn spec_test_513() { let expected = r##"

[link bar

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -6925,7 +6925,7 @@ fn spec_test_514() { let expected = r##"

link [bar

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -6935,7 +6935,7 @@ fn spec_test_515() { let expected = r##"

link foo bar #

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -6945,7 +6945,7 @@ fn spec_test_516() { let expected = r##"

moon

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -6955,7 +6955,7 @@ fn spec_test_517() { let expected = r##"

[foo bar](/uri)

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -6965,7 +6965,7 @@ fn spec_test_518() { let expected = r##"

[foo [bar baz](/uri)](/uri)

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -6975,7 +6975,7 @@ fn spec_test_519() { let expected = r##"

[foo](uri2)

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -6985,7 +6985,7 @@ fn spec_test_520() { let expected = r##"

*foo*

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -6995,7 +6995,7 @@ fn spec_test_521() { let expected = r##"

foo *bar

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -7005,7 +7005,7 @@ fn spec_test_522() { let expected = r##"

foo [bar baz]

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -7015,7 +7015,7 @@ fn spec_test_523() { let expected = r##"

[foo

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -7025,7 +7025,7 @@ fn spec_test_524() { let expected = r##"

[foo](/uri)

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -7035,7 +7035,7 @@ fn spec_test_525() { let expected = r##"

[foohttp://example.com/?search=](uri)

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -7047,7 +7047,7 @@ fn spec_test_526() { let expected = r##"

foo

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -7059,7 +7059,7 @@ fn spec_test_527() { let expected = r##"

link [foo [bar]]

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -7071,7 +7071,7 @@ fn spec_test_528() { let expected = r##"

link [bar

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -7083,7 +7083,7 @@ fn spec_test_529() { let expected = r##"

link foo bar #

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -7095,7 +7095,7 @@ fn spec_test_530() { let expected = r##"

moon

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -7107,7 +7107,7 @@ fn spec_test_531() { let expected = r##"

[foo bar]ref

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -7119,7 +7119,7 @@ fn spec_test_532() { let expected = r##"

[foo bar baz]ref

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -7131,7 +7131,7 @@ fn spec_test_533() { let expected = r##"

*foo*

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -7143,7 +7143,7 @@ fn spec_test_534() { let expected = r##"

foo *bar*

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -7155,7 +7155,7 @@ fn spec_test_535() { let expected = r##"

[foo

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -7167,7 +7167,7 @@ fn spec_test_536() { let expected = r##"

[foo][ref]

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -7179,7 +7179,7 @@ fn spec_test_537() { let expected = r##"

[foohttp://example.com/?search=][ref]

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -7191,7 +7191,7 @@ fn spec_test_538() { let expected = r##"

foo

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -7203,7 +7203,7 @@ fn spec_test_539() { let expected = r##"

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -7216,7 +7216,7 @@ fn spec_test_540() { let expected = r##"

Baz

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -7228,7 +7228,7 @@ fn spec_test_541() { let expected = r##"

[foo] bar

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -7242,7 +7242,7 @@ fn spec_test_542() { bar

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -7256,7 +7256,7 @@ fn spec_test_543() { let expected = r##"

bar

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -7268,7 +7268,7 @@ fn spec_test_544() { let expected = r##"

[bar][foo!]

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -7281,7 +7281,7 @@ fn spec_test_545() {

[ref[]: /uri

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -7294,7 +7294,7 @@ fn spec_test_546() {

[ref[bar]]: /uri

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -7307,7 +7307,7 @@ fn spec_test_547() {

[[[foo]]]: /url

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -7319,7 +7319,7 @@ fn spec_test_548() { let expected = r##"

foo

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -7331,7 +7331,7 @@ fn spec_test_549() { let expected = r##"

bar\

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -7344,7 +7344,7 @@ fn spec_test_550() {

[]: /uri

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -7361,7 +7361,7 @@ fn spec_test_551() { ]: /uri

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -7373,7 +7373,7 @@ fn spec_test_552() { let expected = r##"

foo

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -7385,7 +7385,7 @@ fn spec_test_553() { let expected = r##"

foo bar

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -7397,7 +7397,7 @@ fn spec_test_554() { let expected = r##"

Foo

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -7411,7 +7411,7 @@ fn spec_test_555() { []

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -7423,7 +7423,7 @@ fn spec_test_556() { let expected = r##"

foo

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -7435,7 +7435,7 @@ fn spec_test_557() { let expected = r##"

foo bar

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -7447,7 +7447,7 @@ fn spec_test_558() { let expected = r##"

[foo bar]

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -7459,7 +7459,7 @@ fn spec_test_559() { let expected = r##"

[[bar foo

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -7471,7 +7471,7 @@ fn spec_test_560() { let expected = r##"

Foo

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -7483,7 +7483,7 @@ fn spec_test_561() { let expected = r##"

foo bar

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -7495,7 +7495,7 @@ fn spec_test_562() { let expected = r##"

[foo]

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -7507,7 +7507,7 @@ fn spec_test_563() { let expected = r##"

*foo*

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -7520,7 +7520,7 @@ fn spec_test_564() { let expected = r##"

foo

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -7532,7 +7532,7 @@ fn spec_test_565() { let expected = r##"

foo

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -7544,7 +7544,7 @@ fn spec_test_566() { let expected = r##"

foo

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -7556,7 +7556,7 @@ fn spec_test_567() { let expected = r##"

foo(not a link)

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -7568,7 +7568,7 @@ fn spec_test_568() { let expected = r##"

[foo]bar

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -7581,7 +7581,7 @@ fn spec_test_569() { let expected = r##"

foobaz

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -7594,7 +7594,7 @@ fn spec_test_570() { let expected = r##"

[foo]bar

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -7604,7 +7604,7 @@ fn spec_test_571() { let expected = r##"

foo

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -7616,7 +7616,7 @@ fn spec_test_572() { let expected = r##"

foo bar

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -7626,7 +7626,7 @@ fn spec_test_573() { let expected = r##"

foo bar

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -7636,7 +7636,7 @@ fn spec_test_574() { let expected = r##"

foo bar

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -7648,7 +7648,7 @@ fn spec_test_575() { let expected = r##"

foo bar

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -7660,7 +7660,7 @@ fn spec_test_576() { let expected = r##"

foo bar

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -7670,7 +7670,7 @@ fn spec_test_577() { let expected = r##"

foo

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -7680,7 +7680,7 @@ fn spec_test_578() { let expected = r##"

My foo bar

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -7690,7 +7690,7 @@ fn spec_test_579() { let expected = r##"

foo

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -7700,7 +7700,7 @@ fn spec_test_580() { let expected = r##"

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -7712,7 +7712,7 @@ fn spec_test_581() { let expected = r##"

foo

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -7724,7 +7724,7 @@ fn spec_test_582() { let expected = r##"

foo

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -7736,7 +7736,7 @@ fn spec_test_583() { let expected = r##"

foo

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -7748,7 +7748,7 @@ fn spec_test_584() { let expected = r##"

foo bar

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -7760,7 +7760,7 @@ fn spec_test_585() { let expected = r##"

Foo

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -7774,7 +7774,7 @@ fn spec_test_586() { []

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -7786,7 +7786,7 @@ fn spec_test_587() { let expected = r##"

foo

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -7798,7 +7798,7 @@ fn spec_test_588() { let expected = r##"

foo bar

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -7811,7 +7811,7 @@ fn spec_test_589() {

[[foo]]: /url "title"

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -7823,7 +7823,7 @@ fn spec_test_590() { let expected = r##"

Foo

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -7835,7 +7835,7 @@ fn spec_test_591() { let expected = r##"

![foo]

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -7847,7 +7847,7 @@ fn spec_test_592() { let expected = r##"

!foo

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -7857,7 +7857,7 @@ fn spec_test_593() { let expected = r##"

http://foo.bar.baz

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -7867,7 +7867,7 @@ fn spec_test_594() { let expected = r##"

http://foo.bar.baz/test?q=hello&id=22&boolean

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -7877,7 +7877,7 @@ fn spec_test_595() { let expected = r##"

irc://foo.bar:2233/baz

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -7887,7 +7887,7 @@ fn spec_test_596() { let expected = r##"

MAILTO:FOO@BAR.BAZ

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -7897,7 +7897,7 @@ fn spec_test_597() { let expected = r##"

a+b+c:d

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -7907,7 +7907,7 @@ fn spec_test_598() { let expected = r##"

made-up-scheme://foo,bar

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -7917,7 +7917,7 @@ fn spec_test_599() { let expected = r##"

http://../

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -7927,7 +7927,7 @@ fn spec_test_600() { let expected = r##"

localhost:5001/foo

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -7937,7 +7937,7 @@ fn spec_test_601() { let expected = r##"

<http://foo.bar/baz bim>

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -7947,7 +7947,7 @@ fn spec_test_602() { let expected = r##"

http://example.com/\[\

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -7957,7 +7957,7 @@ fn spec_test_603() { let expected = r##"

foo@bar.example.com

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -7967,7 +7967,7 @@ fn spec_test_604() { let expected = r##"

foo+special@Bar.baz-bar0.com

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -7977,7 +7977,7 @@ fn spec_test_605() { let expected = r##"

<foo+@bar.example.com>

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -7987,7 +7987,7 @@ fn spec_test_606() { let expected = r##"

<>

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -7997,7 +7997,7 @@ fn spec_test_607() { let expected = r##"

< http://foo.bar >

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -8007,7 +8007,7 @@ fn spec_test_608() { let expected = r##"

<m:abc>

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -8017,7 +8017,7 @@ fn spec_test_609() { let expected = r##"

<foo.bar.baz>

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -8027,7 +8027,7 @@ fn spec_test_610() { let expected = r##"

http://example.com

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -8037,7 +8037,7 @@ fn spec_test_611() { let expected = r##"

foo@bar.example.com

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -8047,7 +8047,7 @@ fn spec_test_612() { let expected = r##"

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -8057,7 +8057,7 @@ fn spec_test_613() { let expected = r##"

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -8069,7 +8069,7 @@ data="foo" > data="foo" >

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -8081,7 +8081,7 @@ _boolean zoop:33=zoop:33 /> _boolean zoop:33=zoop:33 />

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -8091,7 +8091,7 @@ fn spec_test_616() { let expected = r##"

Foo

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -8101,7 +8101,7 @@ fn spec_test_617() { let expected = r##"

<33> <__>

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -8111,7 +8111,7 @@ fn spec_test_618() { let expected = r##"

<a h*#ref="hi">

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -8121,7 +8121,7 @@ fn spec_test_619() { let expected = r##"

<a href="hi'> <a href=hi'>

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -8137,7 +8137,7 @@ foo><bar/ > bim!bop />

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -8147,7 +8147,7 @@ fn spec_test_621() { let expected = r##"

<a href='bar'title=title>

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -8157,7 +8157,7 @@ fn spec_test_622() { let expected = r##"

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -8167,7 +8167,7 @@ fn spec_test_623() { let expected = r##"

</a href="foo">

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -8179,7 +8179,7 @@ comment - with hyphen --> comment - with hyphen -->

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -8189,7 +8189,7 @@ fn spec_test_625() { let expected = r##"

foo <!-- not a comment -- two hyphens -->

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -8202,7 +8202,7 @@ foo

foo <!-- foo--->

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -8212,7 +8212,7 @@ fn spec_test_627() { let expected = r##"

foo

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -8222,7 +8222,7 @@ fn spec_test_628() { let expected = r##"

foo

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -8232,7 +8232,7 @@ fn spec_test_629() { let expected = r##"

foo &<]]>

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -8242,7 +8242,7 @@ fn spec_test_630() { let expected = r##"

foo

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -8252,7 +8252,7 @@ fn spec_test_631() { let expected = r##"

foo

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -8262,7 +8262,7 @@ fn spec_test_632() { let expected = r##"

<a href=""">

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -8274,7 +8274,7 @@ baz baz

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -8286,7 +8286,7 @@ baz baz

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -8298,7 +8298,7 @@ baz baz

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -8310,7 +8310,7 @@ fn spec_test_636() { bar

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -8322,7 +8322,7 @@ fn spec_test_637() { bar

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -8334,7 +8334,7 @@ bar* bar

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -8346,7 +8346,7 @@ bar* bar

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -8357,7 +8357,7 @@ span` let expected = r##"

code span

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -8368,7 +8368,7 @@ span` let expected = r##"

code\ span

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -8380,7 +8380,7 @@ bar"> bar">

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -8392,7 +8392,7 @@ bar"> bar">

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -8402,7 +8402,7 @@ fn spec_test_644() { let expected = r##"

foo\

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -8412,7 +8412,7 @@ fn spec_test_645() { let expected = r##"

foo

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -8422,7 +8422,7 @@ fn spec_test_646() { let expected = r##"

foo\

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -8432,7 +8432,7 @@ fn spec_test_647() { let expected = r##"

foo

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -8444,7 +8444,7 @@ baz baz

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -8456,7 +8456,7 @@ fn spec_test_649() { baz

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -8466,7 +8466,7 @@ fn spec_test_650() { let expected = r##"

hello $.;'there

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -8476,7 +8476,7 @@ fn spec_test_651() { let expected = r##"

Foo χρῆν

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -8486,5 +8486,5 @@ fn spec_test_652() { let expected = r##"

Multiple spaces

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } diff --git a/tests/suite/table.rs b/tests/suite/table.rs index fb826574e..5339414b1 100644 --- a/tests/suite/table.rs +++ b/tests/suite/table.rs @@ -11,7 +11,7 @@ fn table_test_1() { let expected = r##"

Test header

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -23,7 +23,7 @@ fn table_test_2() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -44,7 +44,7 @@ fn table_test_3() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -71,7 +71,7 @@ fn table_test_4() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -87,7 +87,7 @@ fn table_test_5() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -103,7 +103,7 @@ fn table_test_6() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -119,7 +119,7 @@ fn table_test_7() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -135,7 +135,7 @@ fn table_test_8() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -161,7 +161,7 @@ fn table_test_9() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -173,7 +173,7 @@ fn table_test_10() { |ぃ|い|

"##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -187,7 +187,7 @@ fn table_test_11() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); } #[test] @@ -201,5 +201,5 @@ fn table_test_12() { "##; - test_markdown_html(original, expected, false, false); + test_markdown_html(original, expected, false, false, false); }