Lines 63.63% 7 / 11
Methods 75.00% 3 / 4
Classes 0.00% 0 / 1
Name Lines Methods CRAP
 readString 100.00% 2 / 2 100.00% 1 / 1 3
 readStrings 100.00% 4 / 4 100.00% 1 / 1 3
 readAliasPhrases 0.00% 0 / 4 0.00% 0 / 1 20
 readLabelIds 100.00% 1 / 1 100.00% 1 / 1 1
10final readonly class RegistryRow
11{
12    /** @param array<array-key, mixed> $raw */
13    public static function readString(array $raw, string $key): ?string
14    {
15        $value = $raw[$key] ?? null;
16
17        return \is_string($value) && $value !== '' ? $value : null;
18    }
19
20    /**
21     * @param array<array-key, mixed> $raw
22     * @return list<string>
23     */
24    public static function readStrings(array $raw, string $key): array
25    {
26        $values = $raw[$key] ?? null;
27
28        if (!\is_array($values)) {
29            return [];
30        }
31
32        return array_values(array_filter($values, static fn(mixed $value): bool => \is_string($value) && $value !== ''));
33    }
34
35    /**
36     * @param array<array-key, mixed> $raw
37     * @return list<string|null>|null
38     */
39    public static function readAliasPhrases(array $raw): ?array
40    {
41        $values = $raw['aliases'] ?? null;
42
43        if (!\is_array($values)) {
44            return null;
45        }
46
47        return array_values(array_filter($values, static fn(mixed $value): bool => $value === null || (\is_string($value) && $value !== '')));
48    }
49
50    /** @param array<array-key, mixed> $raw */
51    public static function readLabelIds(array $raw): LabelIdCollection
52    {
53        return LabelIdCollection::fromList(array_filter(array_map(LabelId::tryFromString(...), self::readStrings($raw, 'labels'))));
54    }
55}