70 lines
2.3 KiB
Python
70 lines
2.3 KiB
Python
class PiePieTextConcatenate:
|
|
@classmethod
|
|
def INPUT_TYPES(s):
|
|
return {
|
|
"required": {
|
|
"delimiter": ([
|
|
"Space",
|
|
"Comma + Space",
|
|
"Comma",
|
|
"Custom"
|
|
], {"default": "Comma + Space"}),
|
|
"newline_after_each": (["No", "Yes"], {"default": "No"}),
|
|
"custom_delimiter": ("STRING", {"default": " | "}),
|
|
},
|
|
"optional": {
|
|
"text1": ("STRING", {"default": "", "multiline": True}),
|
|
"text2": ("STRING", {"default": "", "multiline": True}),
|
|
"text3": ("STRING", {"default": "", "multiline": True}),
|
|
"text4": ("STRING", {"default": "", "multiline": True}),
|
|
"text5": ("STRING", {"default": "", "multiline": True}),
|
|
},
|
|
}
|
|
|
|
RETURN_TYPES = ("STRING",)
|
|
RETURN_NAMES = ("text",)
|
|
FUNCTION = "concatenate_text"
|
|
OUTPUT_NODE = True # This allows it to execute without being connected
|
|
CATEGORY = "PiePieDesign"
|
|
|
|
def concatenate_text(self, delimiter, newline_after_each, custom_delimiter,
|
|
text1="", text2="", text3="", text4="", text5=""):
|
|
|
|
texts = []
|
|
for text in [text1, text2, text3, text4, text5]:
|
|
if text and text.strip():
|
|
texts.append(text)
|
|
|
|
# If nothing was provided, return empty string
|
|
if not texts:
|
|
result = ""
|
|
else:
|
|
|
|
if delimiter == "Space":
|
|
delim = " "
|
|
elif delimiter == "Comma + Space":
|
|
delim = ", "
|
|
elif delimiter == "Comma":
|
|
delim = ","
|
|
else: # Custom
|
|
delim = custom_delimiter if custom_delimiter is not None else " | "
|
|
|
|
if newline_after_each == "Yes":
|
|
delim = delim + "\n"
|
|
|
|
# Join all the texts together
|
|
result = delim.join(texts)
|
|
|
|
return {"ui": {"string": [result]}, "result": (result,)}
|
|
|
|
|
|
NODE_CLASS_MAPPINGS = {
|
|
"PiePieTextConcatenate": PiePieTextConcatenate
|
|
}
|
|
|
|
NODE_DISPLAY_NAME_MAPPINGS = {
|
|
"PiePieTextConcatenate": "PiePie - Text Concatenate"
|
|
}
|
|
|
|
__all__ = ["NODE_CLASS_MAPPINGS", "NODE_DISPLAY_NAME_MAPPINGS"]
|