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 🐍", | |
| } | |