SemverRange class

Пакет: com.hypixel.hytale.common.semver

Файл: com/hypixel/hytale/common/semver/SemverRange.java

implements: SemverSatisfies

Поля (15)

МодификаторыТипИмя
final Codec<SemverRange> CODEC
var0
StringJoiner var1
Semver var10
String var11
String var12
String[] var13
Semver var14
Semver var15
String[] var2
SemverSatisfies[] var3
String var5
String[] var6
Semver var7
SemverSatisfies[] var7

Методы (14)

МодификаторыВозвратСигнатура
abstract throw new IllegalArgumentExceptionthrow new IllegalArgumentException("Hyphen range '" + var5 + "' must have exactly one ' - ' separator")
for for(SemverSatisfies var10 : this.comparators)
for for(SemverSatisfies var5 : this.comparators)
for for(SemverSatisfies var5 : var1)
for for(SemverSatisfies var5 : this.comparators)
for for(int var4 = 0; var4 < var2.length; var4++)
for for(int var8 = 0; var8 < var6.length; var8++)
abstract return fromStringreturn fromString(var0, false)
if if(this.and)
if if(var5 instanceof SemverComparator var6)
if if(var5 instanceof SemverComparator var6)
if if(this.comparators.length == 0)
if if(var13.length != 2)
static boolean matchesPreReleaseRuleboolean matchesPreReleaseRule(@Nonnull Semver var0, @Nonnull SemverSatisfies[] var1)

Исходный код

Показать/скрыть
class="kw">package com.hypixel.hytale.common.semver;

class="kw">import com.hypixel.hytale.codec.Codec;
class="kw">import java.util.Objects;
class="kw">import java.util.StringJoiner;
class="kw">import javax.annotation.Nonnull;

class="kw">public class SemverRange class="kw">implements SemverSatisfies {
   class="kw">public class="kw">static class="kw">final Codec<SemverRange> CODEC = SemverRangeCodec.INSTANCE;
   class="kw">public class="kw">static class="kw">final SemverRange WILDCARD = new SemverRange(new SemverSatisfies[0], true);
   class="kw">private class="kw">final SemverSatisfies[] comparators;
   class="kw">private class="kw">final boolean and;

   class="kw">public SemverRange(SemverSatisfies[] var1, boolean var2) {
      this.comparators = var1;
      this.and = var2;
   }

   @Override
   class="kw">public boolean satisfies(Semver var1) {
      if (this.and) {
         for (SemverSatisfies var10 : this.comparators) {
            if (!var10.satisfies(var1)) {
               class="kw">return false;
            }
         }

         class="kw">return this.comparators.length == 0 ? true : matchesPreReleaseRule(var1, this.comparators);
      } else {
         for (SemverSatisfies var5 : this.comparators) {
            if (var5 class="kw">instanceof SemverComparator var6) {
               if (var6.satisfies(var1) && matchesPreReleaseRule(var1, new SemverSatisfies[]{var6})) {
                  class="kw">return true;
               }
            } else if (var5.satisfies(var1)) {
               class="kw">return true;
            }
         }

         class="kw">return false;
      }
   }

   class="kw">private class="kw">static boolean matchesPreReleaseRule(@Nonnull Semver var0, @Nonnull SemverSatisfies[] var1) {
      if (!var0.hasPreRelease()) {
         class="kw">return true;
      }

      for (SemverSatisfies var5 : var1) {
         if (var5 class="kw">instanceof SemverComparator var6) {
            Semver var7 = var6.getCompareTo();
            if (var7.hasPreRelease() && var7.getMajor() == var0.getMajor() && var7.getMinor() == var0.getMinor() && var7.getPatch() == var0.getPatch()) {
               class="kw">return true;
            }
         }
      }

      class="kw">return false;
   }

   @Override
   class="kw">public String toString() {
      if (this.comparators.length == 0) {
         class="kw">return "*";
      }

      StringJoiner var1 = new StringJoiner(this.and ? " " : " || ");

      for (SemverSatisfies var5 : this.comparators) {
         var1.add(var5.toString());
      }

      class="kw">return var1.toString();
   }

   @Nonnull
   class="kw">public class="kw">static SemverRange fromString(String var0) {
      class="kw">return fromString(var0, false);
   }

   @Nonnull
   class="kw">public class="kw">static SemverRange exact(@Nonnull Semver var0) {
      Objects.requireNonNull(var0, "Version can't be null!");
      class="kw">return new SemverRange(new SemverSatisfies[]{new SemverComparator(SemverComparator.ComparisonType.EQUAL, var0)}, true);
   }

