LanguageDetector   A
last analyzed

Complexity

Total Complexity 5

Size/Duplication

Total Lines 65
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 1

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
wmc 5
c 0
b 0
f 0
lcom 1
cbo 1
dl 0
loc 65
ccs 12
cts 12
cp 1
rs 10

4 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 4 1
A getLanguagePreference() 0 6 2
A getLanguageRange() 0 4 1
A detect() 0 7 1
1
<?php namespace Arcanedev\LaravelTracker\Detectors;
2
3
use Arcanedev\Agent\Contracts\Agent;
4
use Arcanedev\LaravelTracker\Contracts\Detectors\LanguageDetector as LanguageDetectorContract;
5
6
/**
7
 * Class     LanguageDetector
8
 *
9
 * @package  Arcanedev\LaravelTracker\Detectors
10
 * @author   ARCANEDEV <[email protected]>
11
 */
12
class LanguageDetector implements LanguageDetectorContract
13
{
14
    /* -----------------------------------------------------------------
15
     |  Properties
16
     | -----------------------------------------------------------------
17
     */
18
19
    /** @var \Arcanedev\Agent\Contracts\Agent */
20
    protected $agent;
21
22
    /* -----------------------------------------------------------------
23
     |  Constructor
24
     | -----------------------------------------------------------------
25
     */
26
27
    /**
28
     * LanguageDetector constructor.
29
     *
30
     * @param  \Arcanedev\Agent\Contracts\Agent  $agent
31
     */
32 9
    public function __construct(Agent $agent)
33
    {
34 9
        $this->agent = $agent;
35 9
    }
36
37
    /* -----------------------------------------------------------------
38
     |  Main Methods
39
     | -----------------------------------------------------------------
40
     */
41
42
    /**
43
     * Detect preference and language-range.
44
     *
45
     * @return array
46
     */
47 9
    public function detect()
48
    {
49
        return [
50 9
            'preference'     => $this->getLanguagePreference(),
51 9
            'language_range' => $this->getLanguageRange(),
52
        ];
53
    }
54
55
    /**
56
     * Get language preference.
57
     *
58
     * @return string
59
     */
60 9
    public function getLanguagePreference()
61
    {
62 9
        return count($languages = $this->agent->languages())
63 9
            ? $languages[0]
64 9
            : config('app.locale', 'en');
65
    }
66
67
    /**
68
     * Get languages ranges.
69
     *
70
     * @return string
71
     */
72 9
    public function getLanguageRange()
73
    {
74 9
        return implode(',', $this->agent->languages());
75
    }
76
}
77