extern crate micromark; use micromark::{micromark, micromark_with_options, Constructs, Options}; use pretty_assertions::assert_eq; #[test] fn block_quote() { assert_eq!( micromark("> # a\n> b\n> c"), "
\n", "should support block quotes" ); assert_eq!( micromark("># a\n>b\n> c"), "a
\nb\nc
\n
\n", "should support block quotes w/o space" ); assert_eq!( micromark(" > # a\n > b\n > c"), "a
\nb\nc
\n
\n", "should support prefixing block quotes w/ spaces" ); assert_eq!( micromark(" > # a\n > b\n > c"), "a
\nb\nc
\n
> # a\n> b\n> c\n
",
"should not support block quotes w/ 4 spaces"
);
assert_eq!(
micromark("> # a\n> b\nc"),
"\n", "should support lazy content lines" ); assert_eq!( micromark("> a\nb\n> c"), "a
\nb\nc
\n
\n", "should support lazy content lines inside block quotes" ); assert_eq!( micromark("> a\n> ---"), "a\nb\nc
\n
\n", "should support setext headings underlines in block quotes" ); assert_eq!( micromark("> a\n---"), "a
\n
\n\na
\n
\n", "should support lists in block quotes" ); assert_eq!( micromark("> - a\n- b"), "\n
\n- a
\n- b
\n
\n\n\n
\n- a
\n
\n\n\na\n
b\n
",
"should not support lazy indented code in block quotes"
);
assert_eq!(
micromark("> ```\na\n```"),
"\n\n\n
a
\n
\n",
"should not support lazy fenced code in block quotes (1)"
);
assert_eq!(
micromark("> a\n```\nb"),
"\n\na
\n
b\n
\n",
"should not support lazy fenced code in block quotes (2)"
);
assert_eq!(
micromark("> a\n - b"),
"\n", "should not support lazy indented code (or lazy list) in block quotes" ); assert_eq!( micromark("> [\na"), "a\n- b
\n
\n", "should support lazy, definition-like lines" ); assert_eq!( micromark("> [a]: b\nc"), "[\na
\n
\n", "should support a definition, followed by a lazy paragraph" ); assert_eq!( micromark(">"), "c
\n
\n", "should support empty block quotes (1)" ); assert_eq!( micromark(">\n> \n> "), "
\n", "should support empty block quotes (2)" ); assert_eq!( micromark(">\n> a\n> "), "
\n", "should support initial or final lazy empty block quote lines" ); assert_eq!( micromark("> a\n\n> b"), "a
\n
\n\na
\n
\n", "should support adjacent block quotes" ); assert_eq!( micromark("> a\n> b"), "b
\n
\n", "should support a paragraph in a block quote" ); assert_eq!( micromark("> a\n>\n> b"), "a\nb
\n
\n", "should support adjacent paragraphs in block quotes" ); assert_eq!( micromark("[a]\n\n> [a]: b"), "\na
\nb
\n
\n", "should support a definition in a block quote (1)" ); assert_eq!( micromark("> [a]: b\n\n[a]"), "
\n\n", "should support a definition in a block quote (2)" ); assert_eq!( micromark("a\n> b"), "
a
\n\n", "should support interrupting paragraphs w/ block quotes" ); assert_eq!( micromark("> a\n***\n> b"), "b
\n
\n\na
\n
\n", "should support interrupting block quotes w/ thematic breaks" ); assert_eq!( micromark("> a\nb"), "b
\n
\n", "should not support interrupting block quotes w/ paragraphs" ); assert_eq!( micromark("> a\n\nb"), "a\nb
\n
\n\na
\n
b
", "should support interrupting block quotes w/ blank lines" ); assert_eq!( micromark("> a\n>\nb"), "\n\na
\n
b
", "should not support interrupting a blank line in a block quotes w/ paragraphs" ); assert_eq!( micromark("> > > a\nb"), "\n", "should not support interrupting many block quotes w/ paragraphs (1)" ); assert_eq!( micromark(">>> a\n> b\n>>c"), "\n\n\n\na\nb
\n
\n", "should not support interrupting many block quotes w/ paragraphs (2)" ); assert_eq!( micromark("> a\n\n> b"), "\n\n\n\na\nb\nc
\n
\n\n\na\n
\n", "should support 5 spaces for indented code, not 4" ); assert_eq!( micromark_with_options( "> # a\n> b\n> c", &Options { constructs: Constructs { block_quote: false, ..Constructs::default() }, ..Options::default() } ), "b
\n
> # a\n> b\n> c
", "should support turning off block quotes" ); }