Remove extra network separator without regex

This commit is contained in:
zixaphir 2023-09-09 17:22:10 -07:00
parent 78c1a74660
commit d6478a60aa
1 changed files with 11 additions and 10 deletions

View File

@ -140,23 +140,19 @@ function setupExtraNetworks() {
onUiLoaded(setupExtraNetworks); onUiLoaded(setupExtraNetworks);
var re_extranet = /<([^:]+:[^:]+):[\d.]+>(.*)/; var re_extranet = /<([^:^>]+:[^:]+):[\d.]+>(.*)/;
var re_extranet_str = '<([^:]+:[^:]+):[\\d.]+>'; var re_extranet_g = /<([^:^>]+:[^:]+):[\d.]+>/g;
function tryToRemoveExtraNetworkFromPrompt(textarea, text) { function tryToRemoveExtraNetworkFromPrompt(textarea, text) {
function reEscape(s) {
return s.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
}
var m = text.match(re_extranet); var m = text.match(re_extranet);
var replaced = false; var replaced = false;
var newTextareaText; var newTextareaText;
if (m) { if (m) {
var extraTextBeforeNet = opts.extra_networks_add_text_separator;
var extraTextAfterNet = m[2]; var extraTextAfterNet = m[2];
var partToSearch = m[1]; var partToSearch = m[1];
var foundAtPosition = -1; var foundAtPosition = -1;
var escapedSeparator = `(?:${reEscape(opts.extra_networks_add_text_separator)})?`; newTextareaText = textarea.value.replaceAll(re_extranet_g, function(found, net, pos) {
var re = new RegExp(escapedSeparator + re_extranet_str, 'g');
newTextareaText = textarea.value.replaceAll(re, function(found, net, pos) {
m = found.match(re_extranet); m = found.match(re_extranet);
if (m[1] == partToSearch) { if (m[1] == partToSearch) {
replaced = true; replaced = true;
@ -166,9 +162,14 @@ function tryToRemoveExtraNetworkFromPrompt(textarea, text) {
return found; return found;
}); });
if (foundAtPosition >= 0 && newTextareaText.substr(foundAtPosition, extraTextAfterNet.length) == extraTextAfterNet) { if (foundAtPosition >= 0) {
if (newTextareaText.substr(foundAtPosition, extraTextAfterNet.length) == extraTextAfterNet) {
newTextareaText = newTextareaText.substr(0, foundAtPosition) + newTextareaText.substr(foundAtPosition + extraTextAfterNet.length); newTextareaText = newTextareaText.substr(0, foundAtPosition) + newTextareaText.substr(foundAtPosition + extraTextAfterNet.length);
} }
if (newTextareaText.substr(foundAtPosition - extraTextBeforeNet.length, extraTextBeforeNet.length) == extraTextBeforeNet) {
newTextareaText = newTextareaText.substr(0, foundAtPosition - extraTextBeforeNet.length) + newTextareaText.substr(foundAtPosition);
}
}
} else { } else {
newTextareaText = textarea.value.replaceAll(new RegExp(text, "g"), function(found) { newTextareaText = textarea.value.replaceAll(new RegExp(text, "g"), function(found) {
if (found == text) { if (found == text) {