Semver class

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

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

implements: Comparable<Semver>

Поля (27)

МодификаторыТипИмя
final Codec<Semver> CODEC
var0
var0
var0
var0
var0
var0
StringBuilder var1
long var10
String[] var14
var14
String[] var15
boolean var2
String var2
char var2
boolean var3
String var3
var3
int var4
String[] var4
String var5
String[] var5
String var6
long var6
int var7
int var8
long var8

Методы (43)

МодификаторыВозвратСигнатура
abstract throw new IllegalArgumentExceptionthrow new IllegalArgumentException("Major must be a non-negative integer")
abstract throw new IllegalArgumentExceptionthrow new IllegalArgumentException("Minor must be a non-negative integer")
abstract throw new IllegalArgumentExceptionthrow new IllegalArgumentException("Patch must be a non-negative integer")
public int compareToint compareTo(@Nonnull Semver var1)
for for(var4 = 0; var4 < this.preRelease.length && var4 < var1.preRelease.length; var4++)
for for(String var4 : var0)
abstract for for(int var1 = 0; var1 < var0.length()
abstract return fromStringreturn fromString(var0, false)
public String getBuildString getBuild()
public long getMajorlong getMajor()
public long getMinorlong getMinor()
public long getPatchlong getPatch()
public String[] getPreReleaseString[] getPreRelease()
public boolean hasPreReleaseboolean hasPreRelease()
if if(var1 < 0L)
if if(var3 < 0L)
if if(var5 < 0L)
if if(this.major != var1.major)
if if(this.minor != var1.minor)
if if(this.patch != var1.patch)
if if(var2 && !var3)
if if(!var2 && var3)
if if(!var2)
if if(var8 != 0)
if if(var7 != 0)
if if(this.preRelease.length > var4)
if if(this.preRelease != null && this.preRelease.length > 0)
if if(var15.length < 1)
if if(var6 < 0L)
if if(var8 < 0L)
if if(var10 < 0L)
if if(var0 != null)
if if(var2 == '.')
if if(var0 != null)
static long parseComponentlong parseComponent(@Nonnull String var0, @Nonnull String var1, @Nonnull String var2)
public boolean satisfiesboolean satisfies(@Nonnull SemverRange var1)
abstract this this(var1, var3, var5, null, null)
static void validateBuildvoid validateBuild(@Nullable String var0)
abstract validateBuild validateBuild(var8)
abstract validateBuild validateBuild(var3)
static void validatePreReleasevoid validatePreRelease(@Nullable String[] var0)
abstract validatePreRelease validatePreRelease(var7)
abstract validatePreRelease validatePreRelease(var14)

Исходный код

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

class="kw">import com.hypixel.hytale.codec.Codec;
class="kw">import com.hypixel.hytale.common.util.StringUtil;
class="kw">import java.util.Arrays;
class="kw">import java.util.Locale;
class="kw">import java.util.Objects;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;

class="kw">public class Semver class="kw">implements Comparable<Semver> {
   class="kw">public class="kw">static class="kw">final Codec<Semver> CODEC = SemverCodec.INSTANCE;
   class="kw">private class="kw">final long major;
   class="kw">private class="kw">final long minor;
   class="kw">private class="kw">final long patch;
   class="kw">private class="kw">final String[] preRelease;
   class="kw">private class="kw">final String build;

   class="kw">public Semver(long var1, long var3, long var5) {
      this(var1, var3, var5, null, null);
   }

   class="kw">public Semver(long var1, long var3, long var5, String[] var7, String var8) {
      if (var1 < 0L) {
         throw new IllegalArgumentException("Major must be a non-negative integer");
      }

      if (var3 < 0L) {
         throw new IllegalArgumentException("Minor must be a non-negative integer");
      }

      if (var5 < 0L) {
         throw new IllegalArgumentException("Patch must be a non-negative integer");
      }

      validatePreRelease(var7);
      validateBuild(var8);
      this.major = var1;
      this.minor = var3;
      this.patch = var5;
      this.preRelease = var7;
      this.build = var8;
   }

   class="kw">public long getMajor() {
      class="kw">return this.major;
   }

   class="kw">public long getMinor() {
      class="kw">return this.minor;
   }

   class="kw">public long getPatch() {
      class="kw">return this.patch;
   }

   class="kw">public String[] getPreRelease() {
      class="kw">return this.preRelease == null ? new String[0] : (String[])this.preRelease.clone();
   }

   class="kw">public boolean hasPreRelease() {
      class="kw">return this.preRelease != null && this.preRelease.length > 0;
   }

   class="kw">public String getBuild() {
      class="kw">return this.build;
   }

   class="kw">public boolean satisfies(@Nonnull SemverRange var1) {
      class="kw">return var1.satisfies(this);
   }

   class="kw">public int compareTo(@Nonnull Semver var1) {
      if (this.major != var1.major) {
         class="kw">return Long.compare(this.major, var1.major);
      }

      if (this.minor != var1.minor) {
         class="kw">return Long.compare(this.minor, var1.minor);
      }

      if (this.patch != var1.patch) {
         class="kw">return Long.compare(this.patch, var1.patch);
      }

      boolean var2 = this.hasPreRelease();
      boolean var3 = var1.hasPreRelease();
      if (var2 && !var3) {
         class="kw">return -1;
      }

      if (!var2 && var3) {
         class="kw">return 1;
      }

      if (!var2) {
         class="kw">return 0;
      }

      int var4;
      for (var4 = 0; var4 < this.preRelease.length && var4 < var1.preRelease.length; var4++) {
         String var5 = this.preRelease[var4];
         String var6 = var1.preRelease[var4];
         if (StringUtil.isNumericString(var5) && StringUtil.isNumericString(var6)) {
            int var8 = Integer.compare(Integer.parseInt(var5), Integer.parseInt(var6));
            if (var8 != 0) {
               class="kw">return var8;
            }
         } else {
            int var7 = var5.compareTo(var6);
            if (var7 != 0) {
               class="kw">return var7;
            }
         }
      }

      if (this.preRelease.length > var4) {
         class="kw">return 1;
      } else {
         class="kw">return var1.preRelease.length > var4 ? -1 : 0;
      }
   }

   @Nonnull
   @Override
   class="kw">public String toString() {
      StringBuilder var1 = new StringBuilder().append(this.major).append('.').append(this.minor).append('.').append(this.patch);
      if (this.preRelease != null && this.preRelease.length > 0) {
         var1.append('-').append(String.join(".", this.preRelease));
      }

      if (this.build != null && !this.build.isEmpty()) {
         var1.append('+').append(this.build);
      }

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

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

   @Nonnull
   class="kw">public class="kw">static Semver fromString(String var0, boolean var1) {
      Objects.requireNonNull(var0, "Semver string can't be null!");
      String var2 = var0;
      var0 = var0.trim();
      if (var0.isEmpty()) {
         throw new IllegalArgumentException("Semver string is empty (input: '" + var2 + "')");
      }

      if (var0.charAt(0) == '=' || var0.charAt(0) == 'v') {
         var0 = var0.substring(1);
      }

      if (!var0.isEmpty() && (var0.charAt(0) == '=' || var0.charAt(0) == 'v')) {
         var0 = var0.substring(1);
      }

      var0 = var0.trim();
      if (var0.isEmpty()) {
         throw new IllegalArgumentException("Semver string is empty after stripping leading '='/'v' (input: '" + var2 + "')");
      }

      String var3 = null;
      if (var0.contains("+")) {
         String[] var4 = var0.split("\\+", 2);
         var0 = var4[0];
         var3 = var4[1];
         validateBuild(var3);
      }

      String[] var14 = null;
      if (var0.contains("-")) {
         String[] var5 = var0.split("-", 2);
         var0 = var5[0];
         var14 = var5[1].split("\\.", -1);
         validatePreRelease(var14);
      }

      if (var0.isEmpty() || var0.charAt(0) != '.' && var0.charAt(var0.length() - 1) != '.') {
         String[] var15 = var0.split("\\.", -1);
         if (var15.length < 1) {
            throw new IllegalArgumentException("String doesn't match <major>.<minor>.<patch> (" + var0 + ")");
         } else {
            long var6 = parseComponent(var15[0], "Major", var2);
            if (var6 < 0L) {
               throw new IllegalArgumentException("Major must be a non-negative integers (" + var0 + ")");
            } else if (!var1 && var15.length == 1) {
               class="kw">return new Semver(var6, 0L, 0L, var14, var3);
            } else if (var15.length < 2) {
               throw new IllegalArgumentException("String doesn't match <major>.<minor>.<patch> (" + var0 + ")");
            } else {
               long var8 = parseComponent(var15[1], "Minor", var2);
               if (var8 < 0L) {
                  throw new IllegalArgumentException("Minor must be a non-negative integers (" + var0 + ")");
               } else if (!var1 && var15.length == 2) {
                  class="kw">return new Semver(var6, var8, 0L, var14, var3);
               } else if (var15.length != 3) {
                  throw new IllegalArgumentException("String doesn't match <major>.<minor>.<patch> (" + var0 + ")");
               } else {
                  long var10 = parseComponent(var15[2], "Patch", var2);
                  if (var10 < 0L) {
                     throw new IllegalArgumentException("Patch must be a non-negative integers (" + var0 + ")");
                  } else {
                     class="kw">return new Semver(var6, var8, var10, var14, var3);
                  }
               }
            }
         }
      } else {
         throw new IllegalArgumentException("Failed to parse digits (" + var0 + ")");
      }
   }

   class="kw">private class="kw">static long parseComponent(@Nonnull String var0, @Nonnull String var1, @Nonnull String var2) {
      try {
         class="kw">return Long.parseLong(var0);
      } catch (NumberFormatException var4) {
         throw new IllegalArgumentException(
            "Invalid version '"
               + var2
               + "': "
               + var1.toLowerCase(Locale.ROOT)
               + " must be a non-negative integer, got '"
               + var0
               + "'. Expected format: <major>.<minor>.<patch>.",
            var4
         );
      }
   }

   class="kw">private class="kw">static void validateBuild(@Nullable String var0) {
      if (var0 != null) {
         if (!var0.isEmpty() && var0.charAt(0) != '.' && var0.charAt(var0.length() - 1) != '.') {
            for (int var1 = 0; var1 < var0.length(); var1++) {
               char var2 = var0.charAt(var1);
               if (var2 == '.') {
                  if (var0.charAt(var1 - 1) == '.') {
                     throw new IllegalArgumentException("Build identifiers must only contain ASCII alphanumerics and hyphens [0-9A-Za-z-] (" + var0 + ")");
                  }
               } else if ((var2 < '0' || var2 > 'z' || var2 > '9' && var2 < 'A' || var2 > 'Z' && var2 < 'a') && var2 != '-') {
                  throw new IllegalArgumentException("Build identifiers must only contain ASCII alphanumerics and hyphens [0-9A-Za-z-] (" + var0 + ")");
               }
            }
         } else {
            throw new IllegalArgumentException("Build identifiers must only contain ASCII alphanumerics and hyphens [0-9A-Za-z-] (" + var0 + ")");
         }
      }
   }

   class="kw">private class="kw">static void validatePreRelease(@Nullable String[] var0) {
      if (var0 != null) {
         for (String var4 : var0) {
            if (var4.isEmpty() || !StringUtil.isAlphaNumericHyphenString(var4)) {
               throw new IllegalArgumentException("Pre-release must only be alphanumeric (" + Arrays.toString(var0) + ")");
            }
         }
      }
   }
}