Merge pull request #41 from athoune/master
filtering against multiple values unified
This commit is contained in:
commit
959fa2587b
|
@ -47,20 +47,14 @@ EqualityFilter.prototype.matches = function(target) {
|
|||
if (typeof(target) !== 'object')
|
||||
throw new TypeError('target (object) required');
|
||||
|
||||
var matches = false;
|
||||
if (target.hasOwnProperty(this.attribute)) {
|
||||
if (Array.isArray(target[this.attribute])) {
|
||||
for (var i = 0; i < target[this.attribute].length; i++) {
|
||||
matches = (this.value === target[this.attribute][i]);
|
||||
if (matches)
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
matches = (this.value === target[this.attribute]);
|
||||
}
|
||||
var value = this.value;
|
||||
return Filter.multi_test(
|
||||
function(v) { return value === v; },
|
||||
target[this.attribute]);
|
||||
}
|
||||
|
||||
return matches;
|
||||
return false;
|
||||
};
|
||||
|
||||
|
||||
|
|
|
@ -48,21 +48,14 @@ GreaterThanEqualsFilter.prototype.matches = function(target) {
|
|||
if (typeof(target) !== 'object')
|
||||
throw new TypeError('target (object) required');
|
||||
|
||||
var matches = false;
|
||||
|
||||
if (target.hasOwnProperty(this.attribute)) {
|
||||
if (Array.isArray(target[this.attribute])) {
|
||||
for (var i = 0; i < target[this.attribute].length; i++) {
|
||||
matches = (this.value <= target[this.attribute][i]);
|
||||
if (matches)
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
matches = (this.value <= target[this.attribute]);
|
||||
}
|
||||
var value = this.value;
|
||||
return Filter.multi_test(
|
||||
function(v) { return value <= v; },
|
||||
target[this.attribute]);
|
||||
}
|
||||
|
||||
return matches;
|
||||
return false;
|
||||
};
|
||||
|
||||
|
||||
|
|
|
@ -48,21 +48,14 @@ LessThanEqualsFilter.prototype.matches = function(target) {
|
|||
if (typeof(target) !== 'object')
|
||||
throw new TypeError('target (object) required');
|
||||
|
||||
var matches = false;
|
||||
if (target.hasOwnProperty(this.attribute)) {
|
||||
if (Array.isArray(target[this.attribute])) {
|
||||
for (var i = 0; i < target[this.attribute].length; i++) {
|
||||
matches = (this.value >= target[this.attribute][i]);
|
||||
if (matches)
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
matches = (this.value >= target[this.attribute]);
|
||||
}
|
||||
var value = this.value;
|
||||
return Filter.multi_test(
|
||||
function(v) { return value >= v; },
|
||||
target[this.attribute]);
|
||||
}
|
||||
|
||||
|
||||
return matches;
|
||||
return false;
|
||||
};
|
||||
|
||||
|
||||
|
|
|
@ -57,6 +57,17 @@ test('match true', function(t) {
|
|||
});
|
||||
|
||||
|
||||
test('match multiple', function(t) {
|
||||
var f = new EqualityFilter({
|
||||
attribute: 'foo',
|
||||
value: 'bar'
|
||||
});
|
||||
t.ok(f);
|
||||
t.ok(f.matches({ foo: ['plop', 'bar'] }));
|
||||
t.end();
|
||||
});
|
||||
|
||||
|
||||
test('match false', function(t) {
|
||||
var f = new EqualityFilter({
|
||||
attribute: 'foo',
|
||||
|
|
|
@ -57,6 +57,16 @@ test('match true', function(t) {
|
|||
});
|
||||
|
||||
|
||||
test('match multiple', function(t) {
|
||||
var f = new GreaterThanEqualsFilter({
|
||||
attribute: 'foo',
|
||||
value: 'bar'
|
||||
});
|
||||
t.ok(f);
|
||||
t.ok(f.matches({ foo: ['beuha', 'baz'] }));
|
||||
t.end();
|
||||
});
|
||||
|
||||
test('match false', function(t) {
|
||||
var f = new GreaterThanEqualsFilter({
|
||||
attribute: 'foo',
|
||||
|
|
|
@ -57,6 +57,17 @@ test('match true', function(t) {
|
|||
});
|
||||
|
||||
|
||||
test('match multiple', function(t) {
|
||||
var f = new LessThanEqualsFilter({
|
||||
attribute: 'foo',
|
||||
value: 'bar'
|
||||
});
|
||||
t.ok(f);
|
||||
t.ok(f.matches({ foo: ['abc', 'beuha'] }));
|
||||
t.end();
|
||||
});
|
||||
|
||||
|
||||
test('match false', function(t) {
|
||||
var f = new LessThanEqualsFilter({
|
||||
attribute: 'foo',
|
||||
|
|
Loading…
Reference in New Issue