mirror of
https://gitlab.com/wgp/dougal/software.git
synced 2025-12-06 12:27:07 +00:00
Add iterators
This commit is contained in:
@@ -503,6 +503,37 @@ class DougalBinaryBundle extends ArrayBuffer {
|
|||||||
return ab;
|
return ab;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
get records () {
|
||||||
|
const data = [];
|
||||||
|
for (const record of this) {
|
||||||
|
data.push(record.slice(1));
|
||||||
|
}
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
|
||||||
|
[Symbol.iterator]() {
|
||||||
|
const chunks = this.chunks();
|
||||||
|
let chunkIndex = 0;
|
||||||
|
let chunkIterator = chunks.length > 0 ? chunks[0][Symbol.iterator]() : null;
|
||||||
|
|
||||||
|
return {
|
||||||
|
next() {
|
||||||
|
if (!chunkIterator) {
|
||||||
|
return { done: true };
|
||||||
|
}
|
||||||
|
|
||||||
|
let result = chunkIterator.next();
|
||||||
|
while (result.done && chunkIndex < chunks.length - 1) {
|
||||||
|
chunkIndex++;
|
||||||
|
chunkIterator = chunks[chunkIndex][Symbol.iterator]();
|
||||||
|
result = chunkIterator.next();
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -707,6 +738,21 @@ class DougalBinaryChunkSequential extends ArrayBuffer {
|
|||||||
|
|
||||||
return arr;
|
return arr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Symbol.iterator]() {
|
||||||
|
let index = 0;
|
||||||
|
const chunk = this;
|
||||||
|
return {
|
||||||
|
next() {
|
||||||
|
if (index < chunk.jCount) {
|
||||||
|
return { value: chunk.getRecord(index++), done: false };
|
||||||
|
} else {
|
||||||
|
return { done: true };
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -901,6 +947,21 @@ class DougalBinaryChunkInterleaved extends ArrayBuffer {
|
|||||||
|
|
||||||
return arr;
|
return arr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Symbol.iterator]() {
|
||||||
|
let index = 0;
|
||||||
|
const chunk = this;
|
||||||
|
return {
|
||||||
|
next() {
|
||||||
|
if (index < chunk.jCount) {
|
||||||
|
return { value: chunk.getRecord(index++), done: false };
|
||||||
|
} else {
|
||||||
|
return { done: true };
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user