aboutsummaryrefslogtreecommitdiffstats
path: root/api/src/main
diff options
context:
space:
mode:
authorJulien Eluard <[email protected]>2012-07-26 14:53:13 -0300
committerJulien Eluard <[email protected]>2012-07-26 14:53:13 -0300
commit024b119ce11d734fedae23482afc8f55a6b7ba8e (patch)
tree8b632192b945b4058e0fe790b62fd90560e13fa1 /api/src/main
parentc60834abe523576aed9d8d0bbf1ff46feb0e418f (diff)
Improved version parsing.
Diffstat (limited to 'api/src/main')
-rwxr-xr-xapi/src/main/java/org/semver/Version.java13
1 files changed, 9 insertions, 4 deletions
diff --git a/api/src/main/java/org/semver/Version.java b/api/src/main/java/org/semver/Version.java
index e6c9abf..a6bb770 100755
--- a/api/src/main/java/org/semver/Version.java
+++ b/api/src/main/java/org/semver/Version.java
@@ -42,7 +42,7 @@ public final class Version implements Comparable<Version> {
MAJOR, MINOR, PATCH, SPECIAL;
}
- private static final String FORMAT = "(\\d+)\\.(\\d+)(?:\\.)?(\\d*)(?:\\.|-)?([A-Za-z][0-9A-Za-z-]*)?";
+ private static final String FORMAT = "(\\d+)\\.(\\d+)(?:\\.)?(\\d*)(\\.|-|\\+)?([0-9A-Za-z-.]*)?";
private static final Pattern PATTERN = Pattern.compile(Version.FORMAT);
private static final String SNAPSHOT_VERSION_SUFFIX = "-SNAPSHOT";
@@ -50,13 +50,14 @@ public final class Version implements Comparable<Version> {
private final int major;
private final int minor;
private final int patch;
+ private final String separator;
private final String special;
public Version(@Nonnegative final int major, @Nonnegative final int minor, @Nonnegative final int patch) {
- this(major, minor, patch, null);
+ this(major, minor, patch, null, null);
}
- public Version(@Nonnegative final int major, @Nonnegative final int minor, @Nonnegative final int patch, @Nullable final String special) {
+ public Version(@Nonnegative final int major, @Nonnegative final int minor, @Nonnegative final int patch, @Nullable final String separator, @Nullable final String special) {
if (major < 0) {
throw new IllegalArgumentException(Element.MAJOR+" must be positive");
}
@@ -70,6 +71,7 @@ public final class Version implements Comparable<Version> {
this.major = major;
this.minor = minor;
this.patch = patch;
+ this.separator = separator;
this.special = special;
}
@@ -95,7 +97,7 @@ public final class Version implements Comparable<Version> {
} else {
patch = 0;
}
- return new Version(major, minor, patch, matcher.group(4));
+ return new Version(major, minor, patch, matcher.group(4), matcher.group(5));
}
/**
@@ -184,6 +186,9 @@ public final class Version implements Comparable<Version> {
public String toString() {
final StringBuilder builder = new StringBuilder();
builder.append(this.major).append(".").append(this.minor).append(".").append(this.patch);
+ if (this.separator != null) {
+ builder.append(this.separator);
+ }
if (this.special != null) {
builder.append(this.special);
}