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;
 | |
|   }
 | |
| };
 |