public static function parse($data)
{
$array = array();
$items = Arrays::filterNotBlank(explode(',', $data));
foreach ($items as $item) {
$elements = explode(';', $item);
$media = Arrays::first($elements);
$params = array_slice($elements, 1);
list($type, $subtype) = Arrays::map(explode('/', $media), Functions::trim());
$q = Arrays::getValue(self::extractParams($params), 'q');
$array[] = array('type' => $type, 'subtype' => $subtype, 'q' => $q);
}
usort($array, '\\Ouzo\\Http\\AcceptHeaderParser::_compare');
return Arrays::toMap($array, function ($input) {
return $input['type'] . '/' . $input['subtype'];
}, function ($input) {
return $input['q'];
});
}