From cd807107083eaad1db53196219532eae05a7a29d Mon Sep 17 00:00:00 2001 From: Dominik Reh Date: Sun, 29 Jan 2023 00:45:00 +0100 Subject: [PATCH] Implement parser queue --- javascript/_utils.js | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/javascript/_utils.js b/javascript/_utils.js index a36dbb3..08ba55d 100644 --- a/javascript/_utils.js +++ b/javascript/_utils.js @@ -102,14 +102,24 @@ function processQueue(queue, context, ...args) { } } // The same but with return values -function processQueueReturn(queue, context, ...args) +async function processQueueReturn(queue, context, ...args) { - let results = []; + let qeueueReturns = []; for (let i = 0; i < queue.length; i++) { - results.push(queue[i].call(context, ...args)); + qeueueReturns.push(await queue[i].call(context, ...args)); } - return results; + return qeueueReturns; } -function processParsers(textArea, prompt) { - return processQueueReturn(parsers, null, textArea, prompt); +// Specific to tag completion parsers +async function processParsers(textArea, prompt) { + // Get all parsers that have a successful trigger condition + let matchingParsers = parsers.filter(parser => parser.triggerCondition()); + // Guard condition + if (matchingParsers.length === 0) { + return null; + } + + let parseFunctions = matchingParsers.map(parser => parser.parse); + // Process them and return the results + return await processQueueReturn(parseFunctions, null, textArea, prompt); } \ No newline at end of file