Skip to content

Instantly share code, notes, and snippets.

@mikaelkaron
Last active August 29, 2015 13:56
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mikaelkaron/9205892 to your computer and use it in GitHub Desktop.
Save mikaelkaron/9205892 to your computer and use it in GitHub Desktop.
Parsing a semver string and translating values
"1.2.3-pre+build".match(/(\d+)(?:\.(\d+)(?:\.(\d+))?)?(?:-([^+]+))?(?:\+(.+))?/).map(function (value, index) { return index > 0 && index < 4 ? parseInt(value || 0) : value; });
[ "3.0.1", "3.0.2-1+build", "1.1", "2.1" ]
.map(function (semver) {
return (/(\d+)(?:\.(\d+)(?:\.(\d+))?)?(?:-([^+]+))?(?:\+(.+))?/.exec(semver) || [])
.map(function (value, index) {
return index > 0 && index < 4
? parseInt(value || 0)
: value;
});
})
.sort(function (b, a) {
var major = a[1] - b[1];
var minor = a[2] - b[2];
var patch = a[3] - b[3];
return major == 0
? minor === 0
? patch
: minor
: major;
})
.map(function (array) {
return array[0];
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment