69 lines
3.1 KiB
Markdown
69 lines
3.1 KiB
Markdown
# Documentation
|
||
- Class name: StringSelector
|
||
- Category: ImpactPack/Util
|
||
- Output node: False
|
||
- Repo Ref: https://github.com/ltdrdata/ComfyUI-Impact-Pack.git
|
||
|
||
StringSelector节点旨在处理并从给定输入中选择特定的字符串。它可以处理多行字符串,并提供启用或禁用多行处理的选项。该节点的主要目的是根据选择标准提取特定的字符串,为ImpactPack实用程序套件内提供一种多功能的字符串操作方法。
|
||
|
||
# Input types
|
||
## Required
|
||
- strings
|
||
- ‘strings’参数是节点的主要输入,包含要处理的字符串数据。它在节点操作中起着关键作用,因为它是将从中提取选定字符串的来源。多行选项允许处理跨越多行的字符串,增强了节点处理不同字符串格式的多功能性。
|
||
- Comfy dtype: STRING
|
||
- Python dtype: str
|
||
- select
|
||
- ‘select’参数用于指定要从输入中选择的字符串或行的索引。它对于确定输入数据的哪一部分将是节点的输出至关重要。选择索引应用于行或元素的数量的模运算,确保如果它超过可用选项,它将循环。
|
||
- Comfy dtype: INT
|
||
- Python dtype: int
|
||
## Optional
|
||
- multiline
|
||
- ‘multiline’参数决定节点是否应将输入字符串作为单个实体处理,还是作为多行处理。启用时,它允许节点处理带有换行符的字符串,并根据这些行中的内容进行选择。此参数显著影响节点的行为和字符串选择过程的结果。
|
||
- Comfy dtype: BOOLEAN
|
||
- Python dtype: bool
|
||
|
||
# Output types
|
||
- selected_string
|
||
- ‘selected_string’输出代表了基于输入参数选择的字符串。它是节点处理的成果,反映了节点执行的字符串操作的结果。这个输出很重要,因为它是节点操作的最终产品。
|
||
- Comfy dtype: STRING
|
||
- Python dtype: str
|
||
|
||
# Usage tips
|
||
- Infra type: CPU
|
||
|
||
# Source code
|
||
```
|
||
class StringSelector:
|
||
|
||
@classmethod
|
||
def INPUT_TYPES(s):
|
||
return {'required': {'strings': ('STRING', {'multiline': True}), 'multiline': ('BOOLEAN', {'default': False, 'label_on': 'enabled', 'label_off': 'disabled'}), 'select': ('INT', {'min': 0, 'max': sys.maxsize, 'step': 1, 'default': 0})}}
|
||
RETURN_TYPES = ('STRING',)
|
||
FUNCTION = 'doit'
|
||
CATEGORY = 'ImpactPack/Util'
|
||
|
||
def doit(self, strings, multiline, select):
|
||
lines = strings.split('\n')
|
||
if multiline:
|
||
result = []
|
||
current_string = ''
|
||
for line in lines:
|
||
if line.startswith('#'):
|
||
if current_string:
|
||
result.append(current_string.strip())
|
||
current_string = ''
|
||
current_string += line + '\n'
|
||
if current_string:
|
||
result.append(current_string.strip())
|
||
if len(result) == 0:
|
||
selected = strings
|
||
else:
|
||
selected = result[select % len(result)]
|
||
if selected.startswith('#'):
|
||
selected = selected[1:]
|
||
elif len(lines) == 0:
|
||
selected = strings
|
||
else:
|
||
selected = lines[select % len(lines)]
|
||
return (selected,)
|
||
``` |