Failed Conditions
Pull Request — release/1.0.0 (#2)
by Yo
02:46
created

StringDocHelper::append()   B

Complexity

Conditions 3
Paths 3

Size

Total Lines 32
Code Lines 25

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 7
CRAP Score 3

Importance

Changes 0
Metric Value
cc 3
eloc 25
nc 3
nop 2
dl 0
loc 32
ccs 7
cts 7
cp 1
crap 3
rs 8.8571
c 0
b 0
f 0
1
<?php
2
namespace Yoanm\JsonRpcParamsSymfonyConstraintDoc\App\Helper;
3
4
use Symfony\Component\Validator\Constraint;
5
use Symfony\Component\Validator\Constraints as Assert;
6
use Yoanm\JsonRpcServerDoc\Domain\Model\Type\StringDoc;
7
use Yoanm\JsonRpcServerDoc\Domain\Model\Type\TypeDoc;
8
9
/**
10
 * Class StringDocHelper
11
 */
12
class StringDocHelper
13
{
14
    /**
15
     * @param TypeDoc $doc
16
     * @param Constraint $constraint
17
     */
18 20
    public function append(TypeDoc $doc, Constraint $constraint)
19
    {
20
        // If format already defined or type is defined and is not a string nor scalar => give up
21 20
        if (!$doc instanceof StringDoc) {
22 1
            return;
23
        }
24
25 19
        $constraintClass = get_class($constraint);
26
        $constraintForFormatList = [
27 19
            Assert\Bic::class,
28
            Assert\CardScheme::class,
29
            Assert\Country::class,
30
            Assert\Currency::class,
31
            Assert\Date::class,
32
            Assert\DateTime::class,
33
            Assert\Email::class,
34
            Assert\File::class,
35
            Assert\Iban::class,
36
            Assert\Ip::class,
37
            Assert\Isbn::class,
38
            Assert\Issn::class,
39
            Assert\Language::class,
40
            Assert\Locale::class,
41
            Assert\Luhn::class,
42
            Assert\Regex::class,
43
            Assert\Time::class,
44
            Assert\Url::class,
45
            Assert\Uuid::class,
46
        ];
47
48 19
        if (in_array($constraintClass, $constraintForFormatList)) {
49 19
            $doc->setFormat(lcfirst((new \ReflectionClass($constraint))->getShortName()));
50
        }
51 19
    }
52
}
53