mirror of
https://github.com/Respect/Validation.git
synced 2026-03-16 15:25:45 +01:00
I ran the `bin/console spdx --fix` with different strategies for different files. For most of the core classes, since they've been drastically rebuilt, I've run it with the `git-blame` strategy, for for the `src/Validators`, in which the API changed completely but the logic remains the same, I use the `git-log` strategy.
60 lines
1.5 KiB
PHP
60 lines
1.5 KiB
PHP
<?php
|
|
|
|
/*
|
|
* SPDX-License-Identifier: MIT
|
|
* SPDX-FileCopyrightText: (c) Respect Project Contributors
|
|
* SPDX-FileContributor: Alexandre Gomes Gaigalas <alganet@gmail.com>
|
|
* SPDX-FileContributor: Henrique Moody <henriquemoody@gmail.com>
|
|
*/
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace Respect\Validation\Test;
|
|
|
|
use ArrayIterator;
|
|
use IteratorAggregate;
|
|
use Traversable;
|
|
|
|
use function array_filter;
|
|
use function array_intersect;
|
|
use function array_map;
|
|
|
|
/** @implements IteratorAggregate<array<array{mixed}>> */
|
|
final class DataProvider implements IteratorAggregate
|
|
{
|
|
/** @param array<mixed> $data */
|
|
public function __construct(
|
|
private readonly array $data,
|
|
) {
|
|
}
|
|
|
|
public function with(string ...$tags): self
|
|
{
|
|
return new self(array_filter(
|
|
$this->data,
|
|
static fn($value) => array_intersect($tags, $value['tags']) === $tags,
|
|
));
|
|
}
|
|
|
|
public function withAny(string ...$tags): self
|
|
{
|
|
return new self(array_filter(
|
|
$this->data,
|
|
static fn($value) => array_intersect($tags, $value['tags']) !== [],
|
|
));
|
|
}
|
|
|
|
public function without(string ...$tags): self
|
|
{
|
|
return new self(array_filter(
|
|
$this->data,
|
|
static fn($value) => array_intersect($tags, $value['tags']) === [],
|
|
));
|
|
}
|
|
|
|
/** @return Traversable<array<mixed>> */
|
|
public function getIterator(): Traversable
|
|
{
|
|
return new ArrayIterator(array_map(static fn(array $value) => $value['value'], $this->data));
|
|
}
|
|
}
|