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;
}
}
}