Files
AsminVoicechat/source/decompiled/de/maxhenkel/voicechat/configbuilder/custom/serializer/StringMapValueSerializer.java
T
asminme bbccd4a815
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
first commit
2026-10-24 15:18:03 +02:00

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("\\\\", "\\");
}
}