@dooboostore/dom-render
Version:
html view template engine
87 lines (86 loc) • 2.02 kB
JavaScript
class Appender {
constructor(...defaultDatas) {
this.length = 0;
this.keyMap = /* @__PURE__ */ new Map();
this.isAppender = true;
this.push(...defaultDatas);
}
[Symbol.iterator]() {
const items = this.getAll();
let idx = 0;
return {
next(value) {
let r = { value: void 0, done: true };
if (items.length > idx) {
r = { value: items[idx], done: false };
}
idx++;
return r;
}
};
}
get(key) {
const o = this.keyMap.get(key);
if (o !== void 0) {
return this[o];
}
return void 0;
}
set(key, ...v) {
const o = this.keyMap.get(key);
if (o !== void 0) {
this[o] = v;
} else {
this.keyMap.set(key, this.length);
this.push(...v);
}
}
delete(key) {
const o = this.keyMap.get(key);
if (o !== void 0) {
this[o] = this[o].map((it) => void 0);
this.keyMap.delete(key);
}
}
getAll() {
return this.getAlls().flat();
}
getAlls() {
const map = Array.from({ length: this.length }).filter((it, idx) => this[idx]).map((it, idx) => this[idx]);
return map;
}
push(...items) {
if (items && items.length > 0) {
items.index = this.length;
this[this.length++] = items;
}
}
// delete(idx: number): void {
// // if (idx in this) {
// // console.log('---------dele',idx)
// // delete this[idx];
// // this.length = this.length - 1;
// // }
// this.length = this.length - 1;
// }
// 인덱스 접근을 위한 getter와 setter 추가
// get(index: number): T | undefined {
// return this.storage[index];
// }
//
// set(index: number, value: T): void {
// this.storage[index] = value;
// this.length = Math.max(this.length, index + 1);
// }
clear() {
for (let i = 0; i < this.length; i++) {
delete this[i];
}
this.keyMap.clear();
this.length = 0;
}
}
export {
Appender
};
//# sourceMappingURL=Appender.js.map