// Copyright 2015 The Vanadium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

var _ = require('lodash');

module.exports = sortedPush;

/*
 * sortedPush can be used to push an item to a sorted array without messing up
 * the ordering. It uses binary search to find the index to insert, so it is
 * faster than re-sorting on every push or using indexOf. It also supports
 * custom sorter functions or string sorters that specify a property on the
 * item to sort based on.
 *
 * @param {mercury.array} obsArray Observable array to push item to.
 * @param {object} item Item to push to array. Can be observable itself.
 * @sorter {string|function} if provided, it will be used to compute the sort
 * ranking of each item, including the item you pass. The sorter may also be the
 * string name of the property to sort by
 */
function sortedPush(obsArray, item, sorter) {
  var valueList = obsArray();
  // If item is an observable itself, get its value
  var valueItem = item;
  if( typeof item === 'function' ) {
    valueItem = item();
  }
  var sortedIndex = _.sortedIndex(valueList, valueItem, sorter);
  obsArray.splice(sortedIndex, 0, item);
}