Completed
Pull Request — master (#12)
by Adam
03:18
created

Index   A

Complexity

Total Complexity 9

Size/Duplication

Total Lines 38
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 3

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
wmc 9
lcom 0
cbo 3
dl 0
loc 38
ccs 16
cts 16
cp 1
rs 10
c 0
b 0
f 0

3 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 7 1
A addFilters() 0 6 3
B handleFilter() 0 8 5
1
<?php
2
3
namespace BestServedCold\LaravelZendSearch\Laravel;
4
5
use BestServedCold\LaravelZendSearch\Lucene\Index as LuceneIndex;
6
use Illuminate\Config\Repository;
7
use Illuminate\Filesystem\Filesystem;
8
9
/**
10
 * Class Index
11
 * @package BestServedCold\LaravelZendSearch\Laravel
12
 */
13
class Index extends LuceneIndex
14
{
15
    /**
16
     * Index constructor.
17
     * @param Repository $config
18
     */
19 21
    public function __construct(Filter $filter, Repository $config, Filesystem $filesystem)
20
    {
21 21
        $this->setPath($config->get('search.index.path'));
22 21
        $this->addFilters($config->get('search.filters'), $filesystem);
23
24 21
        parent::__construct($filter);
25 21
    }
26
27
    /**
28
     * @param array $filters
29
     */
30 21
    private function addFilters(array $filters = [], Filesystem $filesystem)
31
    {
32 21
        foreach ($filters as $filter => $switch) {
33 21
            $switch === false ? null : $this->handleFilter($switch, $filter, $filesystem);
34 21
        }
35 21
    }
36
37
    /**
38
     * @param $switch
39
     * @param $filter
40
     * @param Filesystem $filesystem
41
     */
42 21
    private function handleFilter($switch, $filter, Filesystem $filesystem)
43
    {
44 21
        if ($filter === 'StopWords' && ! is_array($switch)) {
45 21
            Filter::addStopWordFilter($switch === true ? 'en' : $switch, $filesystem);
46 21
        } else {
47 21
            Filter::addFilter($filter, $switch === true ? [] : [$switch]);
48
        }
49 21
    }
50
}
51