run method

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

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

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

Implementation

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

  if (data.isEmpty) {
    return MatchUseCaseResult(
      originalData: data,
      matchedData: data,
      appliedMatchers: enabledMatchers,
    );
  }

  if (enabledMatchers.isEmpty) {
    return MatchUseCaseResult(
      originalData: data,
      matchedData: data,
      appliedMatchers: const [],
    );
  }

  final newFilteredData = <T>{};
  for (final item in data) {
    if (_isPassingMatchers(value: item, matchers: enabledMatchers)) {
      newFilteredData.add(item);
    }
  }

  return MatchUseCaseResult(
    originalData: data,
    matchedData: newFilteredData,
    appliedMatchers: enabledMatchers,
  );
}