master
1function (a, b, comperator) {
2 var lib = LIBRARY;
3 var i, result;
4
5 // add compare two elements
6 if (!l.is_def(comperator)) {
7 return a < b ? -1 : a > b ? 1 : 0;
8 } else if (l.is_func(comperator)) {
9 return comperator(a, b);
10 } else if (l.is_int(comperator)) {
11 return sign(comperator) * lib.cmp(a[abs(comperator)], b[abs(comperator)]);
12 } else if (l.is_str(comperator)) {
13// var [_, sign, key] = comperator.match(/([+-]?)(.*)/);
14 var match = comperator.match(/([+-]?)(.*)/);
15 key = match[2];
16 var multiplicator = match[1] == "-" ? -1 : 1;
17 return multiplicator * lib.cmp(a[key], b[key]);
18 } else if (l.is_arr(comperator)) {
19 result = 0;
20 for (i in comperator) {
21 result = lib.cmp(a, b, comperator[i]);
22 if (0 !== result) break;
23 }
24 return result;
25 } else if (l.is_obj(comperator)) {
26 result = 0;
27 for (i in comperator) {
28 result = lib.cmp(a[i], b[i], comperator[i]);
29 if (0 !== result) break;
30 }
31 return result;
32 }
33 return 0;
34}