From 571d80fa6b6f8d78188f9812ae934b37c83668af Mon Sep 17 00:00:00 2001 From: Jeena Date: Sun, 22 Mar 2026 01:17:49 +0000 Subject: [PATCH] api: decode HTML entities in article excerpts --- src/api.rs | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/src/api.rs b/src/api.rs index d683e8f..59a96a3 100644 --- a/src/api.rs +++ b/src/api.rs @@ -249,9 +249,20 @@ fn plain_text_excerpt(html: &str, max_chars: usize) -> String { } } let collapsed: String = out.split_whitespace().collect::>().join(" "); - if collapsed.chars().count() <= max_chars { - collapsed + let decoded = decode_html_entities(&collapsed); + if decoded.chars().count() <= max_chars { + decoded } else { - collapsed.chars().take(max_chars).collect::() + "…" + decoded.chars().take(max_chars).collect::() + "…" } } + +fn decode_html_entities(s: &str) -> String { + s.replace("&", "&") + .replace("<", "<") + .replace(">", ">") + .replace(""", "\"") + .replace("'", "'") + .replace("'", "'") + .replace(" ", " ") +}