Tai Truong
fix readme
d202ada
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 ""