From a54081ec842a04100914d8ddda3eb6c2dc6b75c9 Mon Sep 17 00:00:00 2001 From: Jake Potrebic Date: Sun, 20 Dec 2020 11:41:17 -0800 Subject: [PATCH] adjust version formatting --- src/main/java/io/papermc/hangar/util/StringUtils.java | 11 ++++++----- .../io/papermc/hangar/util/FormattedVersionsTest.java | 9 ++++++--- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/src/main/java/io/papermc/hangar/util/StringUtils.java b/src/main/java/io/papermc/hangar/util/StringUtils.java index 41d790bda..7c1eb97d6 100644 --- a/src/main/java/io/papermc/hangar/util/StringUtils.java +++ b/src/main/java/io/papermc/hangar/util/StringUtils.java @@ -69,8 +69,8 @@ public class StringUtils { } - private static final Pattern LAST_WHOLE_VERSION = Pattern.compile("((?<=,\\s)|^)[0-9.]{2,}(?=-\\d+$)"); - private static final Pattern PREV_HAS_HYPHEN = Pattern.compile("(?<=\\d-)\\d+$"); + private static final Pattern LAST_WHOLE_VERSION = Pattern.compile("((?<=,\\s)|^)[0-9.]{2,}(?=-[0-9.]+$)"); + private static final Pattern PREV_HAS_HYPHEN = Pattern.compile("(?<=\\d-)[0-9.]+$"); private static final Pattern PREV_HAS_COMMA_OR_FIRST = Pattern.compile("((?<=,\\s)|^)[0-9.]+$"); /** @@ -115,7 +115,8 @@ public class StringUtils { Matcher hyphen = PREV_HAS_HYPHEN.matcher(verString); Matcher comma = PREV_HAS_COMMA_OR_FIRST.matcher(verString); if (hyphen.find()) { - int prevVersion = Integer.parseInt(hyphen.group()); + String[] group = hyphen.group().split("\\."); + int prevVersion = Integer.parseInt(group[group.length - 1]); Matcher prevVersionMatcher = LAST_WHOLE_VERSION.matcher(verString); if (!prevVersionMatcher.find()) { throw new IllegalArgumentException("Bad version string"); @@ -123,7 +124,7 @@ public class StringUtils { List previousWholeVersion = StringUtils.splitVersionNumber(prevVersionMatcher.group()); if (previousWholeVersion.size() == versionArr.size()) { if (versionArr.get(versionArr.size() - 1) - 1 == prevVersion) { - return verString.replaceFirst("-\\d+$", "-" + versionArr.get(versionArr.size() - 1)); + return verString.replaceFirst("-[0-9.]+$", "-" + version); } else { return verString + ", " + version; } @@ -135,7 +136,7 @@ public class StringUtils { List prevVersion = StringUtils.splitVersionNumber(comma.group()); if (prevVersion.size() == versionArr.size()) { if (versionArr.get(versionArr.size() - 1) - 1 == prevVersion.get(prevVersion.size() - 1)) { - return verString + "-" + versionArr.get(versionArr.size() - 1); + return verString + "-" + version; } else { return verString + ", " + version; } diff --git a/src/test/java/io/papermc/hangar/util/FormattedVersionsTest.java b/src/test/java/io/papermc/hangar/util/FormattedVersionsTest.java index 72713582d..07da721b2 100644 --- a/src/test/java/io/papermc/hangar/util/FormattedVersionsTest.java +++ b/src/test/java/io/papermc/hangar/util/FormattedVersionsTest.java @@ -12,12 +12,15 @@ public class FormattedVersionsTest { void testFormattedVersions() { List list1 = List.of("1.1", "1.2", "1.3", "1.5", "1.7", "1.8"); - Assertions.assertEquals(StringUtils.formatVersionNumbers(new ArrayList<>(list1)), "1.1-3, 1.5, 1.7-8"); + Assertions.assertEquals("1.1-1.3, 1.5, 1.7-1.8", StringUtils.formatVersionNumbers(new ArrayList<>(list1))); List list2 = List.of("1.20", "1.23", "1.25", "1.30", "1.31"); - Assertions.assertEquals(StringUtils.formatVersionNumbers(new ArrayList<>(list2)), "1.20, 1.23, 1.25, 1.30-31"); + Assertions.assertEquals("1.20, 1.23, 1.25, 1.30-1.31", StringUtils.formatVersionNumbers(new ArrayList<>(list2))); List list3 = List.of("1.1.0", "1.1.1", "1.2.0", "1.2.2", "1.3", "1.4"); - Assertions.assertEquals(StringUtils.formatVersionNumbers(new ArrayList<>(list3)), "1.1.0-1, 1.2.0, 1.2.2, 1.3-4"); + Assertions.assertEquals("1.1.0-1.1.1, 1.2.0, 1.2.2, 1.3-1.4", StringUtils.formatVersionNumbers(new ArrayList<>(list3))); + + List list4 = List.of("1.1", "1.2", "1.3", "1.4", "1.5", "1.7", "1.8", "1.9", "1.10", "1.12"); + Assertions.assertEquals("1.1-1.5, 1.7-1.10, 1.12", StringUtils.formatVersionNumbers(new ArrayList<>(list4))); } }