every-combination.js 785 B

12345678910111213141516171819202122232425262728
  1. var shallowClone = require('./clone').shallow;
  2. var MULTIPLEX_SEPARATOR = ',';
  3. function everyCombination(fn, left, right, validator) {
  4. var samePositon = !left.shorthand && !right.shorthand && !left.multiplex && !right.multiplex;
  5. var _left = shallowClone(left);
  6. var _right = shallowClone(right);
  7. for (var i = 0, l = left.value.length; i < l; i++) {
  8. for (var j = 0, m = right.value.length; j < m; j++) {
  9. if (left.value[i][0] == MULTIPLEX_SEPARATOR || right.value[j][0] == MULTIPLEX_SEPARATOR)
  10. continue;
  11. if (samePositon && i != j)
  12. continue;
  13. _left.value = [left.value[i]];
  14. _right.value = [right.value[j]];
  15. if (!fn(_left, _right, validator))
  16. return false;
  17. }
  18. }
  19. return true;
  20. }
  21. module.exports = everyCombination;