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 |
|