diff options
-rw-r--r-- | src/to_mdast.rs | 6 | ||||
-rw-r--r-- | tests/code_fenced.rs | 28 |
2 files changed, 31 insertions, 3 deletions
diff --git a/src/to_mdast.rs b/src/to_mdast.rs index fe5bd82..39f6bc5 100644 --- a/src/to_mdast.rs +++ b/src/to_mdast.rs @@ -1721,11 +1721,11 @@ fn trim_eol(value: String, at_start: bool, at_end: bool) -> String { if at_end && end > start { if bytes[end - 1] == b'\n' { end -= 1; - } else if bytes[end - 1] == b'\r' { - end -= 1; - if end > start && bytes[end - 1] == b'\n' { + if end > start && bytes[end - 1] == b'\r' { end -= 1; } + } else if bytes[end - 1] == b'\r' { + end -= 1; } } diff --git a/tests/code_fenced.rs b/tests/code_fenced.rs index c064179..e544ade 100644 --- a/tests/code_fenced.rs +++ b/tests/code_fenced.rs @@ -311,5 +311,33 @@ fn code_fenced() -> Result<(), String> { "should support code (fenced) w/o closing fence in mdast" ); + assert_eq!( + to_mdast("```\rasd\r```", &ParseOptions::default())?, + Node::Root(Root { + children: vec![Node::Code(Code { + lang: None, + meta: None, + value: "asd".into(), + position: Some(Position::new(1, 1, 0, 3, 4, 11)) + })], + position: Some(Position::new(1, 1, 0, 3, 4, 11)) + }), + "should support code (fenced) w/o CR line endings" + ); + + assert_eq!( + to_mdast("```\r\nasd\r\n```", &ParseOptions::default())?, + Node::Root(Root { + children: vec![Node::Code(Code { + lang: None, + meta: None, + value: "asd".into(), + position: Some(Position::new(1, 1, 0, 3, 4, 13)) + })], + position: Some(Position::new(1, 1, 0, 3, 4, 13)) + }), + "should support code (fenced) w/o CR+LF line endings" + ); + Ok(()) } |