Completed
Push — master ( 69bbac...c6a45b )
by Dragos
03:11
created

AbstractSportMapper::getSportFromCode()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 7
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 7
rs 9.4285
c 0
b 0
f 0
cc 1
eloc 4
nc 1
nop 1
1
<?php
2
3
declare(strict_types = 1);
4
5
namespace SportTrackerConnector\Core\Workout;
6
7
/**
8
 * Abstract class for tracker sport definitions.
9
 */
10
abstract class AbstractSportMapper implements SportMapperInterface
11
{
12
    /**
13
     * Get the map between the tracker's sport codes and internal sport codes.
14
     *
15
     * The key should be the internal sport code.
16
     *
17
     * @return array
18
     */
19
    abstract protected function getMap();
20
21
    /**
22
     * {@inheritdoc}
23
     */
24
    public function sportFromCode($code) : string
25
    {
26
        $code = strtolower($code);
27
        $codes = array_flip(static::getMap());
28
29
        return $codes[$code] ?? self::OTHER;
30
    }
31
32
    /**
33
     * {@inheritdoc}
34
     */
35
    public function codeFromSport($sport) : string
36
    {
37
        $sport = strtolower($sport);
38
        $codes = static::getMap();
39
40
        if (array_key_exists($sport, $codes)) {
41
            return $codes[$sport];
42
        } elseif (array_key_exists(self::OTHER, $codes)) {
43
            return $codes[self::OTHER];
44
        }
45
46
        return '';
47
    }
48
}
49