markdown preview: Ignore inline HTML tags in text (#19804)

Follow up to #19785

This PR ensures that we explicitly ignore inline HTML tags so that we
can still extract the text between the tags and show them to the user

Release Notes:

- N/A
This commit is contained in:
Bennet Bo Fenner 2024-10-27 14:34:59 +01:00 committed by GitHub
parent db61711753
commit b13940720a
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -234,6 +234,10 @@ impl<'a> MarkdownParser<'a> {
text.push('\n');
}
// We want to ignore any inline HTML tags in the text but keep
// the text between them
Event::InlineHtml(_) => {}
Event::Text(t) => {
text.push_str(t.as_ref());
@ -849,6 +853,16 @@ mod tests {
);
}
#[gpui::test]
async fn test_text_with_inline_html() {
let parsed = parse("This is a paragraph with an inline HTML <sometag>tag</sometag>.").await;
assert_eq!(
parsed.children,
vec![p("This is a paragraph with an inline HTML tag.", 0..63),],
);
}
#[gpui::test]
async fn test_raw_links_detection() {
let parsed = parse("Checkout this https://zed.dev link").await;
@ -1092,6 +1106,26 @@ Some other content
);
}
#[gpui::test]
async fn test_list_item_with_inline_html() {
let parsed = parse(
"\
* This is a list item with an inline HTML <sometag>tag</sometag>.
",
)
.await;
assert_eq!(
parsed.children,
vec![list_item(
0..67,
1,
Unordered,
vec![p("This is a list item with an inline HTML tag.", 4..44),],
),],
);
}
#[gpui::test]
async fn test_nested_list_with_paragraph_inside() {
let parsed = parse(