UNPKG

908 BJavaScriptView Raw
1
2
3
4!function(exports) {
5 var splitRe = /[-+_.,]+/
6 , opRe = /^[<>]=?/
7 , letters = "dabr#p"
8
9 exports.versionDiff = versionDiff
10 exports.versionMatch = versionMatch
11
12 function toNum(n) {
13 return n ? (isNaN(n) ? letters.indexOf(n.charAt(0).toLowerCase()) - 6 : +n) : 0
14 }
15
16 function versionDiff(v1, v2) {
17 v1 = ("" + v1).split(splitRe)
18 v2 = ("" + v2).split(splitRe)
19 var diff = v1.length
20 , i = v2.length
21 , len = diff < i ? i : diff
22
23 for (i = diff = 0; i < len; i++) if (v1[i] != "x" && v2[i] != "x") {
24 if (diff = toNum(v1[i]) - toNum(v2[i])) {
25 return diff > 0 ? 1 : -1
26 }
27 }
28 return 0
29 }
30
31 function versionMatch(actual, expected) {
32 var op = expected.match(opRe)
33 , diff = versionDiff(actual, op ? expected.slice(op[0].length) : expected)
34
35 return(
36 op == "<" ? diff < 0 :
37 op == ">" ? diff > 0 :
38 op == "<=" ? diff <= 0 :
39 op == ">=" ? diff >= 0 :
40 !diff
41 )
42 }
43}(this)
44
45
46