summaryrefslogtreecommitdiff
path: root/base/src/main/java/bjc
diff options
context:
space:
mode:
authorBenjamin J. Culkin <bjculkin@mix.wvu.edu>2018-09-19 13:21:50 -0300
committerBenjamin J. Culkin <bjculkin@mix.wvu.edu>2018-09-19 13:21:50 -0300
commit9265485a61dda5dc99913feab28e4743c812114c (patch)
treef1a44f0baecc0e624f48c8f341b5af49774d4753 /base/src/main/java/bjc
parent26966125129d458e988f754ee4b0d88b362e55ec (diff)
Add MirrorDB
This adds a simple map that uses the unicode bidirectional database to say whether or not a given character has a mirrored counterpart (e.g, ( and ), < and >, as well as « and »)
Diffstat (limited to 'base/src/main/java/bjc')
-rw-r--r--base/src/main/java/bjc/utils/ioutils/MirrorDB.java52
1 files changed, 52 insertions, 0 deletions
diff --git a/base/src/main/java/bjc/utils/ioutils/MirrorDB.java b/base/src/main/java/bjc/utils/ioutils/MirrorDB.java
new file mode 100644
index 0000000..230f2f0
--- /dev/null
+++ b/base/src/main/java/bjc/utils/ioutils/MirrorDB.java
@@ -0,0 +1,52 @@
+package bjc.utils.ioutils;
+
+import java.io.InputStream;
+import java.io.IOException;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Scanner;
+
+public class MirrorDB {
+ private Map<String, String> mirrored;
+
+ public MirrorDB() {
+ mirrored = new HashMap<>();
+
+ final InputStream stream = getClass().getResourceAsStream("/BidiMirrorDB.txt");
+
+ try (Scanner scn = new Scanner(stream)) {
+ String ln = "";
+
+ while (scn.hasNextLine()) {
+ ln = scn.nextLine();
+
+ if (ln.equals("")) {
+ continue;
+ }
+ if (ln.startsWith("#")) {
+ continue;
+ }
+
+ final int cp1 = Integer.parseInt(ln.substring(0, 4), 16);
+ final int cp2 = Integer.parseInt(ln.substring(6, 10), 16);
+
+ final char[] cpa1 = Character.toChars(cp1);
+ final char[] cpa2 = Character.toChars(cp2);
+
+ final String cps1 = new String(cpa1);
+ final String cps2 = new String(cpa2);
+
+ mirrored.put(cps1, cps2);
+ }
+ }
+ }
+
+ public boolean canMirror(String mir) {
+ return mirrored.containsKey(mir);
+ }
+
+ public String mirror(String mir) {
+ return mirrored.get(mir);
+ }
+}