   @Nonnull
   class="kw">public class="kw">static SemverRange fromString(String var0, boolean var1) {
      Objects.requireNonNull(var0, "String can't be null!");
      var0 = var0.trim();
      if (!var0.isEmpty() && !"*".equals(var0)) {
         String[] var2 = var0.split("\\|\\|", -1);
         SemverSatisfies[] var3 = new SemverSatisfies[var2.length];

         for (int var4 = 0; var4 < var2.length; var4++) {
            String var5 = var2[var4].trim();
            if (var5.isEmpty()) {
               throw new IllegalArgumentException("Sub-range is empty (input: '" + var0 + "')");
            }

            if (var5.contains(" - ")) {
               String[] var13 = var5.split(" - ", -1);
               if (var13.length != 2) {
                  throw new IllegalArgumentException("Hyphen range '" + var5 + "' must have exactly one ' - ' separator");
               }

               var3[var4] = new SemverRange(
                  new SemverSatisfies[]{
                     new SemverComparator(SemverComparator.ComparisonType.GTE, Semver.fromString(var13[0].trim(), var1)),
                     new SemverComparator(SemverComparator.ComparisonType.LTE, Semver.fromString(var13[1].trim(), var1))
                  },
                  true
               );
            } else if (var5.charAt(0) == '~') {
               String var12 = var5.substring(1).trim();
               if (var12.isEmpty()) {
                  throw new IllegalArgumentException("Tilde range '~' has no version (input: '" + var5 + "')");
               }

               Semver var15 = Semver.fromString(var12, var1);
               if (var15.getMinor() > 0L) {
                  var3[var4] = new SemverRange(
                     new SemverSatisfies[]{
                        new SemverComparator(SemverComparator.ComparisonType.GTE, var15),
                        new SemverComparator(SemverComparator.ComparisonType.LT, new Semver(var15.getMajor(), var15.getMinor() + 1L, 0L, null, null))
                     },
                     true
                  );
               } else {
                  var3[var4] = new SemverRange(
                     new SemverSatisfies[]{
                        new SemverComparator(SemverComparator.ComparisonType.GTE, var15),
                        new SemverComparator(SemverComparator.ComparisonType.LT, new Semver(var15.getMajor() + 1L, 0L, 0L, null, null))
                     },
                     true
                  );
               }
            } else if (var5.charAt(0) == '^') {
               String var11 = var5.substring(1).trim();
               if (var11.isEmpty()) {
                  throw new IllegalArgumentException("Caret range '^' has no version (input: '" + var5 + "')");
               }

               Semver var14 = Semver.fromString(var11, var1);
               if (var14.getMajor() > 0L) {
                  var3[var4] = new SemverRange(
                     new SemverSatisfies[]{
                        new SemverComparator(SemverComparator.ComparisonType.GTE, var14),
                        new SemverComparator(SemverComparator.ComparisonType.LT, new Semver(var14.getMajor() + 1L, 0L, 0L, null, null))
                     },
                     true
                  );
               } else if (var14.getMinor() > 0L) {
                  var3[var4] = new SemverRange(
                     new SemverSatisfies[]{
                        new SemverComparator(SemverComparator.ComparisonType.GTE, var14),
                        new SemverComparator(SemverComparator.ComparisonType.LT, new Semver(0L, var14.getMinor() + 1L, 0L, null, null))
                     },
                     true
                  );
               } else {
                  var3[var4] = new SemverRange(
                     new SemverSatisfies[]{
                        new SemverComparator(SemverComparator.ComparisonType.GTE, var14),
                        new SemverComparator(SemverComparator.ComparisonType.LT, new Semver(0L, 0L, var14.getPatch() + 1L, null, null))
                     },
                     true
                  );
               }
            } else if (!var5.contains(" ")) {
               if (SemverComparator.ComparisonType.hasAPrefix(var5)) {
                  var3[var4] = SemverComparator.fromString(var5);
               } else {
                  Semver var10 = Semver.fromString(var5.replace("x", "0").replace("*", "0"), var1);
                  if (var10.getPatch() == 0L && var10.getMinor() == 0L && var10.getMajor() == 0L) {
                     var3[var4] = new SemverComparator(SemverComparator.ComparisonType.GTE, new Semver(0L, 0L, 0L));
                  } else if (var10.getPatch() == 0L && var10.getMinor() == 0L) {
                     var3[var4] = new SemverRange(
                        new SemverSatisfies[]{
                           new SemverComparator(SemverComparator.ComparisonType.GTE, var10),
                           new SemverComparator(SemverComparator.ComparisonType.LT, new Semver(var10.getMajor() + 1L, 0L, 0L, null, null))
                        },
                        true
                     );
                  } else {
                     if (var10.getPatch() != 0L) {
                        throw new IllegalArgumentException(
                           "Bare version '"
                              + var5
                              + "' is not a valid range. Use '="
                              + var5
                              + "' for an exact match, or '^"
                              + var5
                              + "' / '~"
                              + var5
                              + "' for a range. Bare ranges only work when the patch is zero (e.g. '1.2.0' or '1.x')."
                        );
                     }

                     var3[var4] = new SemverRange(
                        new SemverSatisfies[]{
                           new SemverComparator(SemverComparator.ComparisonType.GTE, var10),
                           new SemverComparator(SemverComparator.ComparisonType.LT, new Semver(var10.getMajor(), var10.getMinor() + 1L, 0L, null, null))
                        },
                        true
                     );
                  }
               }
            } else {
               String[] var6 = var5.split("\\s+", -1);
               SemverSatisfies[] var7 = new SemverSatisfies[var6.length];

               for (int var8 = 0; var8 < var6.length; var8++) {
                  var7[var8] = SemverComparator.fromString(var6[var8]);
               }

               var3[var4] = new SemverRange(var7, true);
            }
         }

         class="kw">return new SemverRange(var3, false);
      } else {
         class="kw">return WILDCARD;
      }
   }
}