Completed
Pull Request — master (#1)
by Mike
08:04
created

Service::provides()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 1
nc 1
nop 0
dl 0
loc 3
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
    }
34
35
    public function provides() : array
36
    {
37
        return ['genealabs-laravel-authorization-addons'];
38
    }
39
}
40