Spaces:
Running
Running
from langflow.custom import Component | |
from langflow.field_typing import Text | |
from langflow.io import BoolInput, DropdownInput, MessageTextInput, Output | |
class SelectivePassThroughComponent(Component): | |
display_name = "Selective Pass Through" | |
description = "Passes the specified value if a specified condition is met." | |
icon = "filter" | |
name = "SelectivePassThrough" | |
inputs = [ | |
MessageTextInput( | |
name="input_value", | |
display_name="Input Value", | |
info="The primary input value to evaluate.", | |
), | |
MessageTextInput( | |
name="comparison_value", | |
display_name="Comparison Value", | |
info="The value to compare against the input value.", | |
), | |
DropdownInput( | |
name="operator", | |
display_name="Operator", | |
options=["equals", "not equals", "contains", "starts with", "ends with"], | |
info="Condition to evaluate the input value.", | |
), | |
MessageTextInput( | |
name="value_to_pass", | |
display_name="Value to Pass", | |
info="The value to pass if the condition is met.", | |
), | |
BoolInput( | |
name="case_sensitive", | |
display_name="Case Sensitive", | |
info="If true, the comparison will be case sensitive.", | |
value=False, | |
advanced=True, | |
), | |
] | |
outputs = [ | |
Output(display_name="Passed Output", name="passed_output", method="pass_through"), | |
] | |
def evaluate_condition( | |
self, input_value: str, comparison_value: str, operator: str, *, case_sensitive: bool | |
) -> bool: | |
if not case_sensitive: | |
input_value = input_value.lower() | |
comparison_value = comparison_value.lower() | |
if operator == "equals": | |
return input_value == comparison_value | |
if operator == "not equals": | |
return input_value != comparison_value | |
if operator == "contains": | |
return comparison_value in input_value | |
if operator == "starts with": | |
return input_value.startswith(comparison_value) | |
if operator == "ends with": | |
return input_value.endswith(comparison_value) | |
return False | |
def pass_through(self) -> Text: | |
input_value = self.input_value | |
comparison_value = self.comparison_value | |
operator = self.operator | |
value_to_pass = self.value_to_pass | |
case_sensitive = self.case_sensitive | |
if self.evaluate_condition(input_value, comparison_value, operator, case_sensitive=case_sensitive): | |
self.status = value_to_pass | |
return value_to_pass | |
self.status = "" | |
return "" | |