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() {
      }
   }
}