diff --git a/__init__.py b/__init__.py index a9db776..fcf463a 100644 --- a/__init__.py +++ b/__init__.py @@ -1,20 +1,23 @@ from .save_string import SaveString from .print_string import PrintString +from .replace_string import ReplaceString from .tokenizer_vocab import TokenizerVocab from .pick_item_json import PickItemJson NODE_CLASS_MAPPINGS = { - "SaveString": SaveString, - "TokenizerVocab": TokenizerVocab, - "PickItemJson": PickItemJson, - "PrintString": PrintString, + "IW_SaveString": SaveString, + "IW_PrintString": PrintString, + "IW_ReplaceString": ReplaceString, + "IW_TokenizerVocab": TokenizerVocab, + "IW_PickItemJson": PickItemJson, } # A dictionary that contains the friendly/humanly readable titles for the nodes NODE_DISPLAY_NAME_MAPPINGS = { - "SaveString": "IW SaveString", - "TokenizerVocab": "IW TokenizerVocab", - "PickItemJson": "IW PickItemJson", - "PrintString": "IW PrintString", + "IW_SaveString": "IW SaveString", + "IW_TokenizerVocab": "IW TokenizerVocab", + "IW_PickItemJson": "IW PickItemJson", + "IW_PrintString": "IW PrintString", + "IW_ReplaceString": "IW ReplaceString", } diff --git a/pick_item_json.py b/pick_item_json.py index b95dd49..e8b0392 100644 --- a/pick_item_json.py +++ b/pick_item_json.py @@ -10,7 +10,7 @@ class PickItemJson: return { "required": { "pick_value": ("INT",{"defaultInput": True, "default": 0}), - "input": ("STRING",{"defaultInput": True, "default": "", "dynamicPrompts": False}), + "input": ("STRING",{"defaultInput": True, "default": "", "dynamicPrompts": False, "multiline": True}), }, "optional": { }, diff --git a/replace_string.py b/replace_string.py new file mode 100644 index 0000000..f7c7346 --- /dev/null +++ b/replace_string.py @@ -0,0 +1,33 @@ +import os +import json + +class ReplaceString: + def __init__(self): + pass + + @classmethod + def INPUT_TYPES(s): + return { + "required": { + "haystack": ("STRING",{"defaultInput": True, "default": "{}", "multiline": True}), + "needle": ("STRING",{"defaultInput": False, "default": "%REPLACE%", "dynamicPrompts": False}), + "value": ("STRING",{"defaultInput": True, "default": "", "dynamicPrompts": False}), + "input_type": (["json", "verbatim"], {"default": "verbatim"}), + }, + "optional": { + }, + } + + RETURN_TYPES = ("STRING", ) + FUNCTION = "execute" + + CATEGORY = "iw" + + def execute(self, haystack, needle, value, input_type): + if input_type == "json": + z = json.loads(value) + if type(z) is str: + value = z + if type(z) is list: + value = " ".join(z) + return (haystack.replace(needle, value),)