aboutsummaryrefslogtreecommitdiffstats
path: root/src/eu/siacs/conversations/utils
diff options
context:
space:
mode:
authorM. Dietrich <mdt@emdete.de>2014-09-03 17:29:13 +0200
committerM. Dietrich <mdt@emdete.de>2014-09-03 17:29:13 +0200
commit0a686bc71c1f3888185f292602ff067c50374253 (patch)
tree667cb9759f133785e8dcbd48df16832234129225 /src/eu/siacs/conversations/utils
parent584984807e3f9e05c7f556d1181a3301db6a8b60 (diff)
use class, use codepoint
Diffstat (limited to 'src/eu/siacs/conversations/utils')
-rw-r--r--src/eu/siacs/conversations/utils/UIHelper.java51
1 files changed, 26 insertions, 25 deletions
diff --git a/src/eu/siacs/conversations/utils/UIHelper.java b/src/eu/siacs/conversations/utils/UIHelper.java
index 1c1bb893..f717c5da 100644
--- a/src/eu/siacs/conversations/utils/UIHelper.java
+++ b/src/eu/siacs/conversations/utils/UIHelper.java
@@ -546,35 +546,36 @@ public class UIHelper {
}
}
- private static final Pattern armorRegex(String regex) {
- return Pattern.compile("(^|\\s+)" + regex + "(\\s+|$)"); }
-
- private static final String armorReplacement(String replacement) {
- return "$1" + replacement + "$2"; }
-
- private static final Object[][] patterns = new Object[][]{
- {armorRegex(":-?\\)"), armorReplacement("😃"), },
- {armorRegex(";-?\\)"), armorReplacement("😉"), },
- {armorRegex(":-?D"), armorReplacement("😀"), },
- {armorRegex(":-?[Ppb]"), armorReplacement("😋"), },
- {armorRegex("8-?\\)"), armorReplacement("😎"), },
- {armorRegex(":-?\\|"), armorReplacement("😐"), },
- {armorRegex(":-?[/\\\\]"), armorReplacement("😕"), },
- {armorRegex(":-?\\*"), armorReplacement("😗"), },
- {armorRegex(":-?[0Oo]"), armorReplacement("😮"), },
- {armorRegex(":-?\\("), armorReplacement("😞"), },
- {armorRegex("\\^\\^"), armorReplacement("😁"), },
+ private final static class EmoticonPattern {
+ Pattern pattern;
+ String replacement;
+ EmoticonPattern(String ascii, int unicode) {
+ this.pattern = Pattern.compile("(?<=(^|\\s))" + ascii + "(?=(\\s|$))");
+ this.replacement = new String(new int[]{unicode, }, 0, 1);
+ }
+ String replaceAll(String body) {
+ return pattern.matcher(body).replaceAll(replacement);
+ }
+ }
+
+ private static final EmoticonPattern[] patterns = new EmoticonPattern[] {
+ new EmoticonPattern(":-?\\)", 0x1f603),
+ new EmoticonPattern(";-?\\)", 0x1f609),
+ new EmoticonPattern(":-?D", 0x1f600),
+ new EmoticonPattern(":-?[Ppb]", 0x1f60b),
+ new EmoticonPattern("8-?\\)", 0x1f60e),
+ new EmoticonPattern(":-?\\|", 0x1f610),
+ new EmoticonPattern(":-?[/\\\\]", 0x1f615),
+ new EmoticonPattern(":-?\\*", 0x1f617),
+ new EmoticonPattern(":-?[0Oo]", 0x1f62e),
+ new EmoticonPattern(":-?\\(", 0x1f61e),
+ new EmoticonPattern("\\^\\^", 0x1f601),
};
public static String transformAsciiEmoticons(String body) {
if (body != null) {
- // see https://developer.android.com/reference/java/util/regex/Pattern.html
- // see http://userguide.icu-project.org/strings/regexp
- // see https://de.wikipedia.org/wiki/Unicodeblock_Smileys
- for (Object[] r: patterns) {
- Pattern pattern = (Pattern)r[0];
- String replacement = (String)r[1];
- body = pattern.matcher(body).replaceAll(replacement);
+ for (EmoticonPattern p: patterns) {
+ body = p.replaceAll(body);
}
body = body.trim();
}