Spaces:
Running
on
Zero
Running
on
Zero
import re | |
class StringFunction: | |
def INPUT_TYPES(s): | |
return { | |
"required": { | |
"action": (["append", "replace"], {}), | |
"tidy_tags": (["yes", "no"], {}), | |
}, | |
"optional": { | |
"text_a": ("STRING", {"multiline": True, "dynamicPrompts": False}), | |
"text_b": ("STRING", {"multiline": True, "dynamicPrompts": False}), | |
"text_c": ("STRING", {"multiline": True, "dynamicPrompts": False}) | |
} | |
} | |
RETURN_TYPES = ("STRING",) | |
FUNCTION = "exec" | |
CATEGORY = "utils" | |
OUTPUT_NODE = True | |
def exec(self, action, tidy_tags, text_a="", text_b="", text_c=""): | |
tidy_tags = tidy_tags == "yes" | |
out = "" | |
if action == "append": | |
out = (", " if tidy_tags else "").join(filter(None, [text_a, text_b, text_c])) | |
else: | |
if text_c is None: | |
text_c = "" | |
if text_b.startswith("/") and text_b.endswith("/"): | |
regex = text_b[1:-1] | |
out = re.sub(regex, text_c, text_a) | |
else: | |
out = text_a.replace(text_b, text_c) | |
if tidy_tags: | |
out = re.sub(r"\s{2,}", " ", out) | |
out = out.replace(" ,", ",") | |
out = re.sub(r",{2,}", ",", out) | |
out = out.strip() | |
return {"ui": {"text": (out,)}, "result": (out,)} | |
NODE_CLASS_MAPPINGS = { | |
"StringFunction|pysssss": StringFunction, | |
} | |
NODE_DISPLAY_NAME_MAPPINGS = { | |
"StringFunction|pysssss": "String Function 🐍", | |
} | |