diff options
| author | Benjamin J. Culkin <bjculkin@mix.wvu.edu> | 2018-09-19 13:21:50 -0300 |
|---|---|---|
| committer | Benjamin J. Culkin <bjculkin@mix.wvu.edu> | 2018-09-19 13:21:50 -0300 |
| commit | 9265485a61dda5dc99913feab28e4743c812114c (patch) | |
| tree | f1a44f0baecc0e624f48c8f341b5af49774d4753 /base/src/main/java/bjc/utils/ioutils | |
| parent | 26966125129d458e988f754ee4b0d88b362e55ec (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/utils/ioutils')
| -rw-r--r-- | base/src/main/java/bjc/utils/ioutils/MirrorDB.java | 52 |
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); + } +} |
