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