Skip to content
This repository has been archived by the owner on Feb 1, 2020. It is now read-only.

Pre-release tags with hyphens are truncated #10

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open

Pre-release tags with hyphens are truncated #10

wants to merge 1 commit into from

Conversation

jschnare
Copy link

SemVer 2 says a "pre-release version MAY be denoted by appending a hyphen and a series of dot separated identifiers" and identifiers "comprise only ASCII alphanumerics and hyphen [0-9A-Za-z-]".

if the version is '0.0.1-foo-bar.baz', the pre-release should be ['foo-bar', 'baz']. Instead, it returns 'foo' - explode('-', $version) evaluates to ['0.0.1', 'foo', 'bar.baz'], and only the first two elements are assigned.

This change will return ['0.0.1', 'foo-bar.baz'], which can then be exploded on '.'

SemVer 2 says a "pre-release version MAY be denoted by appending a hyphen and a series of dot separated identifiers" and identifiers "comprise only ASCII alphanumerics and hyphen [0-9A-Za-z-]".

if the version is '0.0.1-foo-bar.baz', the pre-release should be ['foo-bar', 'baz'].  Instead, it returns 'foo' - explode('-', $version) evaluates to ['0.0.1', 'foo', 'bar.baz'], and only the first two elements are assigned.

This change will return ['0.0.1', ['foo-bar.baz']], which can then be exploded on '.'
@Octen
Copy link

Octen commented Jan 29, 2015

Your pull request break existing unit tests.

I added a pull request with the addition of unit testing, and modification with the help of your code.

@@ -73,7 +73,7 @@ public static function toComponents($version)
}

if (false !== strpos($version, '-')) {
list($version, $pre) = explode('-', $version);
list($version, $pre) = preg_split('/-/', $version, 1);
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Warning, your limit parameter is incorrect :

<?php
print_r(preg_split('/-/', '1.2.3-pre-release', 1));
?>

The above example will output, and break the unit testing :

Array
(
    [0] => 1.2.3-pre-release
)

But, fix limit to 2 :

<?php
print_r(preg_split('/-/', '1.2.3-pre-release', 2));
?>

The above example will output:

Array
(
    [0] => 1.2.3
    [1] => pre-release
)

Expected return for the need of your pull request

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants