Completed
Push — master ( aac029...31bfbf )
by Iman
03:02
created

RouterEventManager   A

Complexity

Total Complexity 9

Size/Duplication

Total Lines 59
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
eloc 18
dl 0
loc 59
ccs 19
cts 19
cp 1
rs 10
c 0
b 0
f 0
wmc 9

4 Methods

Rating   Name   Duplication   Size   Complexity  
A startGuarding() 0 4 2
A findMatchingCallbacks() 0 12 4
A wrapCallbacksForIgnore() 0 9 2
A init() 0 5 1
1
<?php
2
3
namespace Imanghafoori\HeyMan\WatchingStrategies;
4
5
use Illuminate\Support\Str;
6
7
class RouterEventManager
8
{
9
    private $routeInfo;
10
11
    private $all = [];
12
13 44
    public function findMatchingCallbacks($matchedRoute)
14
    {
15 44
        $output = [];
16 44
        foreach ($this->all as $routeInfo => $callBacks) {
17 43
            foreach ($matchedRoute as $info) {
18 43
                if (Str::is($routeInfo, $info)) {
19 43
                    $output[] = $this->wrapCallbacksForIgnore($callBacks);
20
                }
21
            }
22
        }
23
24 44
        return $output;
25
    }
26
27
    /**
28
     * RouterEventManager constructor.
29
     *
30
     * @param $target
31
     * @param $routeInfo
32
     *
33
     * @return \Imanghafoori\HeyMan\WatchingStrategies\RouterEventManager
34
     */
35 54
    public function init($routeInfo)
36
    {
37 54
        $this->routeInfo = $routeInfo;
38
39 54
        return $this;
40
    }
41
42
    /**
43
     * @param $callback
44
     */
45 46
    public function startGuarding(callable $callback)
46
    {
47 46
        foreach ($this->routeInfo as $routeInfo) {
48 46
            $this->all[$routeInfo][] = $callback;
49
        }
50 46
    }
51
52
    /**
53
     * @param $callbacks
54
     *
55
     * @return array
56
     */
57 40
    private function wrapCallbacksForIgnore($callbacks): array
58
    {
59
        return array_map(function ($callback) {
60
            return function () use ($callback) {
61 40
                if (!config('heyman_ignore_route', false)) {
62 31
                    $callback();
63
                }
64 40
            };
65 40
        }, $callbacks);
66
    }
67
}
68