166 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			166 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
// Generated by CoffeeScript 1.6.3
 | 
						|
var array;
 | 
						|
 | 
						|
module.exports = array = {
 | 
						|
  /*
 | 
						|
  	Tries to turn anything into an array.
 | 
						|
  */
 | 
						|
 | 
						|
  from: function(r) {
 | 
						|
    return Array.prototype.slice.call(r);
 | 
						|
  },
 | 
						|
  /*
 | 
						|
  	Clone of an array. Properties will be shallow copies.
 | 
						|
  */
 | 
						|
 | 
						|
  simpleClone: function(a) {
 | 
						|
    return a.slice(0);
 | 
						|
  },
 | 
						|
  shallowEqual: function(a1, a2) {
 | 
						|
    var i, val, _i, _len;
 | 
						|
    if (!(Array.isArray(a1) && Array.isArray(a2) && a1.length === a2.length)) {
 | 
						|
      return false;
 | 
						|
    }
 | 
						|
    for (i = _i = 0, _len = a1.length; _i < _len; i = ++_i) {
 | 
						|
      val = a1[i];
 | 
						|
      if (a2[i] !== val) {
 | 
						|
        return false;
 | 
						|
      }
 | 
						|
    }
 | 
						|
    return true;
 | 
						|
  },
 | 
						|
  pluck: function(a, i) {
 | 
						|
    var index, value, _i, _len;
 | 
						|
    if (a.length < 1) {
 | 
						|
      return a;
 | 
						|
    }
 | 
						|
    for (index = _i = 0, _len = a.length; _i < _len; index = ++_i) {
 | 
						|
      value = a[index];
 | 
						|
      if (index > i) {
 | 
						|
        a[index - 1] = a[index];
 | 
						|
      }
 | 
						|
    }
 | 
						|
    a.length = a.length - 1;
 | 
						|
    return a;
 | 
						|
  },
 | 
						|
  pluckItem: function(a, item) {
 | 
						|
    var index, removed, value, _i, _len;
 | 
						|
    if (a.length < 1) {
 | 
						|
      return a;
 | 
						|
    }
 | 
						|
    removed = 0;
 | 
						|
    for (index = _i = 0, _len = a.length; _i < _len; index = ++_i) {
 | 
						|
      value = a[index];
 | 
						|
      if (value === item) {
 | 
						|
        removed++;
 | 
						|
        continue;
 | 
						|
      }
 | 
						|
      if (removed !== 0) {
 | 
						|
        a[index - removed] = a[index];
 | 
						|
      }
 | 
						|
    }
 | 
						|
    if (removed > 0) {
 | 
						|
      a.length = a.length - removed;
 | 
						|
    }
 | 
						|
    return a;
 | 
						|
  },
 | 
						|
  pluckOneItem: function(a, item) {
 | 
						|
    var index, reached, value, _i, _len;
 | 
						|
    if (a.length < 1) {
 | 
						|
      return a;
 | 
						|
    }
 | 
						|
    reached = false;
 | 
						|
    for (index = _i = 0, _len = a.length; _i < _len; index = ++_i) {
 | 
						|
      value = a[index];
 | 
						|
      if (!reached) {
 | 
						|
        if (value === item) {
 | 
						|
          reached = true;
 | 
						|
          continue;
 | 
						|
        }
 | 
						|
      } else {
 | 
						|
        a[index - 1] = a[index];
 | 
						|
      }
 | 
						|
    }
 | 
						|
    if (reached) {
 | 
						|
      a.length = a.length - 1;
 | 
						|
    }
 | 
						|
    return a;
 | 
						|
  },
 | 
						|
  pluckByCallback: function(a, cb) {
 | 
						|
    var index, removed, value, _i, _len;
 | 
						|
    if (a.length < 1) {
 | 
						|
      return a;
 | 
						|
    }
 | 
						|
    removed = 0;
 | 
						|
    for (index = _i = 0, _len = a.length; _i < _len; index = ++_i) {
 | 
						|
      value = a[index];
 | 
						|
      if (cb(value, index)) {
 | 
						|
        removed++;
 | 
						|
        continue;
 | 
						|
      }
 | 
						|
      if (removed !== 0) {
 | 
						|
        a[index - removed] = a[index];
 | 
						|
      }
 | 
						|
    }
 | 
						|
    if (removed > 0) {
 | 
						|
      a.length = a.length - removed;
 | 
						|
    }
 | 
						|
    return a;
 | 
						|
  },
 | 
						|
  pluckMultiple: function(array, indexesToRemove) {
 | 
						|
    var i, removedSoFar, _i, _len;
 | 
						|
    if (array.length < 1) {
 | 
						|
      return array;
 | 
						|
    }
 | 
						|
    removedSoFar = 0;
 | 
						|
    indexesToRemove.sort();
 | 
						|
    for (_i = 0, _len = indexesToRemove.length; _i < _len; _i++) {
 | 
						|
      i = indexesToRemove[_i];
 | 
						|
      this.pluck(array, i - removedSoFar);
 | 
						|
      removedSoFar++;
 | 
						|
    }
 | 
						|
    return array;
 | 
						|
  },
 | 
						|
  injectByCallback: function(a, toInject, shouldInject) {
 | 
						|
    var i, len, val, valA, valB, _i, _len;
 | 
						|
    valA = null;
 | 
						|
    valB = null;
 | 
						|
    len = a.length;
 | 
						|
    if (len < 1) {
 | 
						|
      a.push(toInject);
 | 
						|
      return a;
 | 
						|
    }
 | 
						|
    for (i = _i = 0, _len = a.length; _i < _len; i = ++_i) {
 | 
						|
      val = a[i];
 | 
						|
      valA = valB;
 | 
						|
      valB = val;
 | 
						|
      if (shouldInject(valA, valB, toInject)) {
 | 
						|
        return a.splice(i, 0, toInject);
 | 
						|
      }
 | 
						|
    }
 | 
						|
    a.push(toInject);
 | 
						|
    return a;
 | 
						|
  },
 | 
						|
  injectInIndex: function(a, index, toInject) {
 | 
						|
    var i, len, toPut, toPutNext;
 | 
						|
    len = a.length;
 | 
						|
    i = index;
 | 
						|
    if (len < 1) {
 | 
						|
      a.push(toInject);
 | 
						|
      return a;
 | 
						|
    }
 | 
						|
    toPut = toInject;
 | 
						|
    toPutNext = null;
 | 
						|
    for(; i <= len; i++){
 | 
						|
 | 
						|
			toPutNext = a[i];
 | 
						|
 | 
						|
			a[i] = toPut;
 | 
						|
 | 
						|
			toPut = toPutNext;
 | 
						|
 | 
						|
		};
 | 
						|
    return null;
 | 
						|
  }
 | 
						|
};
 |