@mezzy/collections
Version:
A luxurious user experience framework, developed by your friends at Mezzanine.
114 lines • 3.83 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const is_1 = require("@mezzy/is");
const arrayTools_1 = require("./arrayTools");
class List {
constructor(items) {
this.p_array = [];
if (is_1.default.notEmpty(items)) {
for (let i = 0; i < items.length; i++) {
this.add(items[i]);
}
}
}
static fromArray(array) {
let list = new List();
for (let i = 0; i < array.length; i++) {
list.add(array[i]);
}
return list;
}
get isEmpty() { return this.p_array.length <= 0; }
get size() { return this.p_array.length; }
get first() { return this.p_array[0]; }
get last() { return this.p_array[this.p_array.length]; }
get array() { return this.p_array; }
item(index) {
let item = this.p_array[index];
return is_1.default.notEmpty(item) ? item : null;
}
indexOf(item, fromIndex = 0) { return this.p_array.indexOf(item, fromIndex); }
add(item, index) {
if (is_1.default.empty(index))
index = this.p_array.length;
if (index < 0 || index > this.p_array.length || is_1.default.empty(item))
return;
this.p_array.splice(index, 0, item);
}
append(list) {
if (is_1.default.empty(list))
return;
list.forEach((item) => {
if (is_1.default.notEmpty) {
this.add(item);
return true;
}
else
return false;
});
}
copy() {
let list = new List();
for (let index = 0; index < this.p_array.length; index++) {
list.add(this.p_array[index]);
}
return list;
}
forEach(callback) {
this.p_array.forEach(callback);
}
sort(compareFunction) {
this.p_array.sort(compareFunction);
}
replace(item, index) { this.p_array.splice(index, 1, item); }
search(item, equalsFunction) {
if (is_1.default.empty(equalsFunction))
equalsFunction = (a, b) => { return a === b; };
if (is_1.default.empty(item))
return -1;
for (let index = 0; index < this.p_array.length; index++) {
if (equalsFunction(this.p_array[index], item))
return index;
}
return -1;
}
has(item) { return (this.p_array.indexOf(item) >= 0); }
delete(item, equalsFunction) {
if (is_1.default.empty(equalsFunction))
equalsFunction = (a, b) => { return a === b; };
if (this.p_array.length < 1 || is_1.default.empty(item))
return false;
for (let index = 0; index < this.p_array.length; index++) {
if (equalsFunction(this.p_array[index], item)) {
this.p_array.splice(index, 1);
return true;
}
}
return false;
}
deleteAtIndex(index) {
if (index < 0 || index >= this.p_array.length)
return undefined;
let item = this.p_array[index];
this.p_array.splice(index, 1);
return item;
}
clear() { this.p_array.splice(0, this.p_array.length); }
equals(other, equalsFunction) {
if (is_1.default.empty(equalsFunction))
equalsFunction = (a, b) => { return a === b; };
if (!(other instanceof List))
return false;
if (this.size !== other.size)
return false;
for (let index = 0; index < this.p_array.length; index++) {
if (!equalsFunction(this.p_array[index], other.array[index]))
return false;
}
return true;
}
toString() { return arrayTools_1.default.toString(this.copy().array); }
}
exports.List = List;
exports.default = List;
//# sourceMappingURL=list.js.map