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(" ", " ") +}