master
Raw Download raw file
 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}