Markdown parser fork with extended syntax for personal use.
1mod test_utils;
2use markdown::{message, to_html_with_options, Constructs, Options, ParseOptions};
3use pretty_assertions::assert_eq;
4use test_utils::swc::{parse_esm, parse_expression};
5
6#[test]
7fn mdx_swc() -> Result<(), message::Message> {
8 let swc = Options {
9 parse: ParseOptions {
10 constructs: Constructs::mdx(),
11 mdx_esm_parse: Some(Box::new(parse_esm)),
12 mdx_expression_parse: Some(Box::new(parse_expression)),
13 ..Default::default()
14 },
15 ..Default::default()
16 };
17
18 assert_eq!(
19 to_html_with_options("{'}'}", &swc)?,
20 "",
21 "should support JavaScript-aware flow expressions w/ `mdx_expression_parse`"
22 );
23
24 assert_eq!(
25 to_html_with_options("a {'}'} b", &swc)?,
26 "<p>a b</p>",
27 "should support JavaScript-aware text expressions w/ `mdx_expression_parse`"
28 );
29
30 assert_eq!(
31 to_html_with_options("<a {...a/*}*/} />", &swc)?,
32 "",
33 "should support JavaScript-aware attribute expressions w/ `mdx_expression_parse`"
34 );
35
36 assert_eq!(
37 to_html_with_options("<a b={'}'} />", &swc)?,
38 "",
39 "should support JavaScript-aware attribute value expressions w/ `mdx_expression_parse`"
40 );
41
42 assert_eq!(
43 to_html_with_options("import a from 'b'\n\nexport {a}\n\n# c", &swc)?,
44 "<h1>c</h1>",
45 "should support JavaScript-aware ESM w/ `mdx_esm_parse`"
46 );
47
48 Ok(())
49}