From c93a6dffc4dc56eaee28689af85d1cb915ea8968 Mon Sep 17 00:00:00 2001 From: Vitor Pamplona Date: Fri, 7 Jul 2023 12:27:57 -0400 Subject: [PATCH] Creates a fallback for Android9 on OPPO, which doesn't seem able to parse the Japanese regex. --- .../amethyst/service/CachedRichTextParser.kt | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/com/vitorpamplona/amethyst/service/CachedRichTextParser.kt b/app/src/main/java/com/vitorpamplona/amethyst/service/CachedRichTextParser.kt index f0994a937..1c18c56c3 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/service/CachedRichTextParser.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/service/CachedRichTextParser.kt @@ -47,13 +47,15 @@ object CachedRichTextParser { } } -val longDatePattern: Pattern = Pattern.compile("^\\d{4}-\\d{2}-\\d{2}$") -val shortDatePattern: Pattern = Pattern.compile("^\\d{2}-\\d{2}-\\d{2}$") -val numberPattern: Pattern = Pattern.compile("^(-?[\\d.]+)([a-zA-Z%]*)$") - // Group 1 = url, group 4 additional chars // val noProtocolUrlValidator = Pattern.compile("(([\\w\\d-]+\\.)*[a-zA-Z][\\w-]+[\\.\\:]\\w+([\\/\\?\\=\\&\\#\\.]?[\\w-]+)*\\/?)(.*)") -val noProtocolUrlValidator = Pattern.compile("(([\\w\\d-]+\\.)*[a-zA-Z][\\w-]+[\\.\\:]\\w+([\\/\\?\\=\\&\\#\\.]?[\\w-]*[^\\p{IsHan}\\p{IsHiragana}\\p{IsKatakana}])*\\/?)(.*)") + +// Android9 seems to have an issue starting this regex. +val noProtocolUrlValidator = try { + Pattern.compile("(([\\w\\d-]+\\.)*[a-zA-Z][\\w-]+[\\.\\:]\\w+([\\/\\?\\=\\&\\#\\.]?[\\w-]*[^\\p{IsHan}\\p{IsHiragana}\\p{IsKatakana}])*\\/?)(.*)") +} catch (e: Exception) { + Pattern.compile("(([\\w\\d-]+\\.)*[a-zA-Z][\\w-]+[\\.\\:]\\w+([\\/\\?\\=\\&\\#\\.]?[\\w-]+)*\\/?)(.*)") +} class RichTextParser() { fun parseText( @@ -232,6 +234,12 @@ class RichTextParser() { return RegularTextSegment(word) } + + companion object { + val longDatePattern: Pattern = Pattern.compile("^\\d{4}-\\d{2}-\\d{2}$") + val shortDatePattern: Pattern = Pattern.compile("^\\d{2}-\\d{2}-\\d{2}$") + val numberPattern: Pattern = Pattern.compile("^(-?[\\d.]+)([a-zA-Z%]*)$") + } } @Immutable