Passed
Push — master ( 022b32...35c6c5 )
by Aleksandr
01:52
created

ValueParser   A

Complexity

Total Complexity 8

Size/Duplication

Total Lines 25
Duplicated Lines 0 %

Test Coverage

Coverage 87.5%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 15
dl 0
loc 25
ccs 7
cts 8
cp 0.875
rs 10
c 1
b 0
f 0
wmc 8

2 Methods

Rating   Name   Duplication   Size   Complexity  
B parse() 0 14 7
A parseDecimal() 0 4 1
1
<?php
2
/**
3
 * This file is part of the eav package.
4
 * @author    Aleksandr Drobotik <[email protected]>
5
 * @copyright 2023 Aleksandr Drobotik
6
 * @license   https://opensource.org/license/mit  The MIT License
7
 */
8
9
namespace Drobotik\Eav\Value;
10
11
use DateTime;
12
use Drobotik\Eav\Enum\ATTR_TYPE;
13
use InvalidArgumentException;
14
15
class ValueParser
16
{
17 5
    public function parseDecimal($value)
18
    {
19 5
        $scale = ATTR_TYPE::migrateOptions(ATTR_TYPE::DECIMAL)['scale'];
20 5
        return number_format($value, $scale, '.', '');
21
    }
22
23
    /**
24
     * @throws \Exception
25
     */
26 1
    public function parse($type, $value)
27
    {
28
        switch ($type) {
29
            case ATTR_TYPE::INTEGER:
30
            case ATTR_TYPE::STRING:
31
            case ATTR_TYPE::TEXT:
32
            case ATTR_TYPE::MANUAL:
33 1
                return $value;
34
            case ATTR_TYPE::DATETIME:
35 1
                return (new DateTime($value))->format('Y-m-d H:i:s');
36
            case ATTR_TYPE::DECIMAL:
37 1
                return $this->parseDecimal($value);
38
            default:
39
                throw new InvalidArgumentException("Unknown attribute type: " . $type);
40
        }
41
    }
42
}