Passed
Push — master ( bbd9c6...a4fde9 )
by Andy
01:14
created

AbstractPeriod   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 28
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
eloc 11
dl 0
loc 28
ccs 12
cts 12
cp 1
rs 10
c 0
b 0
f 0
wmc 4

2 Methods

Rating   Name   Duplication   Size   Complexity  
A getIntervalCode() 0 10 2
A getDateFormat() 0 10 2
1
<?php
2
3
namespace Palmtree\Chrono\Option;
4
5
abstract class AbstractPeriod
6
{
7
    abstract protected static function getIntervalCodes(): array;
8
9
    abstract protected static function getDateFormats(): array;
10
11 6
    public static function getIntervalCode(string $period): string
12
    {
13 6
        $codes = static::getIntervalCodes();
14
15 6
        if (!isset($codes[$period])) {
16 4
            $keys = implode("','", array_keys($codes));
17 4
            throw new \InvalidArgumentException("Period must be one of '$keys'. $period given");
18
        }
19
20 6
        return $codes[$period];
21
    }
22
23 16
    public static function getDateFormat(string $period): string
24
    {
25 16
        $formats = static::getDateFormats();
26
27 16
        if (!isset($formats[$period])) {
28 2
            $keys = implode("','", array_keys($formats));
29 2
            throw new \InvalidArgumentException("Period must be one of '$keys'. $period given");
30
        }
31
32 15
        return $formats[$period];
33
    }
34
}
35