-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.js
45 lines (37 loc) · 976 Bytes
/
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
var candidates = require("./candidates-list");
// NEW
candidates.exists = function(query) {
return candidates.some(function(c) {
return queryCompare(query, c);
});
};
candidates.where = function(query) {
return candidates.filter(function(c) {
return queryCompare(query, c);
});
};
function queryCompare(query, candidate) {
var isMatch;
for (var prop in query) {
isMatch = (lower(query[prop]) === lower(candidate[prop]));
if (!isMatch) return false;
}
return true;
}
function lower(s) {
if (s.toLowerCase) {
return s.toLowerCase();
}
return s;
}
// LEGACY
candidates._twitterHandles = {};
candidates.forEach(function(c) {
var iHandle = c.twitter.toLowerCase();
this._twitterHandles[iHandle] = true;
}, candidates);
candidates.contains = function(handle) {
var iHandle = handle.toLowerCase();
return !!candidates._twitterHandles[iHandle];
};
module.exports = candidates;