/**
 * @license
 * Copyright (C) 2020 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

/** @enum {string} */
export const DiffSide = {
  LEFT: 'left',
  RIGHT: 'right',
};

/**
 * Compare two ranges. Either argument may be falsy, but will only return
 * true if both are falsy or if neither are falsy and have the same position
 * values.
 *
 * @param {Range=} a range 1
 * @param {Range=} b range 2
 * @return {boolean}
 */
export function rangesEqual(a, b) {
  if (!a && !b) { return true; }
  if (!a || !b) { return false; }
  return a.start_line === b.start_line &&
      a.start_character === b.start_character &&
      a.end_line === b.end_line &&
      a.end_character === b.end_character;
}
