From 94667ac741fe05a6259fadabb042aa9e04ee264c Mon Sep 17 00:00:00 2001 From: Erik Kiznov <46452865+k1zn@users.noreply.github.com> Date: Sun, 31 Jul 2022 19:33:23 +0500 Subject: [PATCH] Add @ support --- .../ru/vtosters/lite/hooks/MessagesHook.java | 53 +++++++++++-------- 1 file changed, 30 insertions(+), 23 deletions(-) diff --git a/app/src/main/java/ru/vtosters/lite/hooks/MessagesHook.java b/app/src/main/java/ru/vtosters/lite/hooks/MessagesHook.java index 69a1206bf..7fe2456d1 100644 --- a/app/src/main/java/ru/vtosters/lite/hooks/MessagesHook.java +++ b/app/src/main/java/ru/vtosters/lite/hooks/MessagesHook.java @@ -22,42 +22,49 @@ public class MessagesHook { public static String injectOwnText(String oldText) { if (!autotranslate() || TextUtils.isEmpty(oldText)) return oldText; - var matcher = Pattern.compile("(\\[(?:club|id|public)\\d+\\|[^]]+\\])").matcher(oldText); + var matcher = Pattern.compile("(\\[(?:club|id|public)\\d+\\|[^]]+\\])|(@[^\\s]+)").matcher(oldText); var instance = BaseTranslator.getInstance(); - return replaceMentions(matcher, instance); + return replaceMentions(oldText, matcher, instance); } public static String injectOwnTextAll(String oldText) { if (!autoalltranslate() || TextUtils.isEmpty(oldText)) { return oldText; } - var matcher = Pattern.compile("(\\[(?:club|id|public)\\d+\\|[^]]+\\])").matcher(oldText); + var matcher = Pattern.compile("(\\[(?:club|id|public)\\d+\\|[^]]+\\])|(@[^\\s]+)").matcher(oldText); var instance = BaseTranslator.getInstance(); - return replaceMentions(matcher, instance); + return replaceMentions(oldText, matcher, instance); } - - public static String replaceMentions(Matcher matcher, BaseTranslator instance) { - var mentionsCount = 0; - var textBuff = new StringBuffer(); - var mentions = new ArrayList(); - while (matcher.find()) { - mentions.add(matcher.group(1)); - matcher.appendReplacement(textBuff, "%vtl_mention" + mentionsCount + "%"); ++mentionsCount; + public static String replaceMentions(String oldText, Matcher matcher, BaseTranslator instance) { + try { + var mentionsCount = 0; + + var textBuff = new StringBuffer(); + var mentions = new ArrayList(); + while (matcher.find()) { + mentions.add(matcher.group()); + matcher.appendReplacement(textBuff, "%vtl_mention" + mentionsCount + "%"); ++mentionsCount; + } + matcher.appendTail(textBuff); + + var translatedText = instance.getTranslation(textBuff.toString()); + var matcherMentions = Pattern.compile("%vtl_mention(\\d+)%").matcher(translatedText); + var retTextBuff = new StringBuffer(); + while (matcherMentions.find()) { + matcherMentions.appendReplacement(retTextBuff, mentions.get( + Integer.parseInt(matcherMentions.group(1)) + )); + } + matcherMentions.appendTail(retTextBuff); + + return retTextBuff.toString(); + } catch(Exception e) { + e.printStackTrace(); + return oldText; } - matcher.appendTail(textBuff); - - var translatedText = instance.getTranslation(textBuff.toString()); - var matcherMentions = Pattern.compile("%vtl_mention(\\d+)%").matcher(translatedText); - var retTextBuff = new StringBuffer(); - while (matcherMentions.find()) { - matcherMentions.appendReplacement(retTextBuff, mentions.get(Integer.parseInt(matcherMentions.group(1)))); - } - matcherMentions.appendTail(retTextBuff); - - return retTextBuff.toString(); } public static void onLongClick(View view) {