FilteredStringList   A
last analyzed

Complexity

Total Complexity 4

Size/Duplication

Total Lines 34
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 2

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
wmc 4
lcom 1
cbo 2
dl 0
loc 34
ccs 9
cts 9
cp 1
rs 10
c 0
b 0
f 0

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 5 1
A all() 0 8 3
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Funivan\CabbageCore\String\StringList\Filtered;
6
7
use Funivan\CabbageCore\String\StringConstraint\StringConstraintInterface;
8
use Funivan\CabbageCore\String\StringList\StringListInterface;
9
10
class FilteredStringList implements StringListInterface
11
{
12
13
14
    /**
15
     * @var StringConstraintInterface
16
     */
17
    private $constraint;
18
19
    /**
20
     * @var StringListInterface
21
     */
22
    private $original;
23
24
25 1
    public function __construct(StringConstraintInterface $constraint, StringListInterface $original)
26
    {
27 1
        $this->constraint = $constraint;
28 1
        $this->original = $original;
29 1
    }
30
31
32
    /**
33
     * @return string[]|\Generator
34
     */
35 1
    public function all(): \Generator
36
    {
37 1
        foreach ($this->original->all() as $value) {
38 1
            if ($this->constraint->valid($value)) {
39 1
                yield $value;
40
            }
41
        }
42 1
    }
43
}
44