Completed
Push — master ( a82c12...51ba95 )
by Chin
03:33
created

Weekday::locale()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 4
rs 10
c 0
b 0
f 0
cc 2
nc 2
nop 1
1
<?php
2
3
namespace ChinLeung\LaravelWeekday;
4
5
use ChinLeung\Weekday\Weekday as PhpWeekday;
6
use Illuminate\Support\Collection;
7
8
class Weekday
9
{
10
    /**
11
     * The weekday instance.
12
     *
13
     * @var \ChinLeung\Weekday\Weekday
14
     */
15
    protected $instance;
16
17
    /**
18
     * Constructor of the class.
19
     *
20
     * @param  \ChinLeung\Weekday\Weekday  $instance
21
     */
22
    public function __construct(PhpWeekday $instance = null)
23
    {
24
        $this->instance = $instance;
25
    }
26
27
    /**
28
     * Forward the call to the Weekday instance.
29
     *
30
     * @param  string  $method
31
     * @param  array  $arguments
32
     * @return mixed
33
     */
34
    public function __call($method, $arguments)
35
    {
36
        return $this->getInstance()->$method(...$arguments);
37
    }
38
39
    /**
40
     * Retrieve the Weekday instance.
41
     *
42
     * @return  \ChinLeung\Weekday\Weekday
43
     */
44
    public function getInstance() : PhpWeekday
45
    {
46
        return $this->instance ?? new PhpWeekday;
0 ignored issues
show
Bug introduced by
The call to Weekday::__construct() misses some required arguments starting with $value.
Loading history...
47
    }
48
49
    /**
50
     * Retrieve the locale.
51
     *
52
     * @param  string|null  $locale
53
     * @return string
54
     */
55
    private function locale(?string $locale) : string
56
    {
57
        return $locale ?: app()->getLocale();
58
    }
59
60
    /**
61
     * Retrieve the name of a weekday.
62
     *
63
     * @param  int  $value
64
     * @param  string  $locale
65
     * @return string
66
     */
67
    public function name(int $value, string $locale = null) : string
68
    {
69
        return static::parse($value, $locale)
70
            ->getInstance()
71
            ->getName();
72
    }
73
74
    /**
75
     * Retrieve the list of names for a locale.
76
     *
77
     * @param  string  $locale
78
     * @return \Illuminate\Support\Collection
79
     */
80
    public function names(string $locale = null) : Collection
81
    {
82
        return collect(PhpWeekday::getNames($this->locale($locale)));
83
    }
84
85
    /**
86
     * Parse a value and return an instance.
87
     *
88
     * @param  string|int  $value
89
     * @param  string  $locale
90
     * @return self
91
     */
92
    public function parse($value, string $locale = null) : self
93
    {
94
        return new static(
95
            PhpWeekday::parse($value, $this->locale($locale))
96
        );
97
    }
98
99
    /**
100
     * Change the locale of the instance.
101
     *
102
     * @param  string  $locale
103
     * @return self
104
     */
105
    public function to(string $locale) : self
106
    {
107
        $this->getInstance()->setLocale($locale);
108
109
        return $this;
110
    }
111
112
    /**
113
     * Retrieve the value of a weekday.
114
     *
115
     * @param  string  $name
116
     * @param  string  $locale
117
     * @return string
118
     */
119
    public function value(string $name, string $locale = null) : int
120
    {
121
        return static::parse($name, $locale)
122
            ->getInstance()
123
            ->getValue();
124
    }
125
}
126