code: function getBlockNodes(nodes) {
    // TODO(perf): update `nodes` instead of creating a new object?
    var node = nodes[0];
    var endNode = nodes[nodes.length - 1];
    var blockNodes;
  
    for (var i = 1; node !== endNode && (node = node.nextSibling); i++) {
      if (blockNodes || nodes[i] !== node) {
        if (!blockNodes) {
          blockNodes = jqLite(slice.call(nodes, 0, i));
        }
        blockNodes.push(node);
      }
    }
  
    return blockNodes || nodes;
  }
docs: Return the DOM siblings between the first and last node in the given array.
  @param {Array} array like object
  @returns {Array} the inputted object or a jqLite collection containing the nodes