Remove   A
last analyzed

Complexity

Total Complexity 5

Size/Duplication

Total Lines 30
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 0

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
wmc 5
lcom 0
cbo 0
dl 0
loc 30
ccs 8
cts 8
cp 1
rs 10
c 0
b 0
f 0

1 Method

Rating   Name   Duplication   Size   Complexity  
B __invoke() 0 20 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