compare-versions
Advanced tools
Comparing version 1.0.0 to 1.1.0
48
index.js
@@ -12,26 +12,36 @@ (function (root, factory) { | ||
var patchPattern = /-([\w-.]+)/; | ||
function split(v) { | ||
var temp = v.split('.'); | ||
var arr = temp.splice(0, 2); | ||
arr.push(temp.join('.')); | ||
return arr; | ||
} | ||
return function compareVersions(v1, v2) { | ||
var s1 = v1.split('.'); | ||
var s2 = v2.split('.'); | ||
if (s1.length < s2.length) { | ||
for (var i = s1.length; i < s2.length; i++) { | ||
s1[i] = '0'; | ||
var s1 = split(v1); | ||
var s2 = split(v2); | ||
for (var i = 0; i < 3; i++) { | ||
var n1 = parseInt(s1[i] || 0); | ||
var n2 = parseInt(s2[i] || 0); | ||
if (n1 > n2) return 1; | ||
if (n2 > n1) return -1; | ||
if (i === 2 && (s1[i] + s2[i]).indexOf('-') > -1) { | ||
var p1 = (patchPattern.exec(s1[i]) || [''])[0]; | ||
var p2 = (patchPattern.exec(s2[i]) || [''])[0]; | ||
if (p1 === '') return 1; | ||
if (p2 === '') return -1; | ||
if (p1 > p2) return 1; | ||
if (p2 > p1) return -1; | ||
} | ||
} | ||
if (s2.length < s1.length) { | ||
for (var j = s2.length; j < s1.length; j++) { | ||
s2[j] = '0'; | ||
} | ||
} | ||
for (var k = 0; k < s1.length; ++k) { | ||
if (Number(s1[k]) > Number(s2[k])) { | ||
return 1; | ||
} | ||
if (Number(s1[k]) < Number(s2[k])) { | ||
return -1; | ||
} | ||
} | ||
return 0; | ||
} | ||
}; | ||
})); |
{ | ||
"name": "compare-versions", | ||
"version": "1.0.0", | ||
"version": "1.1.0", | ||
"description": "Compare semver version strings to find which is greater, equal or lesser.", | ||
@@ -5,0 +5,0 @@ "main": "index.js", |
@@ -26,2 +26,19 @@ var assert = require('assert'); | ||
it('should compare pre-release versions', function () { | ||
assert.equal(compare('1.0.0-alpha.1', '1.0.0-alpha'), 1); | ||
assert.equal(compare('1.0.0-alpha', '1.0.0-alpha'), 0); | ||
assert.equal(compare('1.0.0-alpha', '1.0.0-alpha.beta'), -1); | ||
assert.equal(compare('1.0.0-alpha', '1.0.0-beta'), -1); | ||
}); | ||
it('should give precendece to normal versions over pre-release', function () { | ||
assert.equal(compare('1.0.0', '1.0.0-alpha'), 1); | ||
assert.equal(compare('1.0.0-beta', '1'), -1); | ||
}); | ||
it('should ignore build metadata', function () { | ||
assert.equal(compare('1.4.0-build.3928', '1.4.0-build.3928+sha.a8d9d4f'), 0); | ||
assert.equal(compare('1.4.0-build.3928+sha.b8dbdb0', '1.4.0-build.3928+sha.a8d9d4f'), 0); | ||
}); | ||
it('should sort versions', function () { | ||
@@ -28,0 +45,0 @@ var versions = [ |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
7082
124