You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							165 lines
						
					
					
						
							3.5 KiB
						
					
					
				
			
		
		
	
	
							165 lines
						
					
					
						
							3.5 KiB
						
					
					
				// 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; | 
						|
  } | 
						|
};
 | 
						|
 |