# Contains

### Overview

The **Contains Filter Component** checks whether a given input data contains a specified value. If the condition is met, the message is passed through; otherwise, it is filtered out.

### Usage

This component is used to validate if a text, number, or date exists within another dataset, making it useful for conditional processing in workflows.

#### Properties

| Property     | Type     | Description                                                                 |
| ------------ | -------- | --------------------------------------------------------------------------- |
| `sourceData` | `string` | The data to be checked. Can be a string, number, or date.                   |
| `value`      | `string` | The value to check within `sourceData`. The comparison is case-insensitive. |

#### Input Ports

| Port | Description                                        |
| ---- | -------------------------------------------------- |
| `in` | Accepts input data and the value to check against. |

#### Output Ports

| Port          | Description                                                                   |
| ------------- | ----------------------------------------------------------------------------- |
| `contains`    | Emits the message if the `sourceData` contains the specified `value`.         |
| `notContains` | Emits the message if the `sourceData` does not contain the specified `value`. |

#### Processing Logic

1. **Receives Input Data**:
   * Accepts a dataset (`sourceData`) and a search term (`value`).
2. **Checks for Containment**:
   * Converts both `sourceData` and `value` to lowercase for case-insensitive comparison.
   * Checks if `sourceData` contains `value`.
3. **Routes the Message**:
   * If the value is found, the message is passed to the `contains` port.
   * If not, it is passed to the `notContains` port.

#### Output Data Schema

| Property     | Type      | Description                                                     |
| ------------ | --------- | --------------------------------------------------------------- |
| `sourceData` | `string`  | The original data that was checked.                             |
| `value`      | `string`  | The value searched for in `sourceData`.                         |
| `result`     | `boolean` | `true` if `value` was found in `sourceData`, otherwise `false`. |

### Notes

* **Case-Insensitive Matching**: Ensures flexible filtering by ignoring letter case.
* **Supports Various Data Types**: Works with text, numbers, and dates.
* **Ideal for Conditional Filtering**: Useful in workflows requiring selective message passing based on content.

This component is essential for workflows that need to validate whether an input contains specific information before further processing.
