export function subtract()

in modules/core/src/utils/buffer-range.js [85:126]


export function subtract(simpleRange, complexRange) {
  if (!isValid(simpleRange)) {
    return empty();
  }

  const result = [];
  let r1 = simpleRange;

  for (let j = 0; j < complexRange.length; j++) {
    const r2 = complexRange[j];

    if (r1[0] >= r2[1]) {
      //    [   ]
      // [ ]
      continue; // eslint-disable-line
    }
    if (r2[0] >= r1[1]) {
      // [   ]
      //      [ ]
      break;
    }
    if (r2[0] > r1[0]) {
      // [    ]
      //   [   ]
      result.push([r1[0], r2[0]]);
    }
    if (r2[1] < r1[1]) {
      // [    ]
      //   [ ]
      r1 = [r2[1], r1[1]];
    } else {
      // [    ]
      //   [  ]
      r1 = null;
      break;
    }
  }
  if (r1) {
    result.push(r1);
  }
  return result;
}