run method

  1. @override
MatchUseCaseResult<T> run()
override

Применяет текущие матчеры.

Проходится по данным и проверяет проходит ли объект матчеры. Ничего не делает, если список данных пустой.

Implementation

@override
MatchUseCaseResult<T> run() {
  final enabledMatchers = matchers.where((e) => e.isEnabled);

  if (data.isNotEmpty && enabledMatchers.isNotEmpty) {
    final newFilteredData = <T>{};
    for (final item in data) {
      final isMatch = _isPassingMatchers(
        value: item,
        matchers: enabledMatchers,
      );
      if (isMatch) {
        newFilteredData.add(item);
      }
    }
    return MatchUseCaseResult(
      originalData: data,
      matchedData: newFilteredData,
      appliedMatchers: enabledMatchers,
    );
  }
  return MatchUseCaseResult(
    originalData: data,
    matchedData: data,
    appliedMatchers: const [],
  );
}