Repository: ambari Updated Branches: refs/heads/trunk 0a1d66488 -> e465ddad2
AMBARI-9174 Improve compare method of repository versions. (atkach) Project: http://git-wip-us.apache.org/repos/asf/ambari/repo Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/e465ddad Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/e465ddad Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/e465ddad Branch: refs/heads/trunk Commit: e465ddad25787127408c6e511add11157c9f4714 Parents: 0a1d664 Author: Andrii Tkach <[email protected]> Authored: Fri Jan 16 15:32:34 2015 +0200 Committer: Andrii Tkach <[email protected]> Committed: Fri Jan 16 16:16:50 2015 +0200 ---------------------------------------------------------------------- ambari-web/app/utils/string_utils.js | 18 +++++++++--------- ambari-web/test/utils/string_utils_test.js | 3 +++ 2 files changed, 12 insertions(+), 9 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/e465ddad/ambari-web/app/utils/string_utils.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/utils/string_utils.js b/ambari-web/app/utils/string_utils.js index f3a5eeb..7a451bd 100644 --- a/ambari-web/app/utils/string_utils.js +++ b/ambari-web/app/utils/string_utils.js @@ -82,35 +82,35 @@ module.exports = { * @param second {string} * @return {number} */ - compareVersions: function(first, second){ + compareVersions: function (first, second) { if (!(typeof first === 'string' && typeof second === 'string')) { return -1; } if (first === '' || second === '') { return -1; } - var firstNumbers = first.split('.'); - var secondNumbers = second.split('.'); + var firstNumbers = first.split(/[\.-]/); + var secondNumbers = second.split(/[\.-]/); var length = 0; var i = 0; var result = false; - if(firstNumbers.length === secondNumbers.length) { + if (firstNumbers.length === secondNumbers.length) { length = firstNumbers.length; - } else if(firstNumbers.length < secondNumbers.length){ + } else if (firstNumbers.length < secondNumbers.length) { length = secondNumbers.length; } else { length = firstNumbers.length; } - while(i < length && !result){ + while (i < length && !result) { firstNumbers[i] = (firstNumbers[i] === undefined) ? 0 : window.parseInt(firstNumbers[i]); secondNumbers[i] = (secondNumbers[i] === undefined) ? 0 : window.parseInt(secondNumbers[i]); - if(firstNumbers[i] > secondNumbers[i]){ + if (firstNumbers[i] > secondNumbers[i]) { result = 1; break; - } else if(firstNumbers[i] === secondNumbers[i]){ + } else if (firstNumbers[i] === secondNumbers[i]) { result = 0; - } else if(firstNumbers[i] < secondNumbers[i]){ + } else if (firstNumbers[i] < secondNumbers[i]) { result = -1; break; } http://git-wip-us.apache.org/repos/asf/ambari/blob/e465ddad/ambari-web/test/utils/string_utils_test.js ---------------------------------------------------------------------- diff --git a/ambari-web/test/utils/string_utils_test.js b/ambari-web/test/utils/string_utils_test.js index 711915f..625aa75 100644 --- a/ambari-web/test/utils/string_utils_test.js +++ b/ambari-web/test/utils/string_utils_test.js @@ -63,6 +63,9 @@ describe('string_utils', function () { {m: '1.2.1 higher than 1.2', v1:'1.2.1', v2:'1.2', e: 1}, {m: '11.2 higher than 2.2', v1:'11.2', v2:'2.2', e: 1}, {m: '0.9 higher than 0.8', v1:'0.9', v2:'0.8', e: 1}, + {m: '1.1-2 equal to 1.1-2 ', v1:'1.1-2', v2:'1.1-2', e: 0}, + {m: '1.1-2 higher than 1.1-1', v1:'1.1-2', v2:'1.1-1', e: 1}, + {m: '1.1-4 lower than 1.1-46', v1:'1.1-4', v2:'1.1-46', e: -1}, {m: 'return false if no string passed', v1: '0.9', e: -1} ]; tests.forEach(function(test) {
