private String fixKey(String k) { return set.replaceNonMembers(k, '_'); }
private String fixValue(String k, String v) { AsciiSet s = overrides.getOrDefault(k, set); return s.replaceNonMembers(v, '_'); }
private Map<String, String> toMap(Id id) { Map<String, String> tags = new HashMap<>(); for (Tag t : id.tags()) { String k = charset.replaceNonMembers(t.key(), '_'); String v = overrides.getOrDefault(k, charset).replaceNonMembers(t.value(), '_'); tags.put(k, v); } String name = overrides.getOrDefault("name", charset).replaceNonMembers(id.name(), '_'); tags.put("name", name); return tags; }
private String toValidCharset(String str) { return set.replaceNonMembers(str, '_'); }
@Test public void replaceMultiCharUnicode() { // http://www.fileformat.info/info/unicode/char/1f701/index.htm AsciiSet s = AsciiSet.fromPattern("_"); String str = new String(Character.toChars(0x1F701)); Assertions.assertEquals(2, str.length()); Assertions.assertEquals("__", s.replaceNonMembers(str, '_')); }
@Test public void replaceAllOk() { AsciiSet s = AsciiSet.fromPattern("*0-2A-C"); Assertions.assertEquals("012ABC", s.replaceNonMembers("012ABC", '*')); }
@Test public void replace() { AsciiSet s = AsciiSet.fromPattern("*0-2A-C"); Assertions.assertEquals("012*ABC*", s.replaceNonMembers("0123ABCD", '*')); }
@Test public void replaceBoundaries() { AsciiSet s = AsciiSet.fromPattern("_"); String str = "\u0000\u0080\uFFFF"; Assertions.assertEquals(3, str.length()); Assertions.assertEquals("___", s.replaceNonMembers(str, '_')); }
@Test public void badReplacement() { Assertions.assertThrows(IllegalArgumentException.class, () -> { AsciiSet s = AsciiSet.fromPattern("0-2A-C"); s.replaceNonMembers("012ABC", '*'); }); }