litejs
Version:
Single-page application framework
47 lines (34 loc) • 908 B
JavaScript
!function(exports) {
var splitRe = /[-+_.,]+/
, opRe = /^[<>]=?/
, letters = "dabr#p"
exports.versionDiff = versionDiff
exports.versionMatch = versionMatch
function toNum(n) {
return n ? (isNaN(n) ? letters.indexOf(n.charAt(0).toLowerCase()) - 6 : +n) : 0
}
function versionDiff(v1, v2) {
v1 = ("" + v1).split(splitRe)
v2 = ("" + v2).split(splitRe)
var diff = v1.length
, i = v2.length
, len = diff < i ? i : diff
for (i = diff = 0; i < len; i++) if (v1[i] != "x" && v2[i] != "x") {
if (diff = toNum(v1[i]) - toNum(v2[i])) {
return diff > 0 ? 1 : -1
}
}
return 0
}
function versionMatch(actual, expected) {
var op = expected.match(opRe)
, diff = versionDiff(actual, op ? expected.slice(op[0].length) : expected)
return(
op == "<" ? diff < 0 :
op == ">" ? diff > 0 :
op == "<=" ? diff <= 0 :
op == ">=" ? diff >= 0 :
!diff
)
}
}(this)