Passed
Push — master ( 0272f5...3a0c5f )
by Aleksandr
28:04 queued 25:53
created

ValueParser::parse()   B

Complexity

Conditions 7
Paths 7

Size

Total Lines 13
Code Lines 11

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 3
CRAP Score 7.7656

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 7
eloc 11
nc 7
nop 2
dl 0
loc 13
ccs 3
cts 4
cp 0.75
crap 7.7656
rs 8.8333
c 1
b 0
f 0
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 Drobotik\Eav\Enum\ATTR_TYPE;
12
use InvalidArgumentException;
13
14
class ValueParser
15
{
16 5
    public function parseDecimal($value) : string|float|int
17
    {
18 5
        $scale = ATTR_TYPE::migrateOptions(ATTR_TYPE::DECIMAL)['scale'];
19 5
        return number_format($value, $scale, '.', '');
20
    }
21
22 1
    public function parse($type, $value) : mixed
23
    {
24
        switch ($type) {
25
            case ATTR_TYPE::INTEGER:
26
            case ATTR_TYPE::DATETIME:
27
            case ATTR_TYPE::STRING:
28
            case ATTR_TYPE::TEXT:
29
            case ATTR_TYPE::MANUAL:
30 1
                return $value;
31
            case ATTR_TYPE::DECIMAL:
32 1
                return $this->parseDecimal($value);
33
            default:
34
                throw new InvalidArgumentException("Unknown attribute type: " . $type);
35
        }
36
    }
37
}