From c0aea75c163e1c28f22d102666f6a97441973041 Mon Sep 17 00:00:00 2001 From: David Kaspar Date: Tue, 23 Apr 2024 17:16:53 +0200 Subject: [PATCH] added test for html entity numbers to regular expression added a few common html entities and entity numbers --- .../amethyst/commons/preview/MetaTagsParser.kt | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/commons/src/main/java/com/vitorpamplona/amethyst/commons/preview/MetaTagsParser.kt b/commons/src/main/java/com/vitorpamplona/amethyst/commons/preview/MetaTagsParser.kt index 75b9e7325..047625140 100644 --- a/commons/src/main/java/com/vitorpamplona/amethyst/commons/preview/MetaTagsParser.kt +++ b/commons/src/main/java/com/vitorpamplona/amethyst/commons/preview/MetaTagsParser.kt @@ -130,7 +130,7 @@ object MetaTagsParser { // - commonly used character references in attribute values are resolved private class Attrs { companion object { - val RE_CHAR_REF = Regex("""&(\w+)(;?)""") + val RE_CHAR_REF = Regex("""&(#?)(\w+)(;?)""") val BASE_CHAR_REFS = mapOf( "amp" to "&", @@ -148,16 +148,25 @@ object MetaTagsParser { "equals" to "=", "grave" to "`", "DiacriticalGrave" to "`", + "039" to "'", + "8217" to "’", + "8216" to "‘", + "39" to "'", + "ldquo" to "“", + "rdquo" to "”", + "mdash" to "—", + "hellip" to "…", + "x27" to "'", ) fun replaceCharRefs(match: MatchResult): String { - val bcr = BASE_CHAR_REFS[match.groupValues[1]] + val bcr = BASE_CHAR_REFS[match.groupValues[2]] if (bcr != null) { return bcr } // non-base char refs must be terminated by ';' if (match.groupValues[2].isNotEmpty()) { - val cr = CHAR_REFS[match.groupValues[1]] + val cr = CHAR_REFS[match.groupValues[2]] if (cr != null) { return cr }