165 lines
3.5 KiB
JavaScript
165 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;
|
|
}
|
|
};
|