Remove log when pulldown_cmark produces long substituted text (#28375)

Michael Sloan created

Turns out that consecutive dashes are substituted with half the number
of input dashes. Extended the test with this case as well

Release Notes:

- N/A

Change summary

crates/markdown/src/parser.rs | 29 ++++++++++++-----------------
1 file changed, 12 insertions(+), 17 deletions(-)

Detailed changes

crates/markdown/src/parser.rs 🔗

@@ -98,19 +98,6 @@ pub fn parse_markdown(
                 // HTML entities or smart punctuation has occurred. When these substitutions occur,
                 // `parsed` only consists of the result of a single substitution.
                 if !cow_str_points_inside(&parsed, text) {
-                    // Attempt to detect cases where the assumptions here are not valid or the
-                    // behavior has changed.
-                    if parsed.len() > 4 {
-                        log::error!(
-                            "Bug in markdown parser. \
-                            pulldown_cmark::Event::Text expected to a substituted HTML entity, \
-                            but it was longer than expected.\n\
-                            Source: {}\n\
-                            Parsed: {}",
-                            &text[range.clone()],
-                            parsed
-                        );
-                    }
                     events.push((range, MarkdownEvent::SubstitutedText(parsed.into())));
                 } else {
                     // Automatically detect links in text if not already within a markdown link.
@@ -432,12 +419,18 @@ impl From<pulldown_cmark::Tag<'_>> for MarkdownTag {
 /// more efficient - it fits within a `pulldown_cmark::InlineStr` in all known cases.
 ///
 /// Same as `pulldown_cmark::CowStr` but without the `Borrow` case.
-#[derive(Clone, Debug)]
+#[derive(Clone)]
 pub enum CompactStr {
     Boxed(Box<str>),
     Inlined(InlineStr),
 }
 
+impl std::fmt::Debug for CompactStr {
+    fn fmt(&self, formatter: &mut std::fmt::Formatter) -> Result<(), std::fmt::Error> {
+        self.deref().fmt(formatter)
+    }
+}
+
 impl Deref for CompactStr {
     type Target = str;
 
@@ -551,10 +544,10 @@ mod tests {
     #[test]
     fn test_smart_punctuation() {
         assert_eq!(
-            parse_markdown("-- --- ... \"double quoted\" 'single quoted'"),
+            parse_markdown("-- --- ... \"double quoted\" 'single quoted' ----------"),
             (
                 vec![
-                    (0..42, Start(Paragraph)),
+                    (0..53, Start(Paragraph)),
                     (0..2, SubstitutedText("–".into())),
                     (2..3, Text),
                     (3..6, SubstitutedText("—".into())),
@@ -568,7 +561,9 @@ mod tests {
                     (27..28, SubstitutedText("‘".into())),
                     (28..41, Text),
                     (41..42, SubstitutedText("’".into())),
-                    (0..42, End(MarkdownTagEnd::Paragraph))
+                    (42..43, Text),
+                    (43..53, SubstitutedText("–––––".into())),
+                    (0..53, End(MarkdownTagEnd::Paragraph))
                 ],
                 HashSet::new(),
                 HashSet::new()