You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
29 lines
785 B
JavaScript
29 lines
785 B
JavaScript
6 years ago
|
var shallowClone = require('./clone').shallow;
|
||
|
|
||
|
var MULTIPLEX_SEPARATOR = ',';
|
||
|
|
||
|
function everyCombination(fn, left, right, validator) {
|
||
|
var samePositon = !left.shorthand && !right.shorthand && !left.multiplex && !right.multiplex;
|
||
|
var _left = shallowClone(left);
|
||
|
var _right = shallowClone(right);
|
||
|
|
||
|
for (var i = 0, l = left.value.length; i < l; i++) {
|
||
|
for (var j = 0, m = right.value.length; j < m; j++) {
|
||
|
if (left.value[i][0] == MULTIPLEX_SEPARATOR || right.value[j][0] == MULTIPLEX_SEPARATOR)
|
||
|
continue;
|
||
|
|
||
|
if (samePositon && i != j)
|
||
|
continue;
|
||
|
|
||
|
_left.value = [left.value[i]];
|
||
|
_right.value = [right.value[j]];
|
||
|
if (!fn(_left, _right, validator))
|
||
|
return false;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return true;
|
||
|
}
|
||
|
|
||
|
module.exports = everyCombination;
|