| 1 | |
|
| 2 | |
|
| 3 | |
|
| 4 | |
|
| 5 | |
|
| 6 | |
|
| 7 | |
|
| 8 | |
|
| 9 | |
|
| 10 | |
|
| 11 | |
|
| 12 | |
|
| 13 | |
|
| 14 | |
|
| 15 | |
|
| 16 | |
|
| 17 | |
|
| 18 | |
|
| 19 | |
package net.sourceforge.jeuclid.elements.support.text; |
| 20 | |
|
| 21 | |
import java.util.HashMap; |
| 22 | |
import java.util.Map; |
| 23 | |
|
| 24 | |
|
| 25 | |
|
| 26 | |
|
| 27 | |
|
| 28 | |
|
| 29 | |
public final class CharConverter { |
| 30 | |
|
| 31 | |
|
| 32 | |
|
| 33 | |
|
| 34 | 209 | private static final Map<Character, String> LATE_MAP_MAP = new HashMap<Character, String>(); |
| 35 | |
|
| 36 | |
|
| 37 | |
|
| 38 | |
|
| 39 | 209 | private static final Map<Character, String> EARLY_MAP_MAP = new HashMap<Character, String>( |
| 40 | |
200); |
| 41 | |
|
| 42 | 0 | private CharConverter() { |
| 43 | |
|
| 44 | 0 | } |
| 45 | |
|
| 46 | |
|
| 47 | |
|
| 48 | |
|
| 49 | |
|
| 50 | |
|
| 51 | |
private static String actualConvert(final String string, |
| 52 | |
final Map<Character, String> map) { |
| 53 | 22165417 | final StringBuffer buffer = new StringBuffer(); |
| 54 | 42753880 | for (int i = 0; i < string.length(); i++) { |
| 55 | 20588463 | final char orig = string.charAt(i); |
| 56 | 20588463 | final String mapsTo = map.get(orig); |
| 57 | 20588463 | if (mapsTo == null) { |
| 58 | 20587000 | buffer.append(orig); |
| 59 | |
} else { |
| 60 | 1463 | buffer.append(mapsTo); |
| 61 | |
} |
| 62 | |
} |
| 63 | 22165417 | return buffer.toString(); |
| 64 | |
} |
| 65 | |
|
| 66 | |
|
| 67 | |
|
| 68 | |
|
| 69 | |
|
| 70 | |
|
| 71 | |
public static String convertEarly(final String string) { |
| 72 | 22114831 | return CharConverter.actualConvert(string, |
| 73 | |
CharConverter.EARLY_MAP_MAP); |
| 74 | |
} |
| 75 | |
|
| 76 | |
|
| 77 | |
|
| 78 | |
|
| 79 | |
|
| 80 | |
|
| 81 | |
public static String convertLate(final String string) { |
| 82 | 50586 | return CharConverter |
| 83 | |
.actualConvert(string, CharConverter.LATE_MAP_MAP); |
| 84 | |
} |
| 85 | |
|
| 86 | |
|
| 87 | |
|
| 88 | |
static { |
| 89 | 209 | CharConverter.LATE_MAP_MAP.put('\u2061', ""); |
| 90 | 209 | CharConverter.LATE_MAP_MAP.put('\u200b', ""); |
| 91 | 209 | CharConverter.LATE_MAP_MAP.put('\u2062', ""); |
| 92 | 209 | CharConverter.LATE_MAP_MAP.put('\u2148', ""); |
| 93 | |
|
| 94 | |
|
| 95 | |
|
| 96 | |
|
| 97 | |
|
| 98 | |
|
| 99 | |
|
| 100 | |
|
| 101 | |
|
| 102 | |
|
| 103 | |
|
| 104 | |
|
| 105 | |
|
| 106 | |
|
| 107 | 209 | CharConverter.LATE_MAP_MAP.put('\u0332', "\u00AF"); |
| 108 | |
|
| 109 | |
|
| 110 | |
|
| 111 | |
|
| 112 | |
|
| 113 | |
|
| 114 | |
|
| 115 | |
|
| 116 | 209 | CharConverter.EARLY_MAP_MAP.put('\uE080', "\u2031"); |
| 117 | 209 | CharConverter.EARLY_MAP_MAP.put('\uE081', "\uF613"); |
| 118 | 209 | CharConverter.EARLY_MAP_MAP.put('\uE083', "\u002B"); |
| 119 | 209 | CharConverter.EARLY_MAP_MAP.put('\uE084', "\u003C"); |
| 120 | 209 | CharConverter.EARLY_MAP_MAP.put('\uE085', "\u003E"); |
| 121 | 209 | CharConverter.EARLY_MAP_MAP.put('\uE086', "\ue425"); |
| 122 | 209 | CharConverter.EARLY_MAP_MAP.put('\uE087', "\ue421"); |
| 123 | 209 | CharConverter.EARLY_MAP_MAP.put('\uE089', "\u2208"); |
| 124 | 209 | CharConverter.EARLY_MAP_MAP.put('\uE08A', "\u0192"); |
| 125 | 209 | CharConverter.EARLY_MAP_MAP.put('\uE08B', "\u2026"); |
| 126 | 209 | CharConverter.EARLY_MAP_MAP.put('\uE08C', "\u2192"); |
| 127 | 209 | CharConverter.EARLY_MAP_MAP.put('\uE091', "\u0302"); |
| 128 | 209 | CharConverter.EARLY_MAP_MAP.put('\uE092', "\u030C"); |
| 129 | 209 | CharConverter.EARLY_MAP_MAP.put('\uE093', "\u0306"); |
| 130 | 209 | CharConverter.EARLY_MAP_MAP.put('\uE094', "\u0301"); |
| 131 | 209 | CharConverter.EARLY_MAP_MAP.put('\uE095', "\u0300"); |
| 132 | 209 | CharConverter.EARLY_MAP_MAP.put('\uE096', "\u0303"); |
| 133 | 209 | CharConverter.EARLY_MAP_MAP.put('\uE097', "\u0304"); |
| 134 | |
|
| 135 | 209 | CharConverter.EARLY_MAP_MAP.put('\uE098', "\u2192"); |
| 136 | 209 | CharConverter.EARLY_MAP_MAP.put('\uE099', "\u02d9"); |
| 137 | 209 | CharConverter.EARLY_MAP_MAP.put('\uE09A', "\u0308"); |
| 138 | 209 | CharConverter.EARLY_MAP_MAP.put('\uE09B', "\u20DB"); |
| 139 | 209 | CharConverter.EARLY_MAP_MAP.put('\uE09C', "\u030A"); |
| 140 | 209 | CharConverter.EARLY_MAP_MAP.put('\uE09E', "\u0028"); |
| 141 | 209 | CharConverter.EARLY_MAP_MAP.put('\uE09F', "\u0029"); |
| 142 | 209 | CharConverter.EARLY_MAP_MAP.put('\uE0A2', "\u301A"); |
| 143 | 209 | CharConverter.EARLY_MAP_MAP.put('\uE0A3', "\u301B"); |
| 144 | 209 | CharConverter.EARLY_MAP_MAP.put('\uE0A4', "\u2373"); |
| 145 | 209 | CharConverter.EARLY_MAP_MAP.put('\uE0A8', "\u002F"); |
| 146 | 209 | CharConverter.EARLY_MAP_MAP.put('\uE0A9', "\\"); |
| 147 | 209 | CharConverter.EARLY_MAP_MAP.put('\uE0AA', "\u274F"); |
| 148 | 209 | CharConverter.EARLY_MAP_MAP.put('\uE0AC', "\u0393"); |
| 149 | 209 | CharConverter.EARLY_MAP_MAP.put('\uE0AD', "\u0394"); |
| 150 | 209 | CharConverter.EARLY_MAP_MAP.put('\uE0AE', "\u0398"); |
| 151 | 209 | CharConverter.EARLY_MAP_MAP.put('\uE0AF', "\u039b"); |
| 152 | 209 | CharConverter.EARLY_MAP_MAP.put('\uE0B0', "\u039e"); |
| 153 | 209 | CharConverter.EARLY_MAP_MAP.put('\uE0B1', "\u03A0"); |
| 154 | 209 | CharConverter.EARLY_MAP_MAP.put('\uE0B2', "\u03a3"); |
| 155 | 209 | CharConverter.EARLY_MAP_MAP.put('\uE0B3', "\u03a5"); |
| 156 | 209 | CharConverter.EARLY_MAP_MAP.put('\uE0B4', "\u03a6"); |
| 157 | 209 | CharConverter.EARLY_MAP_MAP.put('\uE0B5', "\u03a8"); |
| 158 | 209 | CharConverter.EARLY_MAP_MAP.put('\uE0B6', "\u03a9"); |
| 159 | 209 | CharConverter.EARLY_MAP_MAP.put('\uE0B7', "\u03b1"); |
| 160 | 209 | CharConverter.EARLY_MAP_MAP.put('\uE0B8', "\u03b2"); |
| 161 | 209 | CharConverter.EARLY_MAP_MAP.put('\uE0B9', "\u03b3"); |
| 162 | 209 | CharConverter.EARLY_MAP_MAP.put('\uE0BA', "\u03b4"); |
| 163 | 209 | CharConverter.EARLY_MAP_MAP.put('\uE0BB', "\u03b5"); |
| 164 | 209 | CharConverter.EARLY_MAP_MAP.put('\uE0BC', "\u03b6"); |
| 165 | 209 | CharConverter.EARLY_MAP_MAP.put('\uE0BD', "\u03b7"); |
| 166 | 209 | CharConverter.EARLY_MAP_MAP.put('\uE0BE', "\u03b8"); |
| 167 | 209 | CharConverter.EARLY_MAP_MAP.put('\uE0BF', "\u03b9"); |
| 168 | 209 | CharConverter.EARLY_MAP_MAP.put('\uE0C0', "\u03ba"); |
| 169 | 209 | CharConverter.EARLY_MAP_MAP.put('\uE0C1', "\u03bb"); |
| 170 | 209 | CharConverter.EARLY_MAP_MAP.put('\uE0C2', "\u03bc"); |
| 171 | 209 | CharConverter.EARLY_MAP_MAP.put('\uE0C3', "\u03bd"); |
| 172 | 209 | CharConverter.EARLY_MAP_MAP.put('\uE0C4', "\u03be"); |
| 173 | 209 | CharConverter.EARLY_MAP_MAP.put('\uE0C5', "\u03bf"); |
| 174 | 209 | CharConverter.EARLY_MAP_MAP.put('\uE0C6', "\u03c0"); |
| 175 | 209 | CharConverter.EARLY_MAP_MAP.put('\uE0C7', "\u03c1"); |
| 176 | 209 | CharConverter.EARLY_MAP_MAP.put('\uE0C8', "\u03c3"); |
| 177 | 209 | CharConverter.EARLY_MAP_MAP.put('\uE0C9', "\u03c4"); |
| 178 | 209 | CharConverter.EARLY_MAP_MAP.put('\uE0CA', "\u03c5"); |
| 179 | 209 | CharConverter.EARLY_MAP_MAP.put('\uE0CB', "\u03c6"); |
| 180 | 209 | CharConverter.EARLY_MAP_MAP.put('\uE0CC', "\u03c7"); |
| 181 | 209 | CharConverter.EARLY_MAP_MAP.put('\uE0CD', "\u03c8"); |
| 182 | 209 | CharConverter.EARLY_MAP_MAP.put('\uE0CE', "\u03c9"); |
| 183 | 209 | CharConverter.EARLY_MAP_MAP.put('\uE0CF', "\u03b5"); |
| 184 | 209 | CharConverter.EARLY_MAP_MAP.put('\uE0D0', "\u03d1"); |
| 185 | 209 | CharConverter.EARLY_MAP_MAP.put('\uE0D1', "\u03d6"); |
| 186 | 209 | CharConverter.EARLY_MAP_MAP.put('\uE0D2', "\u03f1"); |
| 187 | 209 | CharConverter.EARLY_MAP_MAP.put('\uE0D3', "\u03db"); |
| 188 | 209 | CharConverter.EARLY_MAP_MAP.put('\uE0D4', "\u2118"); |
| 189 | 209 | CharConverter.EARLY_MAP_MAP.put('\uE0D5', "\u2202"); |
| 190 | 209 | CharConverter.EARLY_MAP_MAP.put('\uE0D6', "\u2129"); |
| 191 | 209 | CharConverter.EARLY_MAP_MAP.put('\uE0D7', "\u2107"); |
| 192 | 209 | CharConverter.EARLY_MAP_MAP.put('\uE0D8', "\u2127"); |
| 193 | 209 | CharConverter.EARLY_MAP_MAP.put('\uE0D9', "\u22A4"); |
| 194 | 209 | CharConverter.EARLY_MAP_MAP.put('\uE0DA', "\u019B"); |
| 195 | 209 | CharConverter.EARLY_MAP_MAP.put('\uE0DB', "\u2190"); |
| 196 | 209 | CharConverter.EARLY_MAP_MAP.put('\uE0DC', "\u2191"); |
| 197 | 209 | CharConverter.EARLY_MAP_MAP.put('\uE0DD', "\u2193"); |
| 198 | |
|
| 199 | |
|
| 200 | |
|
| 201 | |
|
| 202 | |
|
| 203 | 209 | CharConverter.EARLY_MAP_MAP.put('\uEF35', new String( |
| 204 | |
new int[] { 0x1D49C }, 0, 1)); |
| 205 | 209 | CharConverter.EARLY_MAP_MAP.put('\uEF36', new String( |
| 206 | |
new int[] { 0x1D49E }, 0, 1)); |
| 207 | 209 | CharConverter.EARLY_MAP_MAP.put('\uEF37', new String( |
| 208 | |
new int[] { 0x1D49F }, 0, 1)); |
| 209 | 209 | CharConverter.EARLY_MAP_MAP.put('\uEF38', new String( |
| 210 | |
new int[] { 0x1D4A2 }, 0, 1)); |
| 211 | 209 | CharConverter.EARLY_MAP_MAP.put('\uEF39', new String( |
| 212 | |
new int[] { 0x1D4A5 }, 0, 1)); |
| 213 | 209 | CharConverter.EARLY_MAP_MAP.put('\uEF3A', new String( |
| 214 | |
new int[] { 0x1D4A6 }, 0, 1)); |
| 215 | 209 | CharConverter.EARLY_MAP_MAP.put('\uEF3B', new String( |
| 216 | |
new int[] { 0x1D4A9 }, 0, 1)); |
| 217 | 209 | CharConverter.EARLY_MAP_MAP.put('\uEF3C', new String( |
| 218 | |
new int[] { 0x1D4AA }, 0, 1)); |
| 219 | 209 | CharConverter.EARLY_MAP_MAP.put('\uEF3D', new String( |
| 220 | |
new int[] { 0x1D4AB }, 0, 1)); |
| 221 | 209 | CharConverter.EARLY_MAP_MAP.put('\uEF3E', new String( |
| 222 | |
new int[] { 0x1D4AC }, 0, 1)); |
| 223 | 209 | CharConverter.EARLY_MAP_MAP.put('\uEF3F', new String( |
| 224 | |
new int[] { 0x1D4AE }, 0, 1)); |
| 225 | 209 | CharConverter.EARLY_MAP_MAP.put('\uEF40', new String( |
| 226 | |
new int[] { 0x1D4AF }, 0, 1)); |
| 227 | 209 | CharConverter.EARLY_MAP_MAP.put('\uEF41', new String( |
| 228 | |
new int[] { 0x1D4B0 }, 0, 1)); |
| 229 | 209 | CharConverter.EARLY_MAP_MAP.put('\uEF42', new String( |
| 230 | |
new int[] { 0x1D4B1 }, 0, 1)); |
| 231 | 209 | CharConverter.EARLY_MAP_MAP.put('\uEF43', new String( |
| 232 | |
new int[] { 0x1D4B2 }, 0, 1)); |
| 233 | 209 | CharConverter.EARLY_MAP_MAP.put('\uEF44', new String( |
| 234 | |
new int[] { 0x1D4B3 }, 0, 1)); |
| 235 | 209 | CharConverter.EARLY_MAP_MAP.put('\uEF45', new String( |
| 236 | |
new int[] { 0x1D4B4 }, 0, 1)); |
| 237 | 209 | CharConverter.EARLY_MAP_MAP.put('\uEF46', new String( |
| 238 | |
new int[] { 0x1D4B5 }, 0, 1)); |
| 239 | |
|
| 240 | |
|
| 241 | 209 | CharConverter.EARLY_MAP_MAP.put('\uEF5D', new String( |
| 242 | |
new int[] { 0x1D504 }, 0, 1)); |
| 243 | 209 | CharConverter.EARLY_MAP_MAP.put('\uEF5E', new String( |
| 244 | |
new int[] { 0x1D505 }, 0, 1)); |
| 245 | 209 | CharConverter.EARLY_MAP_MAP.put('\uEF5F', new String( |
| 246 | |
new int[] { 0x1D507 }, 0, 1)); |
| 247 | 209 | CharConverter.EARLY_MAP_MAP.put('\uEF60', new String( |
| 248 | |
new int[] { 0x1D508 }, 0, 1)); |
| 249 | 209 | CharConverter.EARLY_MAP_MAP.put('\uEF61', new String( |
| 250 | |
new int[] { 0x1D509 }, 0, 1)); |
| 251 | 209 | CharConverter.EARLY_MAP_MAP.put('\uEF62', new String( |
| 252 | |
new int[] { 0x1D50A }, 0, 1)); |
| 253 | 209 | CharConverter.EARLY_MAP_MAP.put('\uEF63', new String( |
| 254 | |
new int[] { 0x1D50D }, 0, 1)); |
| 255 | 209 | CharConverter.EARLY_MAP_MAP.put('\uEF64', new String( |
| 256 | |
new int[] { 0x1D50E }, 0, 1)); |
| 257 | 209 | CharConverter.EARLY_MAP_MAP.put('\uEF65', new String( |
| 258 | |
new int[] { 0x1D50F }, 0, 1)); |
| 259 | 209 | CharConverter.EARLY_MAP_MAP.put('\uEF66', new String( |
| 260 | |
new int[] { 0x1D510 }, 0, 1)); |
| 261 | 209 | CharConverter.EARLY_MAP_MAP.put('\uEF67', new String( |
| 262 | |
new int[] { 0x1D511 }, 0, 1)); |
| 263 | 209 | CharConverter.EARLY_MAP_MAP.put('\uEF68', new String( |
| 264 | |
new int[] { 0x1D512 }, 0, 1)); |
| 265 | 209 | CharConverter.EARLY_MAP_MAP.put('\uEF69', new String( |
| 266 | |
new int[] { 0x1D513 }, 0, 1)); |
| 267 | 209 | CharConverter.EARLY_MAP_MAP.put('\uEF6A', new String( |
| 268 | |
new int[] { 0x1D514 }, 0, 1)); |
| 269 | 209 | CharConverter.EARLY_MAP_MAP.put('\uEF6B', new String( |
| 270 | |
new int[] { 0x1D516 }, 0, 1)); |
| 271 | 209 | CharConverter.EARLY_MAP_MAP.put('\uEF6C', new String( |
| 272 | |
new int[] { 0x1D517 }, 0, 1)); |
| 273 | 209 | CharConverter.EARLY_MAP_MAP.put('\uEF6D', new String( |
| 274 | |
new int[] { 0x1D518 }, 0, 1)); |
| 275 | 209 | CharConverter.EARLY_MAP_MAP.put('\uEF6E', new String( |
| 276 | |
new int[] { 0x1D519 }, 0, 1)); |
| 277 | 209 | CharConverter.EARLY_MAP_MAP.put('\uEF6F', new String( |
| 278 | |
new int[] { 0x1D51A }, 0, 1)); |
| 279 | 209 | CharConverter.EARLY_MAP_MAP.put('\uEF70', new String( |
| 280 | |
new int[] { 0x1D51B }, 0, 1)); |
| 281 | 209 | CharConverter.EARLY_MAP_MAP.put('\uEF71', new String( |
| 282 | |
new int[] { 0x1D51C }, 0, 1)); |
| 283 | |
|
| 284 | |
|
| 285 | 209 | CharConverter.EARLY_MAP_MAP.put('\uEF8C', new String( |
| 286 | |
new int[] { 0x1D538 }, 0, 1)); |
| 287 | 209 | CharConverter.EARLY_MAP_MAP.put('\uEF8D', new String( |
| 288 | |
new int[] { 0x1D539 }, 0, 1)); |
| 289 | 209 | CharConverter.EARLY_MAP_MAP.put('\uEF8E', new String( |
| 290 | |
new int[] { 0x1D53B }, 0, 1)); |
| 291 | 209 | CharConverter.EARLY_MAP_MAP.put('\uEF8F', new String( |
| 292 | |
new int[] { 0x1D53C }, 0, 1)); |
| 293 | 209 | CharConverter.EARLY_MAP_MAP.put('\uEF90', new String( |
| 294 | |
new int[] { 0x1D53D }, 0, 1)); |
| 295 | 209 | CharConverter.EARLY_MAP_MAP.put('\uEF91', new String( |
| 296 | |
new int[] { 0x1D53E }, 0, 1)); |
| 297 | 209 | CharConverter.EARLY_MAP_MAP.put('\uEF92', new String( |
| 298 | |
new int[] { 0x1D540 }, 0, 1)); |
| 299 | 209 | CharConverter.EARLY_MAP_MAP.put('\uEF93', new String( |
| 300 | |
new int[] { 0x1D541 }, 0, 1)); |
| 301 | 209 | CharConverter.EARLY_MAP_MAP.put('\uEF94', new String( |
| 302 | |
new int[] { 0x1D542 }, 0, 1)); |
| 303 | 209 | CharConverter.EARLY_MAP_MAP.put('\uEF95', new String( |
| 304 | |
new int[] { 0x1D543 }, 0, 1)); |
| 305 | 209 | CharConverter.EARLY_MAP_MAP.put('\uEF96', new String( |
| 306 | |
new int[] { 0x1D544 }, 0, 1)); |
| 307 | 209 | CharConverter.EARLY_MAP_MAP.put('\uEF97', new String( |
| 308 | |
new int[] { 0x1D546 }, 0, 1)); |
| 309 | 209 | CharConverter.EARLY_MAP_MAP.put('\uEF98', new String( |
| 310 | |
new int[] { 0x1D54A }, 0, 1)); |
| 311 | 209 | CharConverter.EARLY_MAP_MAP.put('\uEF99', new String( |
| 312 | |
new int[] { 0x1D54B }, 0, 1)); |
| 313 | 209 | CharConverter.EARLY_MAP_MAP.put('\uEF9A', new String( |
| 314 | |
new int[] { 0x1D54C }, 0, 1)); |
| 315 | 209 | CharConverter.EARLY_MAP_MAP.put('\uEF9B', new String( |
| 316 | |
new int[] { 0x1D54D }, 0, 1)); |
| 317 | 209 | CharConverter.EARLY_MAP_MAP.put('\uEF9C', new String( |
| 318 | |
new int[] { 0x1D54E }, 0, 1)); |
| 319 | 209 | CharConverter.EARLY_MAP_MAP.put('\uEF9D', new String( |
| 320 | |
new int[] { 0x1D54F }, 0, 1)); |
| 321 | 209 | CharConverter.EARLY_MAP_MAP.put('\uEF9E', new String( |
| 322 | |
new int[] { 0x1D550 }, 0, 1)); |
| 323 | |
|
| 324 | 209 | } |
| 325 | |
} |