Passed
Branch new-version (72fcef)
by Jeroen
03:10
created

AddressParser::parseLine()   D

Complexity

Conditions 9
Paths 2

Size

Total Lines 27
Code Lines 20

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 9
eloc 20
nc 2
nop 2
dl 0
loc 27
rs 4.909
c 0
b 0
f 0
1
<?php
2
3
namespace JeroenDesloovere\VCard\Parser\Property;
4
5
use JeroenDesloovere\VCard\Property\Address;
6
use JeroenDesloovere\VCard\Property\NodeInterface;
7
use JeroenDesloovere\VCard\Property\Parameter\Type;
8
9
class AddressParser implements NodeParserInterface
10
{
11
    public function parseLine(string $value, array $parameters = []): NodeInterface
12
    {
13
        @list(
14
            $postOfficeBox,
15
            $extendedAddress,
16
            $streetAddress,
17
            $locality,
18
            $region,
19
            $postalCode,
20
            $countryName
21
        ) = explode(';', $value);
22
23
        $address = new Address(
24
            ($postOfficeBox !== '') ? $postOfficeBox : null,
25
            ($extendedAddress !== '') ? $extendedAddress : null,
26
            ($streetAddress !== '') ? $streetAddress : null,
27
            ($locality !== '') ? $locality : null,
28
            ($region !== '') ? $region : null,
29
            ($postalCode !== '') ? $postalCode : null,
30
            ($countryName !== '') ? $countryName : null
31
        );
32
33
        if (array_key_exists(Type::getNode(), $parameters)) {
34
            $address->setType($parameters[Type::getNode()]);
35
        }
36
37
        return $address;
38
    }
39
}
40