Completed
Push — master ( 44e5d0...75387a )
by Iman
02:04
created

RouteMacros   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 47
Duplicated Lines 70.21 %

Coupling/Cohesion

Components 1
Dependencies 1

Test Coverage

Coverage 40.74%

Importance

Changes 0
Metric Value
dl 33
loc 47
ccs 11
cts 27
cp 0.4074
rs 10
c 0
b 0
f 0
wmc 4
lcom 1
cbo 1

How to fix   Duplicated Code   

Duplicated Code

Duplicate code is one of the most pungent code smells. A rule that is often used is to re-structure code once it is duplicated in three or more places.

Common duplication problems, and corresponding solutions are:

1
<?php
2
3
namespace Imanghafoori\Widgets\Utils;
4
5
use Illuminate\Support\Facades\Route;
6
7
class RouteMacros
8
{
9 12
    public function registerMacros()
10
    {
11 12
        $this->registerViewMacro();
12
13 12
        $this->registerWidget();
14
15 12
        $this->registerJsonWidget();
16 12
    }
17
18
    private function registerViewMacro()
19
    {
20 12
        Route::macro('view', function ($url, $view, $name = null) {
21
            return Route::get($url, [
22
                'as' => $name,
23
                'uses' => function () use ($view) {
24
                    return view($view);
25
                },
26
            ]);
27 12
        });
28 12
    }
29
30
    private function registerWidget()
31
    {
32 12
        Route::macro('widget', function ($url, $widget, $name = null) {
33
            return Route::get($url, [
34
                'as' => $name,
35
                'uses' => function (...$args) use ($widget) {
36
                    return render_widget($widget, $args);
37
                },
38
            ]);
39 12
        });
40 12
    }
41
42
    private function registerJsonWidget()
43
    {
44
        Route::macro('jsonWidget', function ($url, $widget, $name = null) {
45
            return Route::get($url, [
46
                'as' => $name,
47
                'uses' => function (...$args) use ($widget) {
48
                    return json_widget($widget, $args);
49
                },
50
            ]);
51
        });
52
    }
53
}
54