Created
June 28, 2016 11:08
-
-
Save nikitaeverywhere/7f79837f3d46dd9cc70a9ffe68e416b8 to your computer and use it in GitHub Desktop.
JavaScript: compare semantic versions
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* Semantic versioning versions compare. | |
* @param {string} high | |
* @param {string} low | |
* @returns {boolean} | |
* @author ZitRo ([email protected]) | |
* @license MIT http://www.opensource.org/licenses/mit-license.php | |
*/ | |
function versionGT (high, low) { | |
let v1 = high.split(/[\-\.]/g), | |
v2 = low.split(/[\-\.]/g); | |
for (let i = 0; i < v1.length; i++) { | |
if (isNaN(+v1[i]) || isNaN(+v2[i])) { | |
if (v1[i] > v2[i]) | |
return true; | |
else if (v1[i] < v2[i]) | |
return false; | |
} else { | |
if (+v1[i] > +v2[i]) | |
return true; | |
else if (+v1[i] < +v2[i]) | |
return false; | |
} | |
} | |
return v2.length > v1.length; | |
} | |
// TEST cases: | |
// versionGT("1.0.4", "2.0.0") === false | |
// versionGT("2.0.4", "2.0.0") === true | |
// versionGT("2.1.0", "2.0.6") === true | |
// versionGT("2.0.0", "2.0.0-alpha.1") === true | |
// versionGT("2.0.0-beta.1", "2.0.0-alpha.1") === true | |
// versionGT("2.0.0-alpha.16", "2.0.0-beta.20") === false | |
// versionGT("2.0.0", "2.0.0-beta.20") === true |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment