public function set(string $version): VersionInterface
    {
        $matches = [];
        $numbers = [];

        if (preg_match($this->regex, $version, $matches)) {
            $numbers = $this->mapMatches($matches);
        }

        if (empty($numbers)) {
            return new Version('0');
        }

        $major = (array_key_exists('major', $numbers) ? $numbers['major'] : '0');
        $minor = (array_key_exists('minor', $numbers) ? $numbers['minor'] : '0');

        if (array_key_exists('micro', $numbers)) {
            $micro      = $numbers['micro'];
            $patch      = (array_key_exists('patch', $numbers) ? $numbers['patch'] : null);
            $micropatch = (array_key_exists('micropatch', $numbers) ? $numbers['micropatch'] : null);
        } else {
            $micro      = '0';
            $patch      = null;
            $micropatch = null;
        }

        $stability = (array_key_exists('stability', $numbers)) ? $numbers['stability'] : null;

        if (null === $stability || 0 === mb_strlen($stability)) {
            $stability = 'stable';
        }

        $stability = mb_strtolower($stability);
        switch ($stability) {
            case 'rc':
                $stability = 'RC';

                break;
            case 'patch':
            case 'pl':
            case 'p':
                $stability = 'patch';

                break;
            case 'beta':
            case 'b':
                $stability = 'beta';

                break;
            case 'alpha':
            case 'a':
                $stability = 'alpha';

                break;
            case 'dev':
            case 'd':
                $stability = 'dev';

                break;
        }

        $build = (array_key_exists('build', $numbers)) ? $numbers['build'] : null;

        return new Version($major, $minor, $micro, $patch, $micropatch, $stability, $build);
    }
public function set(string $version): VersionInterface
    {
        $matches = [];
        $numbers = [];

        if (preg_match($this->regex, $version, $matches)) {
            $numbers = $this->mapMatches($matches);
        }

        if (empty($numbers)) {
            return new Version('0');
        }

        $major = (array_key_exists('major', $numbers) ? $numbers['major'] : '0');
        $minor = (array_key_exists('minor', $numbers) ? $numbers['minor'] : '0');

        if (array_key_exists('micro', $numbers)) {
            $micro      = $numbers['micro'];
            $patch      = (array_key_exists('patch', $numbers) ? $numbers['patch'] : null);
            $micropatch = (array_key_exists('micropatch', $numbers) ? $numbers['micropatch'] : null);
        } else {
            $micro      = '0';
            $patch      = null;
            $micropatch = null;
        }

        $stability = (array_key_exists('stability', $numbers)) ? $numbers['stability'] : null;

        if (null === $stability || 0 === mb_strlen($stability)) {
            $stability = 'stable';
        }

        $stability = mb_strtolower($stability);
        switch ($stability) {
            case 'rc':
                $stability = 'RC';

                break;
            case 'patch':
            case 'pl':
            case 'p':
                $stability = 'patch';

                break;
            case 'beta':
            case 'b':
                $stability = 'beta';

                break;
            case 'alpha':
            case 'a':
                $stability = 'alpha';

                break;
            case 'dev':
            case 'd':
                $stability = 'dev';

                break;
        }

        $build = (array_key_exists('build', $numbers)) ? $numbers['build'] : null;

        return new Version($major, $minor, $micro, $patch, $micropatch, $stability, $build);
    }
public function set ( string $ version ) : VersionInterface { $ matches = [ ] ; $ numbers = [ ] ; if ( preg_match ( $ this -> regex , $ version , $ matches ) ) { $ numbers = $ this -> mapMatches ( $ matches ) ; } if ( empty ( $ numbers ) ) { return new Version ( '0' ) ; } $ major = ( array_key_exists ( 'major' , $ numbers ) ? $ numbers [ 'major' ] : '0' ) ; $ minor = ( array_key_exists ( 'minor' , $ numbers ) ? $ numbers [ 'minor' ] : '0' ) ; if ( array_key_exists ( 'micro' , $ numbers ) ) { $ micro = $ numbers [ 'micro' ] ; $ patch = ( array_key_exists ( 'patch' , $ numbers ) ? $ numbers [ 'patch' ] : null ) ; $ micropatch = ( array_key_exists ( 'micropatch' , $ numbers ) ? $ numbers [ 'micropatch' ] : null ) ; } else { $ micro = '0' ; $ patch = null ; $ micropatch = null ; } $ stability = ( array_key_exists ( 'stability' , $ numbers ) ) ? $ numbers [ 'stability' ] : null ; if ( null === $ stability || 0 === mb_strlen ( $ stability ) ) { $ stability = 'stable' ; } $ stability = mb_strtolower ( $ stability ) ; switch ( $ stability ) { case 'rc' : $ stability = 'RC' ; break ; case 'patch' : case 'pl' : case 'p' : $ stability = 'patch' ; break ; case 'beta' : case 'b' : $ stability = 'beta' ; break ; case 'alpha' : case 'a' : $ stability = 'alpha' ; break ; case 'dev' : case 'd' : $ stability = 'dev' ; break ; } $ build = ( array_key_exists ( 'build' , $ numbers ) ) ? $ numbers [ 'build' ] : null ; return new Version ( $ major , $ minor , $ micro , $ patch , $ micropatch , $ stability , $ build ) ; }
sets the detected version

@param string $version

@throws \UnexpectedValueException

@return \BrowserDetector\Version\VersionInterface
sets the detected version