Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
71.43% covered (warning)
71.43%
5 / 7
60.00% covered (warning)
60.00%
3 / 5
CRAP
0.00% covered (danger)
0.00%
0 / 1
LanguageAndRegion
71.43% covered (warning)
71.43%
5 / 7
60.00% covered (warning)
60.00%
3 / 5
5.58
0.00% covered (danger)
0.00%
0 / 1
 __construct
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 getLanguage
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getRegion
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 toPreferredValue
100.00% covered (success)
100.00%
3 / 3
100.00% covered (success)
100.00%
1 / 1
1
 getSeparator
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
1<?php
2namespace Apie\IanaValueObjects;
3
4use Apie\Core\ValueObjects\SnowflakeIdentifier;
5
6final class LanguageAndRegion extends SnowflakeIdentifier
7{
8    public function __construct(private Language $language, private ?LanguageRegion $region = null)
9    {
10    }
11
12    public function getLanguage(): Language
13    {
14        return $this->language;
15    }
16
17    public function getRegion(): ?LanguageRegion
18    {
19        return $this->region;
20    }
21
22    public function toPreferredValue(): static
23    {
24        $language = $this->language->toPreferredValue();
25        $region = $this->region?->toPreferredValue();
26        return new static($language, $region);
27    }
28
29    protected static function getSeparator(): string
30    {
31        return '-';
32    }
33}