diff options
Diffstat (limited to 'dicore3/core/src/main/java/io/dico/dicore')
-rw-r--r-- | dicore3/core/src/main/java/io/dico/dicore/Formatting.java | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/dicore3/core/src/main/java/io/dico/dicore/Formatting.java b/dicore3/core/src/main/java/io/dico/dicore/Formatting.java index 869ec4c..eac6ac5 100644 --- a/dicore3/core/src/main/java/io/dico/dicore/Formatting.java +++ b/dicore3/core/src/main/java/io/dico/dicore/Formatting.java @@ -9,12 +9,10 @@ package io.dico.dicore; -import gnu.trove.map.TCharObjectMap; -import gnu.trove.map.hash.TCharObjectHashMap; - public final class Formatting implements CharSequence { public static final char FORMAT_CHAR = '\u00a7'; - private static final TCharObjectMap<Formatting> singleCharInstances = new TCharObjectHashMap<>(16, .5F, '\0'); + private static final String CACHED_CHARS = "0123456789abcdefklmnor"; + private static final Formatting[] singleCharInstances = new Formatting[CACHED_CHARS.length()]; public static final Formatting BLACK = from('0'), @@ -100,9 +98,12 @@ public final class Formatting implements CharSequence { public static Formatting from(char c) { if (isRecognizedChar(c)) { c = Character.toLowerCase(c); - Formatting res = singleCharInstances.get(c); + int index = CACHED_CHARS.indexOf(c); + if (index == -1) return EMPTY; + + Formatting res = singleCharInstances[index]; if (res == null) { - singleCharInstances.put(c, res = new Formatting(c)); + singleCharInstances[index] = res = new Formatting(c); } return res; } @@ -229,13 +230,13 @@ public final class Formatting implements CharSequence { previous = c; } } - + private static boolean isRecognizedChar(char c) { return isColourChar(c) || isFormatChar(c) || isResetChar(c); } private static boolean isColourChar(char c) { - return "0123456789abcdefABCDEF".indexOf(c) > -1; + return "0123456789abcdefABCDEF".indexOf(c) >= 0; } private static boolean isResetChar(char c) { @@ -243,7 +244,7 @@ public final class Formatting implements CharSequence { } private static boolean isFormatChar(char c) { - return "lmnokLMNOK".indexOf(c) > -1; + return "klmnoKLMNO".indexOf(c) >= 0; } private final String format; |