Add --null option for parse command

This commit is contained in:
Andre601
2022-02-05 13:57:05 +01:00
parent 666ab468a1
commit 50d4e14333
12 changed files with 45 additions and 68 deletions

View File

@@ -20,6 +20,7 @@
package me.clip.placeholderapi.replacer;
import java.util.Locale;
import java.util.function.Function;
import me.clip.placeholderapi.expansion.PlaceholderExpansion;
import org.bukkit.ChatColor;
@@ -49,49 +50,6 @@ public final class CharsReplacer implements Replacer {
for (int i = 0; i < chars.length; i++) {
final char l = chars[i];
if (l == '&' && ++i < chars.length) {
final char c = Character.toLowerCase(chars[i]);
if (c != '0' && c != '1' && c != '2' && c != '3' && c != '4' && c != '5' && c != '6'
&& c != '7' && c != '8' && c != '9' && c != 'a' && c != 'b' && c != 'c' && c != 'd'
&& c != 'e' && c != 'f' && c != 'k' && c != 'l' && c != 'm' && c != 'n' && c != 'o' && c != 'r'
&& c != 'x') {
builder.append(l).append(chars[i]);
} else {
builder.append(ChatColor.COLOR_CHAR);
if (c != 'x') {
builder.append(chars[i]);
continue;
}
if ((i > 1 && chars[i - 2] == '\\') /*allow escaping &x*/) {
builder.setLength(builder.length() - 2);
builder.append('&').append(chars[i]);
continue;
}
builder.append(c);
int j = 0;
while (++j <= 6) {
if (i + j >= chars.length) {
break;
}
final char x = chars[i + j];
builder.append(ChatColor.COLOR_CHAR).append(x);
}
if (j == 7) {
i += 6;
} else {
builder.setLength(builder.length() - (j * 2)); // undo &x parsing
}
}
continue;
}
if (l != closure.head || i + 1 >= chars.length) {
builder.append(l);
@@ -99,7 +57,7 @@ public final class CharsReplacer implements Replacer {
}
boolean identified = false;
boolean oopsitsbad = true;
boolean invalid = true;
boolean hadSpace = false;
while (++i < chars.length) {
@@ -110,7 +68,7 @@ public final class CharsReplacer implements Replacer {
break;
}
if (p == closure.tail) {
oopsitsbad = false;
invalid = false;
break;
}
@@ -127,13 +85,13 @@ public final class CharsReplacer implements Replacer {
}
final String identifierString = identifier.toString();
final String lowercaseIdentifierString = identifierString.toLowerCase();
final String lowercaseIdentifierString = identifierString.toLowerCase(Locale.ROOT);
final String parametersString = parameters.toString();
identifier.setLength(0);
parameters.setLength(0);
if (oopsitsbad) {
if (invalid) {
builder.append(closure.head).append(identifierString);
if (identified) {