Remove::__invoke()   B
last analyzed

Complexity

Conditions 5
Paths 7

Size

Total Lines 20
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 8
CRAP Score 5

Importance

Changes 0
Metric Value
dl 0
loc 20
ccs 8
cts 8
cp 1
rs 8.8571
c 0
b 0
f 0
cc 5
eloc 8
nc 7
nop 2
crap 5
1
<?php
2
3
namespace Vine\Commands;
4
5
use Vine\Node;
6
use Vine\NodeCollection;
7
8
class Remove
9
{
10
    /**
11
     * Return collection of removed nodes?
12
     *
13
     * @param NodeCollection $nodeCollection
14
     * @param Node[] $nodes
15
     * @return NodeCollection
16
     */
17 36
    public function __invoke(NodeCollection $nodeCollection, Node ...$nodes): NodeCollection
18
    {
19 36
        foreach($nodeCollection as $k => $node)
20
        {
21 36
            foreach($nodes as $removeNode)
22
            {
23 36
                if($node->equals($removeNode))
24
                {
25 36
                    unset($nodeCollection[$k]);
26
                }
27
            }
28
29 36
            if(!$node->children()->isEmpty())
30
            {
31 27
                $this->__invoke($node->children(), ...$nodes);
32
            }
33
        }
34
35 36
        return $nodeCollection;
36
    }
37
}
38