Example #1
0
 /**
  * Parse a string into a SemVer Version
  *
  * @throws InvalidArgumentException
  *
  * @param string $string
  * @return SemVerVersion
  **/
 public static function parse($string)
 {
     $matches = Regex::matchSemVer($string);
     // Parse the SemVer root
     $version = VersionableParser::parse($matches[1], 'Naneau\\SemVer\\Version');
     // There is a pre-release part
     if (!empty($matches['prerelease'])) {
         $version->setPreRelease(PreReleaseParser::parse(ltrim($matches['prerelease'], '-')));
     }
     // There is a build number
     if (!empty($matches['build'])) {
         $version->setBuild(BuildParser::parse(ltrim($matches['build'], '+')));
     }
     // Return
     return $version;
 }
Example #2
0
 /**
  * Parse pre release version string
  *
  * @param string
  * @return PreReleaseVersion
  **/
 public static function parse($string)
 {
     // Type X.Y.Z, can be parsed as Versionable
     if (substr_count($string, '.') === 2) {
         return VersionableParser::parse($string, 'Naneau\\SemVer\\Version\\PreRelease');
     }
     $preRelease = new PreReleaseVersion();
     $parts = explode('.', $string);
     // Sanity check
     if (count($parts) === 0) {
         return $preRelease;
     }
     // Set the greek name
     $preRelease->setGreek($parts[0]);
     // If there's another part it's a release number
     if (isset($parts[1])) {
         $preRelease->setReleaseNumber((int) $parts[1]);
     }
     return $preRelease;
 }