Skip to content

Commit

Permalink
Add prerelase(v) that returns prerelease components, fixes #133
Browse files Browse the repository at this point in the history
  • Loading branch information
ekmartin authored and isaacs committed Jun 28, 2016
1 parent 3643836 commit 3cc5a94
Show file tree
Hide file tree
Showing 3 changed files with 34 additions and 0 deletions.
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -289,6 +289,8 @@ strings that they parse.
same as `prepatch`. It increments the patch version, then makes a
prerelease. If the input version is already a prerelease it simply
increments it.
* `prerelease(v)`: Returns an array of prerelease components, or null
if none exist. Example: `prerelease('1.2.3-alpha.1') -> ['alpha', 1]`
* `major(v)`: Return the major version number.
* `minor(v)`: Return the minor version number.
* `patch(v)`: Return the patch version number.
Expand Down
6 changes: 6 additions & 0 deletions semver.js
Original file line number Diff line number Diff line change
Expand Up @@ -1186,3 +1186,9 @@ function outside(version, range, hilo, loose) {
}
return true;
}

exports.prerelease = prerelease;
function prerelease(version, loose) {
var parsed = parse(version, loose);
return (parsed && parsed.prerelease.length) ? parsed.prerelease : null;
}
26 changes: 26 additions & 0 deletions test/prerelease.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
var tap = require('tap');
var test = tap.test;
var semver = require('../semver.js');
var prerelease = semver.prerelease;

test('\nprerelease', function(t) {
// [prereleaseParts, version, loose]
[
[['alpha', 1], '1.2.2-alpha.1'],
[[1], '0.6.1-1'],
[['beta', 2], '1.0.0-beta.2'],
[['pre'], 'v0.5.4-pre'],
[['alpha', 1], '1.2.2-alpha.1', false],
[['beta'], '0.6.1beta', true],
[null, '1.0.0', true],
[null, '~2.0.0-alpha.1', false],
[null, 'invalid version'],
].forEach(function(tuple) {
var expected = tuple[0];
var version = tuple[1];
var loose = tuple[2];
var msg = 'prerelease(' + version + ')';
t.same(prerelease(version, loose), expected, msg);
});
t.end();
});

0 comments on commit 3cc5a94

Please sign in to comment.