diff options
author | Titus Wormer <tituswormer@gmail.com> | 2022-10-13 15:30:33 +0200 |
---|---|---|
committer | Titus Wormer <tituswormer@gmail.com> | 2022-10-13 15:30:33 +0200 |
commit | afe75b0508cedba1df5c9701a22e5732c7d0d00e (patch) | |
tree | 69b40ae77082d5e300e7320ba0ab08a2fb522380 | |
parent | 645fb2b02b1563bd98c07515bdc2d6d8478ba74e (diff) | |
download | markdown-rs-afe75b0508cedba1df5c9701a22e5732c7d0d00e.tar.gz markdown-rs-afe75b0508cedba1df5c9701a22e5732c7d0d00e.tar.bz2 markdown-rs-afe75b0508cedba1df5c9701a22e5732c7d0d00e.zip |
Add more tests for whitespace in jsx tags
-rw-r--r-- | src/construct/partial_mdx_jsx.rs | 12 | ||||
-rw-r--r-- | tests/mdx_jsx_text.rs | 72 |
2 files changed, 74 insertions, 10 deletions
diff --git a/src/construct/partial_mdx_jsx.rs b/src/construct/partial_mdx_jsx.rs index 1bf6fc2..e654416 100644 --- a/src/construct/partial_mdx_jsx.rs +++ b/src/construct/partial_mdx_jsx.rs @@ -1104,20 +1104,12 @@ pub fn es_whitespace_eol_after(tokenizer: &mut Tokenizer) -> State { /// Check if a character can start a JSX identifier. fn id_start_opt(code: Option<char>) -> bool { - if let Some(char) = code { - id_start(char) - } else { - false - } + code.map_or(false, id_start) } /// Check if a character can continue a JSX identifier. fn id_cont_opt(code: Option<char>) -> bool { - if let Some(char) = code { - id_cont(char, true) - } else { - false - } + code.map_or(false, |c| id_cont(c, true)) } /// Crash because something happened `at`, with info on what was `expect`ed diff --git a/tests/mdx_jsx_text.rs b/tests/mdx_jsx_text.rs index 2d1ec0a..d6e3d56 100644 --- a/tests/mdx_jsx_text.rs +++ b/tests/mdx_jsx_text.rs @@ -345,6 +345,78 @@ fn mdx_jsx_text_core() -> Result<(), String> { ); assert_eq!( + to_mdast("<a\u{3000}b \u{3000}c\u{3000} d\u{3000}/>.", &mdx.parse)?, + Node::Root(Root { + children: vec![Node::Paragraph(Paragraph { + children: vec![ + Node::MdxJsxTextElement(MdxJsxTextElement { + name: Some("a".into()), + attributes: vec![ + AttributeContent::Property(MdxJsxAttribute { + name: "b".into(), + value: None, + }), + AttributeContent::Property(MdxJsxAttribute { + name: "c".into(), + value: None, + }), + AttributeContent::Property(MdxJsxAttribute { + name: "d".into(), + value: None, + }) + ], + children: vec![], + position: Some(Position::new(1, 1, 0, 1, 22, 21)) + }), + Node::Text(Text { + value: ".".into(), + position: Some(Position::new(1, 22, 21, 1, 23, 22)) + }) + ], + position: Some(Position::new(1, 1, 0, 1, 23, 22)) + })], + position: Some(Position::new(1, 1, 0, 1, 23, 22)) + }), + "should support unicode whitespace in a lot of places" + ); + + assert_eq!( + to_mdast("<a\nb \nc\n d\n/>.", &mdx.parse)?, + Node::Root(Root { + children: vec![Node::Paragraph(Paragraph { + children: vec![ + Node::MdxJsxTextElement(MdxJsxTextElement { + name: Some("a".into()), + attributes: vec![ + AttributeContent::Property(MdxJsxAttribute { + name: "b".into(), + value: None, + }), + AttributeContent::Property(MdxJsxAttribute { + name: "c".into(), + value: None, + }), + AttributeContent::Property(MdxJsxAttribute { + name: "d".into(), + value: None, + }) + ], + children: vec![], + position: Some(Position::new(1, 1, 0, 5, 3, 13)) + }), + Node::Text(Text { + value: ".".into(), + position: Some(Position::new(5, 3, 13, 5, 4, 14)) + }) + ], + position: Some(Position::new(1, 1, 0, 5, 4, 14)) + })], + position: Some(Position::new(1, 1, 0, 5, 4, 14)) + }), + "should support line endings in a lot of places" + ); + + assert_eq!( to_mdast("a </b> c", &mdx.parse) .err() .unwrap(), |