From 896758121b4a318371726c316392313644cae18f Mon Sep 17 00:00:00 2001 From: Vitor Pamplona Date: Wed, 22 Mar 2023 11:24:58 -0400 Subject: [PATCH] Blocks translations of @npub/@note tags in the text. --- .../service/lang/LanguageTranslatorService.kt | 20 +++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/app/src/play/java/com/vitorpamplona/amethyst/service/lang/LanguageTranslatorService.kt b/app/src/play/java/com/vitorpamplona/amethyst/service/lang/LanguageTranslatorService.kt index aa3bc4f32..8cfb1b47b 100644 --- a/app/src/play/java/com/vitorpamplona/amethyst/service/lang/LanguageTranslatorService.kt +++ b/app/src/play/java/com/vitorpamplona/amethyst/service/lang/LanguageTranslatorService.kt @@ -21,7 +21,8 @@ class ResultOrError( object LanguageTranslatorService { private val languageIdentification = LanguageIdentification.getClient() - val lnRegex = Pattern.compile("\\blnbc[a-z0-9]+\\b") + val lnRegex = Pattern.compile("\\blnbc[a-z0-9]+\\b", Pattern.CASE_INSENSITIVE) + val tagRegex = Pattern.compile("(nostr:)?@?(nsec1|npub1|nevent1|naddr1|note1|nprofile1|nrelay1)([qpzry9x8gf2tvdw0s3jn54khce6mua7l]+)", Pattern.CASE_INSENSITIVE) private val translators = object : LruCache(10) { @@ -61,7 +62,7 @@ object LanguageTranslatorService { return translator.downloadModelIfNeeded().onSuccessTask { val tasks = mutableListOf>() - val dict = lnDictionary(text) + urlDictionary(text) + val dict = lnDictionary(text) + urlDictionary(text) + tagDictionary(text) for (paragraph in encodeDictionary(text, dict).split("\n")) { tasks.add(translator.translate(paragraph)) @@ -94,6 +95,21 @@ object LanguageTranslatorService { return newText } + private fun tagDictionary(text: String): Map { + val matcher = tagRegex.matcher(text) + val returningList = mutableMapOf() + val counter = 0 + while (matcher.find()) { + try { + val tag = matcher.group() + val short = "Amethysttagindexer$counter" + returningList.put(short, tag) + } catch (e: Exception) { + } + } + return returningList + } + private fun lnDictionary(text: String): Map { val matcher = lnRegex.matcher(text) val returningList = mutableMapOf()