/
index.js
72 lines (60 loc) · 1.29 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
function any() {
return true;
}
function equalTo(a, b) {
/*jshint eqeqeq:false */
// Yes, I know what I'm doing.
return a == b;
}
function notEqualTo(a, b) {
/*jshint eqeqeq:false */
// Yes, I'm doing this on purpose.
return a != b;
}
function lessThan(a, b) {
return a < b;
}
function greaterThan(a, b) {
return a > b;
}
function lessThanOrEqualTo(a, b) {
return a <= b;
}
function greaterThanOrEqualTo(a, b) {
return a >= b;
}
exports.buildFilters = function (filterObject) {
var f = [];
for (var k in filterObject) {
if (filterObject.hasOwnProperty(k)) {
var prop = k;
var comp = equalTo;
var val = filterObject[k];
if (k === 'any') {
prop = '';
comp = any;
val = true;
}
if (typeof val === 'string') {
if (val.indexOf('>=') === 0) {
comp = greaterThanOrEqualTo;
val = val.substring(2);
} else if (val.indexOf('<=') === 0) {
comp = lessThanOrEqualTo;
val = val.substring(2);
} else if (val.indexOf('>') === 0) {
comp = greaterThan;
val = val.substring(1);
} else if (val.indexOf('<') === 0) {
comp = lessThan;
val = val.substring(1);
} else if (val.indexOf('!=') === 0) {
comp = notEqualTo;
val = val.substring(2);
}
}
f.push({ prop: prop, comp: comp, val: val });
}
}
return f;
};