Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
13 / 13
100.00% covered (success)
100.00%
1 / 1
CRAP
100.00% covered (success)
100.00%
1 / 1
LanguageParser
100.00% covered (success)
100.00%
13 / 13
100.00% covered (success)
100.00%
1 / 1
6
100.00% covered (success)
100.00%
1 / 1
 __construct
n/a
0 / 0
n/a
0 / 0
1
 parseLanguageHeader
100.00% covered (success)
100.00%
13 / 13
100.00% covered (success)
100.00%
1 / 1
5
1<?php
2namespace Apie\Core\Utils;
3
4final class LanguageParser
5{
6    /**
7     * @codeCoverageIgnore
8     */
9    private function __construct()
10    {
11    }
12
13    /**
14     * @return string[]
15     */
16    public static function parseLanguageHeader(string $headerValue): array
17    {
18        $res = [];
19        foreach (explode(',', $headerValue) as $str) {
20            $parts = explode(';', $str);
21            $locale = trim($parts[0]);
22            $priority = 1.0;
23            foreach ($parts as $part) {
24                $part = trim($part);
25                if (str_starts_with($part, 'q=')) {
26                    $priority = (float) substr($part, 2);
27                }
28            }
29            if ($locale) {
30                $res[$locale] = $priority;
31            }
32        }
33        arsort($res);
34        return array_keys($res);
35    }
36}