extern crate micromark; use micromark::{micromark, micromark_with_options, Constructs, Options}; #[test] fn code_indented() { assert_eq!( micromark(" a simple\n indented code block"), "
a simple\n  indented code block\n
", "should support indented code" ); assert_eq!( micromark(" - foo\n\n bar"), "", "should prefer list item content over indented code (1)" ); assert_eq!( micromark("1. foo\n\n - bar"), "
    \n
  1. \n

    foo

    \n\n
  2. \n
", "should prefer list item content over indented code (2)" ); assert_eq!( micromark(" \n *hi*\n\n - one"), "
<a/>\n*hi*\n\n- one\n
", "should support blank lines in indented code (1)" ); assert_eq!( micromark(" chunk1\n\n chunk2\n \n \n \n chunk3"), "
chunk1\n\nchunk2\n\n\n\nchunk3\n
", "should support blank lines in indented code (2)" ); assert_eq!( micromark(" chunk1\n \n chunk2"), "
chunk1\n  \n  chunk2\n
", "should support blank lines in indented code (3)" ); assert_eq!( micromark("Foo\n bar"), "

Foo\nbar

", "should not support interrupting paragraphs" ); assert_eq!( micromark(" foo\nbar"), "
foo\n
\n

bar

", "should support paragraphs directly after indented code" ); assert_eq!( micromark("# Heading\n foo\nHeading\n------\n foo\n----"), "

Heading

\n
foo\n
\n

Heading

\n
foo\n
\n
", "should mix w/ other content" ); assert_eq!( micromark(" foo\n bar"), "
    foo\nbar\n
", "should support extra whitespace on the first line" ); assert_eq!( micromark("\n \n foo\n "), "
foo\n
", "should not support initial blank lines" ); assert_eq!( micromark(" foo "), "
foo  \n
", "should support trailing whitespace" ); assert_eq!( micromark("> a\nb"), "
\n
a\n
\n
\n

b

", "should not support lazyness (1)" ); assert_eq!( micromark("> a\n b"), "
\n

a\nb

\n
", "should not support lazyness (2)" ); assert_eq!( micromark("> a\n b"), "
\n

a\nb

\n
", "should not support lazyness (3)" ); assert_eq!( micromark("> a\n b"), "
\n

a\nb

\n
", "should not support lazyness (4)" ); assert_eq!( micromark("> a\n b"), "
\n
a\n
\n
\n
b\n
", "should not support lazyness (5)" ); assert_eq!( micromark("> a\n b"), "
\n
a\n
\n
\n
 b\n
", "should not support lazyness (6)" ); assert_eq!( micromark("> a\n b"), "
\n
a\n
\n
\n
  b\n
", "should not support lazyness (7)" ); let off = Options { constructs: Constructs { code_indented: false, ..Constructs::default() }, ..Options::default() }; assert_eq!( micromark_with_options(" a", &off), "

a

", "should support turning off code (indented, 1)" ); assert_eq!( micromark_with_options("> a\n b", &off), "
\n

a\nb

\n
", "should support turning off code (indented, 2)" ); assert_eq!( micromark_with_options("- a\n b", &off), "", "should support turning off code (indented, 3)" ); assert_eq!( micromark_with_options("- a\n - b", &off), "", "should support turning off code (indented, 4)" ); assert_eq!( micromark_with_options("- a\n - b", &off), "", "should support turning off code (indented, 5)" ); assert_eq!( micromark_with_options("```\na\n ```", &off), "
a\n
", "should support turning off code (indented, 6)" ); assert_eq!( micromark_with_options( "a ", &Options { allow_dangerous_html: true, ..off.clone() } ), "

a

", "should support turning off code (indented, 7)" ); assert_eq!( micromark_with_options("- Foo\n---", &off), "\n
", "should support turning off code (indented, 8)" ); assert_eq!( micromark_with_options("- Foo\n ---", &off), "", "should support turning off code (indented, 9)" ); }