diff --git a/Cargo.lock b/Cargo.lock index d9e6afc5b..502dbae60 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2851,9 +2851,9 @@ checksum = "a993555f31e5a609f617c12db6250dedcac1b0a85076912c436e6fc9b2c8e6a3" [[package]] name = "quick-xml" -version = "0.22.0" +version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8533f14c8382aaad0d592c812ac3b826162128b65662331e1127b45c3d18536b" +checksum = "9279fbdacaad3baf559d8cabe0acc3d06e30ea14931af31af79578ac0946decc" dependencies = [ "memchr", ] diff --git a/Cargo.toml b/Cargo.toml index 066434279..dccc4527c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -50,7 +50,7 @@ once_cell = "1.12.0" percent-encoding = "2.0" pgp = { version = "0.7", default-features = false } pretty_env_logger = { version = "0.4", optional = true } -quick-xml = "0.22" +quick-xml = "0.23" r2d2 = "0.8" r2d2_sqlite = "0.20" rand = "0.7" diff --git a/src/dehtml.rs b/src/dehtml.rs index cce8cfec0..fcab163c8 100644 --- a/src/dehtml.rs +++ b/src/dehtml.rs @@ -94,7 +94,7 @@ fn dehtml_quick_xml(buf: &str) -> String { } Ok(quick_xml::events::Event::End(ref e)) => dehtml_endtag_cb(e, &mut dehtml), Ok(quick_xml::events::Event::Text(ref e)) => dehtml_text_cb(e, &mut dehtml), - Ok(quick_xml::events::Event::CData(ref e)) => dehtml_cdata_cb(e, &mut dehtml), + Ok(quick_xml::events::Event::CData(e)) => dehtml_text_cb(&e.escape(), &mut dehtml), Ok(quick_xml::events::Event::Empty(ref e)) => { // Handle empty tags as a start tag immediately followed by end tag. // For example, `

` is treated as `

`. @@ -134,23 +134,6 @@ fn dehtml_text_cb(event: &BytesText, dehtml: &mut Dehtml) { } } -fn dehtml_cdata_cb(event: &BytesText, dehtml: &mut Dehtml) { - if dehtml.get_add_text() == AddText::YesPreserveLineEnds - || dehtml.get_add_text() == AddText::YesRemoveLineEnds - { - let last_added = escaper::decode_html_buf_sloppy(event.escaped()).unwrap_or_default(); - - if dehtml.get_add_text() == AddText::YesRemoveLineEnds { - dehtml.strbuilder += LINE_RE.replace_all(&last_added, "\r").as_ref(); - } else if !dehtml.line_prefix().is_empty() { - let l = dehtml.append_prefix("\n"); - dehtml.strbuilder += LINE_RE.replace_all(&last_added, l.as_str()).as_ref(); - } else { - dehtml.strbuilder += &last_added; - } - } -} - fn dehtml_endtag_cb(event: &BytesEnd, dehtml: &mut Dehtml) { let tag = String::from_utf8_lossy(event.name()).trim().to_lowercase();