Fixed split.

This commit is contained in:
Felix Kaspar 2023-10-20 02:27:16 +02:00
parent 3fd8833457
commit 0bf8c520aa

View File

@ -7,7 +7,7 @@ import { organizeWaitOperations } from "./public/organizeWaitOperations.js";
export async function * traverseOperations(operations, input) { export async function * traverseOperations(operations, input) {
const waitOperations = organizeWaitOperations(operations); const waitOperations = organizeWaitOperations(operations);
const results = []; let results = [];
for await (const value of nextOperation(operations, input)) { for await (const value of nextOperation(operations, input)) {
yield value; yield value;
} }
@ -16,9 +16,16 @@ export async function * traverseOperations(operations, input) {
// TODO: Pult all nextOperation() in the for await, like for "extract" // TODO: Pult all nextOperation() in the for await, like for "extract"
async function * nextOperation(operations, input) { async function * nextOperation(operations, input) {
if(Array.isArray(operations) && operations.length == 0) { // isEmpty if(Array.isArray(operations) && operations.length == 0) { // isEmpty
console.log("operation done: " + input.fileName); if(Array.isArray(input)) {
results.push(input); console.log("operation done: " + input[0].fileName + "+");
return; results = results.concat(input);
return;
}
else {
console.log("operation done: " + input.fileName);
results.push(input);
return;
}
} }
for (let i = 0; i < operations.length; i++) { for (let i = 0; i < operations.length; i++) {
@ -90,35 +97,42 @@ export async function * traverseOperations(operations, input) {
} }
break; break;
case "split": case "split":
// TODO: When a split goes into another split function and then into a wait function it might break the done condition, as it will count multiple times.
if(Array.isArray(input)) { if(Array.isArray(input)) {
for (let i = 0; i < input.length; i++) { for (let i = 0; i < input.length; i++) {
const splits = await splitPDF(input[i].buffer, operation.values["pagesToSplitAfterArray"]); const splitResult = await splitPDF(input[i].buffer, operation.values["pagesToSplitAfterArray"]);
for (let j = 0; j < splits.length; j++) { const splits = [];
const split = {}; for (let j = 0; j < splitResult.length; j++) {
split.originalFileName = input[i].originalFileName; splits.push({
split.fileName = input[i].fileName + "_split" + j; originalFileName: input[i].originalFileName,
split.buffer = splits[j]; fileName: input[i].fileName + "_split" + j,
split.splitCount = splits.length * input.length; buffer: splitResult[j],
// TODO: When a split goes into another split function and then into a wait function it might break the done condition, as it will count multiplpe times. splitCount: splitResult.length
for await (const value of nextOperation(operation.operations, split)) { })
yield value; }
} console.log(splits);
for await (const value of nextOperation(operation.operations, splits)) {
yield value;
} }
} }
} }
else { else {
const splits = await splitPDF(input.buffer, operation.values["pagesToSplitAfterArray"]); const splitResult = await splitPDF(input.buffer, operation.values["pagesToSplitAfterArray"]);
for (let j = 0; j < splits.length; j++) { const splits = [];
const split = {}; for (let j = 0; j < splitResult.length; j++) {
split.originalFileName = input.originalFileName; splits.push({
split.fileName = input.fileName + "_split" + j; originalFileName: input.originalFileName,
split.buffer = splits[j]; fileName: input.fileName + "_split" + j,
split.splitCount = splits.length; buffer: splitResult[j],
for await (const value of nextOperation(operation.operations, split)) { splitCount: splitResult.length
yield value; })
} }
for await (const value of nextOperation(operation.operations, splits)) {
yield value;
} }
} }
break; break;