https://github.com/dcarp/semver
Semantic Versioning Library
https://github.com/dcarp/semver
d semver
Last synced: 20 days ago
JSON representation
Semantic Versioning Library
- Host: GitHub
- URL: https://github.com/dcarp/semver
- Owner: dcarp
- License: mit
- Created: 2014-06-16T21:26:56.000Z (over 11 years ago)
- Default Branch: master
- Last Pushed: 2025-09-21T01:11:03.000Z (6 months ago)
- Last Synced: 2025-09-21T01:19:38.887Z (6 months ago)
- Topics: d, semver
- Language: D
- Size: 24.4 KB
- Stars: 12
- Watchers: 3
- Forks: 5
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
[](https://github.com/dcarp/semver/actions?workflow=CI)
semver
======
Semantic Versioning Library
## Implementation
This library parses, validates and compares version numbers and version ranges.
It uses the following formats:
* Semantic Versioning 2.0.0 - http://semver.org
* Semantic Versioning Range - https://github.com/isaacs/node-semver
## Usage
```D
auto version1 = SemVer("1.0.0");
assert(version1.isValid);
assert(version1.isStable);
auto version2 = SemVer("1.0.0-rc.1");
assert(version2.isValid);
assert(!version2.isStable);
auto version3 = Semver("1.2.3-rc.42");
assert(version3.major == 1);
assert(version3.minor == 2);
assert(version3.patch == 3);
assert(SemVer("1.0.0") > SemVer("1.0.0+build.1"));
assert(SemVer("1.0.0").differAt(SemVer("1.0.0+build.1")) == VersionPart.BUILD);
auto versionRange = SemVerRange(">=1.0.0");
assert(versionRange.isValid);
assert(SemVer("1.0.1").satisfies(versionRange));
assert(SemVer("1.1.0").satisfies(versionRange));
auto semVers = [SemVer("1.1.0"), SemVer("1.0.0"), SemVer("0.8.0")];
assert(semVers.maxSatisfying(SemVerRange("<=1.0.0")) == SemVer("1.0.0"));
assert(semVers.maxSatisfying(SemVerRange(">=1.0")) == SemVer("1.1.0"));
semVers = [SemVer("1.0.0+build.3"), SemVer("1.0.0+build.1"), SemVer("1.1.0")];
assert(semVers.maxSatisfying(SemVerRange("<=1.0.0")) == SemVer("1.0.0+build.3"));
assert(semVers.maxSatisfying(SemVerRange(">=1.0")) == SemVer("1.1.0"));
```