BreadcrumbCollection   A
last analyzed

Complexity

Total Complexity 5

Size/Duplication

Total Lines 62
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 2

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
dl 0
loc 62
ccs 15
cts 15
cp 1
rs 10
c 0
b 0
f 0
wmc 5
lcom 1
cbo 2

3 Methods

Rating   Name   Duplication   Size   Complexity  
A addOne() 0 6 1
A addBreadcrumb() 0 4 1
A order() 0 16 3
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Arcanedev\Breadcrumbs\Entities;
6
7
use Illuminate\Support\Collection;
8
9
/**
10
 * Class     BreadcrumbCollection
11
 *
12
 * @author   ARCANEDEV <[email protected]>
13
 */
14
class BreadcrumbCollection extends Collection
15
{
16
    /* -----------------------------------------------------------------
17
     |  Main Methods
18
     | -----------------------------------------------------------------
19
     */
20
21
    /**
22
     * Add a breadcrumb item to collection.
23
     *
24
     * @param  string  $title
25
     * @param  string  $url
26
     * @param  array   $data
27
     *
28
     * @return $this
29
     */
30 42
    public function addOne($title, $url, array $data = [])
31
    {
32 42
        return $this->addBreadcrumb(
33 42
            BreadcrumbItem::make($title, $url, $data)
34
        );
35
    }
36
37
    /**
38
     * Add a breadcrumb item to collection.
39
     *
40
     * @param  \Arcanedev\Breadcrumbs\Entities\BreadcrumbItem  $item
41
     *
42
     * @return $this
43
     */
44 42
    public function addBreadcrumb(BreadcrumbItem $item)
45
    {
46 42
        return $this->push($item)->order();
47
    }
48
49
    /* -----------------------------------------------------------------
50
     |  Other Methods
51
     | -----------------------------------------------------------------
52
     */
53
54
    /**
55
     * Order all breadcrumbs items.
56
     *
57
     * @return $this
58
     */
59 42
    private function order()
60
    {
61 42
        $count = $this->count();
62
63 42
        return $this->map(function (BreadcrumbItem $crumb, $key) use ($count) {
64 42
            $crumb->resetPosition();
65
66 42
            if ($key === 0)
67 42
                $crumb->setFirst();
68
69 42
            if ($key === ($count - 1))
70 42
                $crumb->setLast();
71
72 42
            return $crumb;
73 42
        });
74
    }
75
}
76