23 package com.realtime.crossfire.jxclient.util;
25 import java.util.regex.Matcher;
26 import java.util.regex.Pattern;
27 import org.jetbrains.annotations.NotNull;
35 @SuppressWarnings(
"HtmlTagCanBeJavadocTag")
43 private static final Pattern @NotNull [] PATTERNS_ENCODE = {
44 Pattern.compile(
"\\\\"),
45 Pattern.compile(
"\r"),
46 Pattern.compile(
"\n"),
53 private static final String @NotNull [] REPLACEMENTS_ENCODE = {
54 Matcher.quoteReplacement(
"\\\\"),
55 Matcher.quoteReplacement(
"\\r"),
56 Matcher.quoteReplacement(
"\\n"),
64 private static final Pattern @NotNull [] PATTERNS_DECODE = {
65 Pattern.compile(
"\\\\n"),
66 Pattern.compile(
"\\\\r"),
67 Pattern.compile(
"\\\\\\\\"),
74 private static final String @NotNull [] REPLACEMENTS_DECODE = {
75 Matcher.quoteReplacement(
"\n"),
76 Matcher.quoteReplacement(
"\r"),
77 Matcher.quoteReplacement(
"\\"),
93 public static String
encode(@NotNull
final String str) {
94 assert PATTERNS_ENCODE.length == REPLACEMENTS_ENCODE.length;
96 for (
int i = 0; i < PATTERNS_ENCODE.length; i++) {
97 tmp = PATTERNS_ENCODE[i].matcher(tmp).replaceAll(REPLACEMENTS_ENCODE[i]);
109 public static String
decode(@NotNull
final String str) {
110 assert PATTERNS_DECODE.length == REPLACEMENTS_DECODE.length;
112 for (
int i = 0; i < PATTERNS_DECODE.length; i++) {
113 tmp = PATTERNS_DECODE[i].matcher(tmp).replaceAll(REPLACEMENTS_DECODE[i]);