MatchType enum
Пакет: com.hypixel.hytale.common.util
Файл: com/hypixel/hytale/common/util/StringUtil.java
Поля (1)
| Модификаторы | Тип | Имя |
|---|---|---|
|
INDEX_DIFFERENCE,
EQUALS, |
CASE_INSENSITIVE |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.common.util;
class="kw">import it.unimi.dsi.fastutil.objects.Object2IntMap;
class="kw">import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap;
class="kw">import it.unimi.dsi.fastutil.objects.ObjectArrayList;
class="kw">import java.time.Duration;
class="kw">import java.util.Arrays;
class="kw">import java.util.Collection;
class="kw">import java.util.Comparator;
class="kw">import java.util.List;
class="kw">import java.util.Locale;
class="kw">import java.util.function.DoubleFunction;
class="kw">import java.util.function.Function;
class="kw">import java.util.function.IntToDoubleFunction;
class="kw">import java.util.function.IntToLongFunction;
class="kw">import java.util.regex.Pattern;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">public class StringUtil {
class="kw">private class="kw">static class="kw">final char[] HEX_CHARS = "0123456789ABCDEF".toCharArray();
class="kw">public class="kw">static class="kw">final Pattern RAW_ARGS_PATTERN = Pattern.compile(" -- ");
@Nonnull
class="kw">private class="kw">static class="kw">final char[] GRAPH_CHARS = new char[]{'_', '\u2584', '\u2500', '\u2580', '\u00af'};
class="kw">public StringUtil() {
}
class="kw">public class="kw">static boolean isNumericString(@Nonnull String var0) {
for (int var1 = 0; var1 < var0.length(); var1++) {
char var2 = var0.charAt(var1);
if (var2 < '0' || var2 > '9') {
class="kw">return false;
}
}
class="kw">return true;
}
class="kw">public class="kw">static boolean isAlphaNumericHyphenString(@Nonnull String var0) {
for (int var1 = 0; var1 < var0.length(); var1++) {
char var2 = var0.charAt(var1);
if ((var2 < '0' || var2 > 'z' || var2 > '9' && var2 < 'A' || var2 > 'Z' && var2 < 'a') && var2 != '-') {
class="kw">return false;
}
}
class="kw">return true;
}
class="kw">public class="kw">static boolean isAlphaNumericHyphenUnderscoreString(@Nonnull String var0) {
for (int var1 = 0; var1 < var0.length(); var1++) {
char var2 = var0.charAt(var1);
if ((var2 < '0' || var2 > 'z' || var2 > '9' && var2 < 'A' || var2 > 'Z' && var2 < 'a') && var2 != '-' && var2 != '_') {
class="kw">return false;
}
}
class="kw">return true;
}
class="kw">public class="kw">static boolean isCapitalized(@Nonnull String var0, char var1) {
boolean var2 = true;
for (int var3 = 0; var3 < var0.length(); var3++) {
char var4 = var0.charAt(var3);
if (var2 && var4 != Character.toUpperCase(var4)) {
class="kw">return false;
}
var2 = var4 == var1;
}
class="kw">return true;
}
@Nonnull
class="kw">public class="kw">static String capitalize(@Nonnull String var0, char var1) {
boolean var2 = true;
StringBuilder var3 = new StringBuilder();
for (int var4 = 0; var4 < var0.length(); var4++) {
char var5 = var0.charAt(var4);
var3.append(var2 ? Character.toUpperCase(var5) : var5);
var2 = var5 == var1;
}
class="kw">return var3.toString();
}
@Nullable
class="kw">public class="kw">static <V class="kw">extends Enum<V>> V parseEnum(@Nonnull V[] var0, String var1) {
class="kw">return parseEnum(var0, var1, StringUtil.MatchType.EQUALS);
}
@Nullable
class="kw">public class="kw">static <V class="kw">extends Enum<V>> V parseEnum(@Nonnull V[] var0, String var1, StringUtil.MatchType var2) {
if (var2 == StringUtil.MatchType.EQUALS) {
for (Enum var6 : var0) {
if (var6.name().equals(var1)) {
class="kw">return var6;
}
}
} else if (var2 == StringUtil.MatchType.CASE_INSENSITIVE) {
for (Enum var17 : var0) {
if (var17.name().equalsIgnoreCase(var1)) {
class="kw">return var17;
}
}
} else {
var1 = var1.toLowerCase(Locale.ROOT);
Enum var12 = null;
int var14 = -2;
for (Enum var8 : var0) {
int var9 = StringCompareUtil.indexOfDifference(var1, var8.name().toLowerCase(Locale.ROOT));
if (var9 > var14 && var14 != -1 || var9 == -1 || var14 == -2) {
var12 = var8;
var14 = var9;
}
}
if (var14 > -2) {
class="kw">return var12;
}
}
class="kw">return null;
}
@Nonnull
class="kw">public class="kw">static String stripQuotes(@Nonnull String var0) {
if (var0.length() >= 2) {
char var1 = var0.charAt(0);
char var2 = var0.charAt(var0.length() - 1);
if (var1 == '"' && var2 == '"' || var1 == '\'' && var2 == '\'') {
class="kw">return var0.substring(1, var0.length() - 1);
}
}
class="kw">return var0;
}
@Nullable
class="kw">public class="kw">static String sanitizeAsciiString(@Nullable String var0) {
if (var0 != null && !var0.isEmpty()) {
StringBuilder var1 = null;
for (int var2 = 0; var2 < var0.length(); var2++) {
char var3 = var0.charAt(var2);
if (var3 >= ' ' && var3 <= '~') {
if (var1 != null) {
var1.append(var3);
}
} else {
if (var1 == null) {
var1 = new StringBuilder(var0.length() + 16);
var1.append(var0, 0, var2);
}
var1.append("\\x");
var1.append(HEX_CHARS[var3 >> 4 & 15]);
var1.append(HEX_CHARS[var3 & 15]);
}
}
class="kw">return var1 != null ? var1.toString() : var0;
} else {
class="kw">return var0;
}
}
class="kw">public class="kw">static boolean isGlobMatching(@Nonnull String var0, @Nonnull String var1) {
class="kw">return var0.equals(var1) || isGlobMatching(var0, 0, var1, 0);
}
class="kw">public class="kw">static boolean isGlobMatching(@Nonnull String var0, int var1, @Nonnull String var2, int var3) {
while (var1 < var0.length()) {
char var4 = var0.charAt(var1);
if (var4 == '*') {
var1++;
while (var1 < var0.length() && var0.charAt(var1) == '*') {
var1++;
}
if (var1 == var0.length()) {
class="kw">return true;
}
char var5 = var0.charAt(var1);
while (var3 < var2.length()) {
if (var5 == var2.charAt(var3) && isGlobMatching(var0, var1 + 1, var2, var3 + 1)) {
class="kw">return true;
}
var3++;
}
class="kw">return false;
}
if (var3 == var2.length()) {
class="kw">return false;
}
if (var4 != '?' && var4 != var2.charAt(var3)) {
class="kw">return false;
}
var1++;
var3++;
}
class="kw">return var3 == var2.length();
}
class="kw">public class="kw">static boolean isGlobPattern(@Nonnull String var0) {
for (int var1 = 0; var1 < var0.length(); var1++) {
char var2 = var0.charAt(var1);
if (var2 == '?' || var2 == '*') {
class="kw">return true;
}
}
class="kw">return false;
}
@Nonnull
class="kw">public class="kw">static String humanizeTime(@Nonnull Duration var0, boolean var1) {
long var2 = var0.toMillis();
long var4 = var2 / 86400000L;
long var6 = (var2 - var4 * 86400000L) / 3600000L;
long var8 = (var2 - (var4 * 86400000L + var6 * 3600000L)) / 60000L;
String var10 = var4 + "d " + var6 + "h " + var8 + "m";
if (var1) {
long var11 = (var2 - (var4 * 86400000L + var6 * 3600000L + var8 * 60000L)) / 1000L;
var10 = var10 + " " + var11 + "s";
}
class="kw">return var10;
}
@Nonnull
class="kw">public class="kw">static String humanizeTime(@Nonnull Duration var0) {
class="kw">return humanizeTime(var0, false);
}
@Nonnull
class="kw">public class="kw">static <T> List<T> sortByFuzzyDistance(@Nonnull String var0, @Nonnull Collection<T> var1, int var2) {
List var3 = sortByFuzzyDistance(var0, var1);
class="kw">return var3.size() > var2 ? var3.subList(0, var2) : var3;
}
@Nonnull
class="kw">public class="kw">static <T> List<T> sortByFuzzyDistance(@Nonnull String var0, @Nonnull Collection<T> var1) {
Object2IntMap var2 = new Object2IntOpenHashMap(var1.size());
for (Object var4 : var1) {
var2.put(var4, StringCompareUtil.getFuzzyDistance(var4.toString(), var0, Locale.ENGLISH));
}
List var5 = new ObjectArrayList(var1);
var5.sort(Comparator.comparingInt(var2::getInt).reversed());
class="kw">return var5;
}
class="kw">public class="kw">static <T> void sortByFuzzyDistance(@Nonnull String var0, @Nonnull List<T> var1, @Nonnull Function<T, String> var2) {
Object2IntMap var3 = new Object2IntOpenHashMap(var1.size());
for (Object var5 : var1) {
var3.put(var5, StringCompareUtil.getFuzzyDistance(var2.apply(var5), var0, Locale.ENGLISH));
}
var1.sort(Comparator.comparingInt(var3::getInt).reversed());
}
@Nonnull
class="kw">public class="kw">static String toPaddedBinaryString(int var0) {
byte[] var1 = new byte[]{48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48};
int var2 = Integer.numberOfLeadingZeros(var0);
if (var2 == 32) {
class="kw">return new String(var1, 0);
}
int var3 = 32 - var2;
int var4 = Math.max(var3, 1);
do {
var1[var2 + --var4] = (byte)(48 + (var0 & 1));
var0 >>>= 1;
} while (var4 > 0);
class="kw">return new String(var1, 0);
}
@Nonnull
class="kw">public class="kw">static String trimEnd(@Nonnull String var0, @Nonnull String var1) {
class="kw">return !var0.endsWith(var1) ? var0 : var0.substring(0, var0.length() - var1.length());
}
@Nonnull
class="kw">public class="kw">static String formatColumns(@Nonnull List<String> var0, int var1) {
if (var0.isEmpty()) {
class="kw">return "";
}
int var2 = 0;
for (String var4 : var0) {
if (var4.length() > var2) {
var2 = var4.length();
}
}
int var13 = var2 + 2;
int var14 = Math.max(1, var1 / var13);
int var5 = (var0.size() + var14 - 1) / var14;
StringBuilder var6 = new StringBuilder();
for (int var7 = 0; var7 < var5; var7++) {
var6.append("\n ");
for (int var8 = 0; var8 < var14; var8++) {
int var9 = var8 * var5 + var7;
if (var9 >= var0.size()) {
break;
}
String var10 = var0.get(var9);
var6.append(var10);
int var11 = (var8 + 1) * var5 + var7;
if (var8 < var14 - 1 && var11 < var0.size()) {
for (int var12 = var10.length(); var12 < var13; var12++) {
var6.append(' ');
}
}
}
}
class="kw">return var6.toString();
}
class="kw">public class="kw">static void generateGraph(
@Nonnull StringBuilder var0,
int var1,
int var2,
long var3,
long var5,
double var7,
double var9,
@Nonnull DoubleFunction<String> var11,
int var12,
@Nonnull IntToLongFunction var13,
@Nonnull IntToDoubleFunction var14
) {
double var15 = var9 - var7;
long var17 = var5 - var3;
double var19 = var15 / var2;
double var21 = (double)var17 / var1;
double[] var23 = new double[var1];
Arrays.fill(var23, -1.0);
int var24 = 0;
for (int var25 = 0; var25 < var1; var25++) {
double var26 = 0.0;
int var28 = 0;
for (long var29 = var5 - (var17 - (long)(var21 * var25)); var24 < var12 && var13.applyAsLong(var24) < var29; var24++) {
var26 += var14.applyAsDouble(var24);
var28++;
}
if (var28 != 0) {
var23[var25] = var26 / var28;
} else if (var25 > 0) {
var23[var25] = var23[var25 - 1];
}
}
double var39 = -1.0;
for (int var27 = var23.length - 1; var27 >= 0; var27--) {
if (var23[var27] != -1.0) {
var39 = var23[var27];
} else if (var39 != -1.0) {
var23[var27] = var39;
}
}
int var40 = 0;
String[] var41 = new String[var2];
for (int var42 = 0; var42 < var2; var42++) {
double var30 = var7 + var15 - var19 * var42;
String var32 = var11.apply(var30);
var41[var42] = var32;
int var33 = var32.length();
if (var33 > var40) {
var40 = var33;
}
}
String var43 = " ".repeat(var40) + " " + "#".repeat(var1 + 2);
var0.append(var43).append('\n');
for (int var44 = 0; var44 < var2; var44++) {
var0.append(" ".repeat(Math.max(0, var40 - var41[var44].length()))).append(var41[var44]).append(" #");
double var31 = var7 + var15 - var19 * (var44 + 1);
for (int var45 = 0; var45 < var1; var45++) {
double var34 = var23[var45] - var31;
if (!(var34 <= 0.0) && !(var34 > var19)) {
double var36 = var34 / var19;
int var38 = (int)Math.round(var36 * (GRAPH_CHARS.length - 1));
var0.append(GRAPH_CHARS[Math.max(0, var38)]);
} else {
var0.append(' ');
}
}
var0.append("#\n");
}
var0.append(var43).append('\n');
var0.append('\n');
}
class="kw">public enum MatchType {
INDEX_DIFFERENCE,
EQUALS,
CASE_INSENSITIVE;
MatchType() {
}
}
}