|
1 | | -use pulldown_cmark::{Alignment, CodeBlockKind, Event, LinkType, Options, Parser, Tag, TagEnd}; |
| 1 | +use pulldown_cmark::{utils::TextMergeStream, Alignment, CodeBlockKind, Event, LinkType, Options, Parser, Tag, TagEnd}; |
2 | 2 | use pulldown_cmark_to_cmark::{cmark, cmark_resume, cmark_resume_with_options, Options as CmarkToCmarkOptions, State}; |
3 | 3 |
|
4 | 4 | mod source_range_fmt; |
@@ -60,8 +60,8 @@ fn assert_events_eq(s: &str) { |
60 | 60 | let mut buf = String::new(); |
61 | 61 | cmark(before_events, &mut buf).unwrap(); |
62 | 62 |
|
63 | | - let before_events = Parser::new_ext(s, Options::all()); |
64 | | - let after_events = Parser::new_ext(&buf, Options::all()); |
| 63 | + let before_events = TextMergeStream::new(Parser::new_ext(s, Options::all())); |
| 64 | + let after_events = TextMergeStream::new(Parser::new_ext(&buf, Options::all())); |
65 | 65 | println!("{buf}"); |
66 | 66 | assert_eq!(before_events.collect::<Vec<_>>(), after_events.collect::<Vec<_>>()); |
67 | 67 | } |
@@ -1010,6 +1010,36 @@ mod table { |
1010 | 1010 | let p = Parser::new_ext(&generated_markdown, Options::all()); |
1011 | 1011 | let generated_events: Vec<_> = p.into_iter().collect(); |
1012 | 1012 |
|
| 1013 | + assert_eq!(original_events, generated_events); |
| 1014 | + } |
| 1015 | + #[test] |
| 1016 | + fn table_with_pipe_in_column() { |
| 1017 | + use pulldown_cmark::{Options, Parser}; |
| 1018 | + |
| 1019 | + let original_table_markdown = indoc!( |
| 1020 | + r" |
| 1021 | + | \| | a\|b | |
| 1022 | + |----|------| |
| 1023 | + | \| | a\|b |" |
| 1024 | + ); |
| 1025 | + let p = Parser::new_ext(original_table_markdown, Options::all()); |
| 1026 | + let original_events: Vec<_> = p.into_iter().collect(); |
| 1027 | + |
| 1028 | + let (generated_markdown, _) = fmte(&original_events); |
| 1029 | + |
| 1030 | + assert_eq!( |
| 1031 | + generated_markdown, |
| 1032 | + indoc!( |
| 1033 | + r" |
| 1034 | + |\||a\|b| |
| 1035 | + |-|---| |
| 1036 | + |\||a\|b|" |
| 1037 | + ) |
| 1038 | + ); |
| 1039 | + |
| 1040 | + let p = Parser::new_ext(&generated_markdown, Options::all()); |
| 1041 | + let generated_events: Vec<_> = p.into_iter().collect(); |
| 1042 | + |
1013 | 1043 | assert_eq!(original_events, generated_events); |
1014 | 1044 | } |
1015 | 1045 | } |
@@ -1452,6 +1482,12 @@ mod heading { |
1452 | 1482 | assert_events_eq_both("# Heading { #id .class1 key1=val1 .class2 }"); |
1453 | 1483 | assert_events_eq_both("# Heading { #id .class1 .class2 key1=val1 key2 }"); |
1454 | 1484 | } |
| 1485 | + #[test] |
| 1486 | + fn heading_with_hashes_at_end() { |
| 1487 | + assert_events_eq_both("Heading #\n===="); |
| 1488 | + assert_events_eq_both("Heading \\#\n===="); |
| 1489 | + assert_events_eq_both("# Heading \\#"); |
| 1490 | + } |
1455 | 1491 | } |
1456 | 1492 |
|
1457 | 1493 | mod frontmatter { |
|
0 commit comments