public function parse()
{
foreach ($this->getRegexes() as $regex) {
$matches = $this->matchUserAgent($regex['regex']);
if ($matches) {
break;
}
}
if (empty($matches)) {
return null;
}
$name = $this->buildByMatch($regex['name'], $matches);
foreach (self::getAvailableBrowsers() as $browserShort => $browserName) {
if (strtolower($name) == strtolower($browserName)) {
$version = (string) $this->buildVersion($regex['version'], $matches);
$engine = $this->buildEngine(isset($regex['engine']) ? $regex['engine'] : array(), $version);
$engineVersion = $this->buildEngineVersion($engine);
return array('type' => 'browser', 'name' => $browserName, 'short_name' => $browserShort, 'version' => $version, 'engine' => $engine, 'engine_version' => $engineVersion);
}
}
// This Exception should never be thrown. If so a defined browser name is missing in $availableBrowsers
throw new \Exception('Detected browser name was not found in $availableBrowsers');
// @codeCoverageIgnore
}