extern crate micromark; use micromark::{ mdast::{Break, Node, Paragraph, Root, Text}, micromark, micromark_to_mdast, micromark_with_options, unist::Position, Constructs, Options, ParseOptions, }; use pretty_assertions::assert_eq; #[test] fn hard_break_trailing() -> Result<(), String> { assert_eq!( micromark("foo \nbaz"), "
foo
\nbaz
foo
\nbaz
foo
\nbar
foo
\nbar
code text
foo
", "should not support trailing hard breaks at the end of a paragraph" ); assert_eq!( micromark("### foo "), "aaa\nbb
", "should support a mixed line suffix (1)" ); assert_eq!( micromark("aaa\t \nbb"), "aaa\nbb
", "should support a mixed line suffix (2)" ); assert_eq!( micromark("aaa \t \nbb"), "aaa\nbb
", "should support a mixed line suffix (3)" ); assert_eq!( micromark("aaa\0 \nbb"), "aaa�
\nbb
aaa�\nbb
", "should support a line suffix after a replacement character" ); assert_eq!( micromark("*a* \nbb"), "a
\nbb
a\nbb
", "should support a line suffix after a span" ); assert_eq!( micromark("*a* \t\nbb"), "a\nbb
", "should support a mixed line suffix after a span (1)" ); assert_eq!( micromark("*a*\t \nbb"), "a\nbb
", "should support a mixed line suffix after a span (2)" ); assert_eq!( micromark("*a* \t \nbb"), "a\nbb
", "should support a mixed line suffix after a span (3)" ); assert_eq!( micromark_with_options( "a \nb", &Options { parse: ParseOptions { constructs: Constructs { hard_break_trailing: false, ..Constructs::default() }, ..ParseOptions::default() }, ..Options::default() } )?, "a\nb
", "should support turning off hard break (trailing)" ); assert_eq!( micromark_to_mdast("a \nb.", &ParseOptions::default())?, Node::Root(Root { children: vec![Node::Paragraph(Paragraph { children: vec![ Node::Text(Text { value: "a".into(), position: Some(Position::new(1, 1, 0, 1, 2, 1)) }), Node::Break(Break { position: Some(Position::new(1, 2, 1, 2, 1, 4)) }), Node::Text(Text { value: "b.".into(), position: Some(Position::new(2, 1, 4, 2, 3, 6)) }), ], position: Some(Position::new(1, 1, 0, 2, 3, 6)) })], position: Some(Position::new(1, 1, 0, 2, 3, 6)) }), "should support hard break (trailing) as `Break`s in mdast" ); Ok(()) }