Files
Bjornulf_custom_nodes/show_stuff.py
justumen 038842e80e 0.61
2024-11-27 14:37:10 +01:00

144 lines
4.3 KiB
Python

class ShowInt:
@classmethod
def INPUT_TYPES(cls):
return {
"required": {
"INT": ("INT", {"default": 0, "forceInput": True}),
},
}
RETURN_TYPES = ()
FUNCTION = "show_int"
OUTPUT_NODE = True
INPUT_IS_LIST = (True,)
CATEGORY = "Bjornulf"
def detect_type(self, value):
return 'integer'
def show_int(self, INT):
type_info = [f"{value}" for value in INT]
return {"ui": {"text": type_info}}
class ShowFloat:
@classmethod
def INPUT_TYPES(cls):
return {
"required": {
"FLOAT": ("FLOAT", {"default": 0.0, "forceInput": True}),
},
}
RETURN_TYPES = ()
FUNCTION = "show_float"
OUTPUT_NODE = True
INPUT_IS_LIST = (True,)
CATEGORY = "Bjornulf"
def detect_type(self, value):
return 'float'
def show_float(self, FLOAT):
type_info = [f"{value}" for value in FLOAT]
return {"ui": {"text": type_info}}
class ShowStringText:
@classmethod
def INPUT_TYPES(cls):
return {
"required": {
"STRING": ("STRING", {"default": "", "forceInput": True}),
},
}
RETURN_TYPES = ()
FUNCTION = "show_string"
OUTPUT_NODE = True
INPUT_IS_LIST = (True,)
CATEGORY = "Bjornulf"
def detect_type(self, value):
if isinstance(value, int):
return 'integer'
elif isinstance(value, float):
# Check if it has a decimal part
if value % 1 == 0:
return 'float' if str(value).endswith('.0') else 'integer'
return 'float'
elif isinstance(value, str):
try:
float_val = float(value)
if '.' in value:
return 'float string'
if float_val.is_integer():
return 'integer string'
return 'float string'
except ValueError:
return 'normal string'
else:
return 'other type'
def show_string(self, STRING):
type_info = [f"{value}" for value in STRING]
return {"ui": {"text": type_info}}
class ShowJson:
@classmethod
def INPUT_TYPES(cls):
return {
"required": {
"STRING": ("STRING", {"default": "", "forceInput": True}),
},
}
RETURN_TYPES = ()
FUNCTION = "show_json"
OUTPUT_NODE = True
INPUT_IS_LIST = (True,)
CATEGORY = "Bjornulf"
def detect_type(self, value):
if isinstance(value, int):
return 'integer'
elif isinstance(value, float):
if value % 1 == 0:
return 'float' if str(value).endswith('.0') else 'integer'
return 'float'
elif isinstance(value, str):
try:
float_val = float(value)
if '.' in value:
return 'float string'
if float_val.is_integer():
return 'integer string'
return 'float string'
except ValueError:
return 'normal string'
else:
return 'other type'
def show_json(self, STRING):
import json
try:
# Join all characters into a single string
full_string = "".join(STRING)
try:
# Parse JSON
parsed_json = json.loads(full_string)
# Format JSON with proper indentation and Unicode support
formatted_json = json.dumps(
parsed_json,
indent=2, # You can adjust this number for different indentation levels
ensure_ascii=False,
sort_keys=True # Optional: sorts keys alphabetically
)
# Add newlines for better readability
formatted_json = f"\n{formatted_json}\n"
# Return as a single-element list
return {"ui": {"text": [formatted_json]}}
except json.JSONDecodeError as e:
# If not valid JSON, return error message
return {"ui": {"text": [f"Invalid JSON: {str(e)}\nOriginal string:\n{full_string}"]}}
except Exception as e:
return {"ui": {"text": [f"Error processing string: {str(e)}"]}}