Service::boot()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 10
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 8
nc 1
nop 0
dl 0
loc 10
rs 10
c 0
b 0
f 0
1
<?php namespace GeneaLabs\LaravelAuthorizationAddons\Providers;
2
3
use Blade;
4
use Exception;
5
use GeneaLabs\LaravelAuthorizationAddons\AuthorizationAddOns;
6
use Illuminate\Support\ServiceProvider;
7
8
class Service extends ServiceProvider
9
{
10
    protected $defer = false;
11
12
    protected function registerBladeDirective(string $directive, string $alias = null)
13
    {
14
        $directive = $alias ?: $directive;
15
16
        if (array_key_exists($directive, Blade::getCustomDirectives())) {
17
            throw new Exception("Blade directive '{$directive}' is already registered.");
18
        }
19
20
        app('blade.compiler')->directive($directive, function ($parameters) use ($directive) {
21
            $parameters = trim($parameters, "()");
22
23
            return (new AuthorizationAddOns)->{$directive}($parameters);
24
        });
25
    }
26
27
    public function boot()
28
    {
29
        $this->registerBladeDirective('canAny');
30
        $this->registerBladeDirective('canEvery');
31
        $this->registerBladeDirective('elseCanAny');
32
        $this->registerBladeDirective('elseCanEvery');
33
        $this->registerBladeDirective('cannotAny');
34
        $this->registerBladeDirective('cannotEvery');
35
        $this->registerBladeDirective('elseCannotAny');
36
        $this->registerBladeDirective('elseCannotEvery');
37
    }
38
39
    public function provides() : array
40
    {
41
        return ['genealabs-laravel-authorization-addons'];
42
    }
43
}
44