Fix reSemverRange to parse pre-release versions that contain hyphens.

This commit is contained in:
metaraine 2015-08-03 11:12:58 -06:00
parent ff978dc8ad
commit 86ea225075
2 changed files with 27 additions and 6 deletions

View File

@ -8,7 +8,7 @@
// | | | |optional build prefixed by '+' // | | | |optional build prefixed by '+'
var reSemver = /^v?((\d+)\.(\d+)\.(\d+))(?:-([\dA-Za-z\-]+(?:\.[\dA-Za-z\-]+)*))?(?:\+([\dA-Za-z\-]+(?:\.[\dA-Za-z\-]+)*))?$/ var reSemver = /^v?((\d+)\.(\d+)\.(\d+))(?:-([\dA-Za-z\-]+(?:\.[\dA-Za-z\-]+)*))?(?:\+([\dA-Za-z\-]+(?:\.[\dA-Za-z\-]+)*))?$/
//, reSemverRange = /\s*((\|\||\-)|(([<>~]?=?)\s*(v)?([0-9]+)(\.(x|[0-9]+))?(\.(x|[0-9]+))?(([\-+])([a-zA-Z0-9\.]+))?))\s*/g //, reSemverRange = /\s*((\|\||\-)|(([<>~]?=?)\s*(v)?([0-9]+)(\.(x|[0-9]+))?(\.(x|[0-9]+))?(([\-+])([a-zA-Z0-9\.]+))?))\s*/g
, reSemverRange = /\s*((\|\||\-)|(([<>~^]?=?)\s*(v)?([0-9]+)(\.(x|\*|[0-9]+))?(\.(x|\*|[0-9]+))?(([\-+])([a-zA-Z0-9\.]+))?))\s*/g , reSemverRange = /\s*((\|\||\-)|(([<>~^]?=?)\s*(v)?([0-9]+)(\.(x|\*|[0-9]+))?(\.(x|\*|[0-9]+))?(([\-+])([a-zA-Z0-9\.-]+))?))\s*/g
; ;
// Returns a new object with all of the undefined properties removed from the given object // Returns a new object with all of the undefined properties removed from the given object
@ -54,7 +54,7 @@
} }
arr.forEach(stringify); arr.forEach(stringify);
return str.trim(); return str.trim();
} }
@ -107,11 +107,11 @@
, build: m[6] , build: m[6]
})) }))
; ;
if (0 === m.length) { if (0 === m.length) {
ver = null; ver = null;
} }
return ver; return ver;
} }
@ -120,7 +120,7 @@
, arr = [] , arr = []
, obj , obj
; ;
while (m = reSemverRange.exec(str)) { while (m = reSemverRange.exec(str)) {
obj = { obj = {
@ -139,7 +139,7 @@
arr.push(new SemVer(pruned(obj))); arr.push(new SemVer(pruned(obj)));
//console.log(m); //console.log(m);
} }
//return new SemVerRange(arr); //return new SemVerRange(arr);
return arr; return arr;
} }

View File

@ -136,6 +136,27 @@ describe('parseRange', function() {
}]); }]);
}); });
it('should parse pre-release versions', function() {
deepOwnEqual(semverutils.parseRange('1.0.0-rc1'), [{
semver: '1.0.0-rc1',
major: '1',
minor: '0',
patch: '0',
release: 'rc1'
}]);
});
it('should parse pre-release versions with hyphens', function() {
deepOwnEqual(semverutils.parseRange('1.0.0-rc-2'), [{
semver: '1.0.0-rc-2',
major: '1',
minor: '0',
patch: '0',
release: 'rc-2'
}]);
});
it('should parse hyphen ranges', function() { it('should parse hyphen ranges', function() {
deepOwnEqual(semverutils.parseRange('1.0.0 - 1.0.x'), [{ deepOwnEqual(semverutils.parseRange('1.0.0 - 1.0.x'), [{
semver: '1.0.0', semver: '1.0.0',