Skip to content

Commit 11870f9

Browse files
committed
Allow for parsing an address before usage via DI type
1 parent 2850f4a commit 11870f9

2 files changed

Lines changed: 46 additions & 0 deletions

File tree

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
<?php declare(strict_types=1);
2+
3+
namespace Loki\Components\Location\AddressParser;
4+
5+
use Loki\Components\Location\Address;
6+
7+
interface AddressParserInterface
8+
{
9+
public function isEnabled(): bool;
10+
public function parse(Address $address): Address;
11+
}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
<?php declare(strict_types=1);
2+
3+
namespace Loki\Components\Location;
4+
5+
use Loki\Components\Location\AddressParser\AddressParserInterface;
6+
7+
class AddressParserComposite implements AddressParserInterface
8+
{
9+
public function __construct(
10+
private $addressParsers = []
11+
) {
12+
}
13+
14+
public function isEnabled(): bool
15+
{
16+
return true;
17+
}
18+
19+
public function parse(Address $address): Address
20+
{
21+
if (empty($this->addressParsers)) {
22+
return $address;
23+
}
24+
25+
foreach ($this->addressParsers as $addressParser) {
26+
if (false === $addressParser instanceof AddressParserInterface) {
27+
continue;
28+
}
29+
30+
$address = $addressParser->parse($address);
31+
}
32+
33+
return $address;
34+
}
35+
}

0 commit comments

Comments
 (0)