From b4fe4f717abdcd1d07d71834cd7d566caed6f6ff Mon Sep 17 00:00:00 2001 From: Dominik Reh Date: Sat, 11 Feb 2023 13:36:39 +0100 Subject: [PATCH] Extract sanitization / text edit before insertion --- javascript/__globals.js | 1 + javascript/ext_embeddings.js | 12 ++++++++++-- javascript/ext_hypernets.js | 12 ++++++++++-- javascript/ext_loras.js | 12 ++++++++++-- javascript/ext_umi.js | 16 +++++++++++++--- javascript/ext_wildcards.js | 17 +++++++++++++---- javascript/tagAutocomplete.js | 32 ++++++++++++-------------------- 7 files changed, 69 insertions(+), 33 deletions(-) diff --git a/javascript/__globals.js b/javascript/__globals.js index af572be..01ab767 100644 --- a/javascript/__globals.js +++ b/javascript/__globals.js @@ -44,6 +44,7 @@ const QUEUE_AFTER_INSERT = []; const QUEUE_AFTER_SETUP = []; const QUEUE_FILE_LOAD = []; const QUEUE_AFTER_CONFIG_CHANGE = []; +const QUEUE_SANITIZE = []; // List of parsers to try const PARSERS = []; \ No newline at end of file diff --git a/javascript/ext_embeddings.js b/javascript/ext_embeddings.js index 15070b7..409118c 100644 --- a/javascript/ext_embeddings.js +++ b/javascript/ext_embeddings.js @@ -44,7 +44,15 @@ async function load() { } } +function sanitize(tagType, text) { + if (tagType === ResultType.embedding) { + return text.replace(/^.*?: /g, ""); + } + return null; +} + PARSERS.push(new EmbeddingParser(EMB_TRIGGER)); -// Add load function to the queue -QUEUE_FILE_LOAD.push(load); \ No newline at end of file +// Add our utility functions to their respective queues +QUEUE_FILE_LOAD.push(load); +QUEUE_SANITIZE.push(sanitize); \ No newline at end of file diff --git a/javascript/ext_hypernets.js b/javascript/ext_hypernets.js index 9b5dd4c..80787ee 100644 --- a/javascript/ext_hypernets.js +++ b/javascript/ext_hypernets.js @@ -36,7 +36,15 @@ async function load() { } } +function sanitize(tagType, text) { + if (tagType === ResultType.hypernetwork) { + return ``; + } + return null; +} + PARSERS.push(new HypernetParser(HYP_TRIGGER)); -// Add load function to the queue -QUEUE_FILE_LOAD.push(load); \ No newline at end of file +// Add our utility functions to their respective queues +QUEUE_FILE_LOAD.push(load); +QUEUE_SANITIZE.push(sanitize); \ No newline at end of file diff --git a/javascript/ext_loras.js b/javascript/ext_loras.js index a9b7051..3bd67be 100644 --- a/javascript/ext_loras.js +++ b/javascript/ext_loras.js @@ -36,7 +36,15 @@ async function load() { } } +function sanitize(tagType, text) { + if (tagType === ResultType.lora) { + return ``; + } + return null; +} + PARSERS.push(new LoraParser(LORA_TRIGGER)); -// Add load function to the queue -QUEUE_FILE_LOAD.push(load); \ No newline at end of file +// Add our utility functions to their respective queues +QUEUE_FILE_LOAD.push(load); +QUEUE_SANITIZE.push(sanitize); \ No newline at end of file diff --git a/javascript/ext_umi.js b/javascript/ext_umi.js index 9384e97..36a1606 100644 --- a/javascript/ext_umi.js +++ b/javascript/ext_umi.js @@ -223,8 +223,18 @@ async function load() { } } +function sanitize(tagType, text) { + // Replace underscores only if the yaml tag is not using them + if (tagType === ResultType.yamlWildcard && !yamlWildcards.includes(text)) { + return text.replaceAll("_", " "); + } + return null; +} + // Add UMI parser PARSERS.push(new UmiParser(UMI_TRIGGER)); -// Add tag update after insert -QUEUE_AFTER_INSERT.push(updateUmiTags); -QUEUE_FILE_LOAD.push(load); \ No newline at end of file + +// Add our utility functions to their respective queues +QUEUE_FILE_LOAD.push(load); +QUEUE_SANITIZE.push(sanitize); +QUEUE_AFTER_INSERT.push(updateUmiTags); \ No newline at end of file diff --git a/javascript/ext_wildcards.js b/javascript/ext_wildcards.js index b4eae15..a0f7db2 100644 --- a/javascript/ext_wildcards.js +++ b/javascript/ext_wildcards.js @@ -93,6 +93,15 @@ async function load() { } } +function sanitize(tagType, text) { + if (tagType === ResultType.wildcardFile) { + return `__${text}__`; + } else if (tagType === ResultType.wildcardTag) { + return text.replace(/^.*?: /g, ""); + } + return null; +} + function keepOpenIfWildcard(tagType, sanitizedText, newPrompt, textArea) { // If it's a wildcard, we want to keep the results open so the user can select another wildcard if (tagType === ResultType.wildcardFile) { @@ -108,7 +117,7 @@ function keepOpenIfWildcard(tagType, sanitizedText, newPrompt, textArea) { PARSERS.push(new WildcardParser(WC_TRIGGER)); PARSERS.push(new WildcardFileParser(WC_FILE_TRIGGER)); -// Add the keep open function to the queue -QUEUE_AFTER_INSERT.push(keepOpenIfWildcard); -// Add the load function to the queue -QUEUE_FILE_LOAD.push(load); \ No newline at end of file +// Add our utility functions to their respective queues +QUEUE_FILE_LOAD.push(load); +QUEUE_SANITIZE.push(sanitize); +QUEUE_AFTER_INSERT.push(keepOpenIfWildcard); \ No newline at end of file diff --git a/javascript/tagAutocomplete.js b/javascript/tagAutocomplete.js index 4f32f12..59b2c84 100644 --- a/javascript/tagAutocomplete.js +++ b/javascript/tagAutocomplete.js @@ -299,29 +299,21 @@ async function insertTextAtCursor(textArea, result, tagword) { let cursorPos = textArea.selectionStart; var sanitizedText = text - // Replace differently depending on if it's a tag or wildcard - if (tagType === ResultType.wildcardFile) { - sanitizedText = "__" + text.replace("Wildcards: ", "") + "__"; - } else if (tagType === ResultType.wildcardTag) { - sanitizedText = text.replace(/^.*?: /g, ""); - } else if (tagType === ResultType.yamlWildcard && !yamlWildcards.includes(text)) { - sanitizedText = text.replaceAll("_", " "); // Replace underscores only if the yaml tag is not using them - } else if (tagType === ResultType.embedding) { - sanitizedText = `${text.replace(/^.*?: /g, "")}`; - } else if (tagType === ResultType.hypernetwork) { - sanitizedText = ``; - } else if(tagType === ResultType.lora) { - sanitizedText = ``; + // Run sanitize queue and use first result as sanitized text + sanitizeResults = await processQueueReturn(QUEUE_SANITIZE, null, tagType, text); + + if (sanitizeResults && sanitizeResults.length > 0) { + sanitizedText = sanitizeResults[0]; } else { sanitizedText = CFG.replaceUnderscores ? text.replaceAll("_", " ") : text; - } - if (CFG.escapeParentheses && tagType === ResultType.tag) { - sanitizedText = sanitizedText - .replaceAll("(", "\\(") - .replaceAll(")", "\\)") - .replaceAll("[", "\\[") - .replaceAll("]", "\\]"); + if (CFG.escapeParentheses && tagType === ResultType.tag) { + sanitizedText = sanitizedText + .replaceAll("(", "\\(") + .replaceAll(")", "\\)") + .replaceAll("[", "\\[") + .replaceAll("]", "\\]"); + } } var prompt = textArea.value;