Build AsminVoicechat / prepare-release (push) Successful in 14s
Build AsminVoicechat / build-and-test (17) (push) Canceled after 0s
Build AsminVoicechat / build-and-test (18) (push) Canceled after 0s
Build AsminVoicechat / build-and-test (19) (push) Canceled after 0s
Build AsminVoicechat / build-and-test (20) (push) Canceled after 0s
Build AsminVoicechat / build-and-test (21) (push) Canceled after 0s
Build AsminVoicechat / build-and-test (22) (push) Canceled after 0s
Build AsminVoicechat / build-and-test (23) (push) Canceled after 0s
Build AsminVoicechat / build-and-test (24) (push) Canceled after 0s
Build AsminVoicechat / build-and-test (25) (push) Canceled after 0s
Build AsminVoicechat / build-and-test (26) (push) Canceled after 0s
Build AsminVoicechat / build-and-test (27-ea) (push) Canceled after 0s
Build AsminVoicechat / build-and-test (16) (push) Canceled after 38s
56 lines
2.1 KiB
Java
56 lines
2.1 KiB
Java
/*
|
|
* Decompiled with CFR 0.152.
|
|
*
|
|
* Could not load the following classes:
|
|
* javax.annotation.Nullable
|
|
*/
|
|
package de.maxhenkel.voicechat.configbuilder.custom.serializer;
|
|
|
|
import de.maxhenkel.voicechat.configbuilder.custom.StringMap;
|
|
import de.maxhenkel.voicechat.configbuilder.entry.serializer.ValueSerializer;
|
|
import java.util.ArrayList;
|
|
import java.util.LinkedHashMap;
|
|
import java.util.Map;
|
|
import java.util.regex.Matcher;
|
|
import java.util.regex.Pattern;
|
|
import javax.annotation.Nullable;
|
|
|
|
public class StringMapValueSerializer
|
|
implements ValueSerializer<StringMap> {
|
|
public static final StringMapValueSerializer INSTANCE = new StringMapValueSerializer();
|
|
public static final Pattern QUOTE_ESCAPE_PATTERN = Pattern.compile("\"((?:(?![\"\\\\]).|\\\\.)*)\"\\s*=\\s*\"((?:(?![\"\\\\]).|\\\\.)*)\"");
|
|
|
|
@Override
|
|
@Nullable
|
|
public StringMap deserialize(String str) {
|
|
boolean matches = QUOTE_ESCAPE_PATTERN.splitAsStream(str).allMatch(s -> s.trim().isEmpty() || s.trim().equals(","));
|
|
if (!matches) {
|
|
return null;
|
|
}
|
|
LinkedHashMap<String, String> map = new LinkedHashMap<String, String>();
|
|
Matcher matcher = QUOTE_ESCAPE_PATTERN.matcher(str);
|
|
while (matcher.find()) {
|
|
map.put(StringMapValueSerializer.unescape(matcher.group(1)), StringMapValueSerializer.unescape(matcher.group(2)));
|
|
}
|
|
return StringMap.of(map);
|
|
}
|
|
|
|
@Override
|
|
public String serialize(StringMap val) {
|
|
ArrayList<String> resultList = new ArrayList<String>(val.size());
|
|
for (Map.Entry entry : val.entrySet()) {
|
|
resultList.add("\"" + StringMapValueSerializer.escape((String)entry.getKey()) + "\"=\"" + StringMapValueSerializer.escape((String)entry.getValue()) + "\"");
|
|
}
|
|
return String.join((CharSequence)",", resultList);
|
|
}
|
|
|
|
private static String escape(String input) {
|
|
return input.replace("\\", "\\\\").replace("\"", "\\\"");
|
|
}
|
|
|
|
private static String unescape(String input) {
|
|
return input.replace("\\\"", "\"").replace("\\\\", "\\");
|
|
}
|
|
}
|
|
|