Erica Marigold
ab6e993879
* `SemverImpl:__tostring` - Allows for stringifying a parsed semver instance * Add TODO comment for future erroring for bad ordinal format |
||
---|---|---|
.github/workflows | ||
.lune | ||
.vscode | ||
lib | ||
tests | ||
.gitignore | ||
.luaurc | ||
LICENSE.md | ||
pesde.toml | ||
README.md |
semver-luau
A Luau library to parse and compare Semantic Versioning compatible version numbers.
Semantic Versioning (Semver) is a versioning scheme for software that uses a three-part version number format, MAJOR.MINOR.PATCH
.
Additionally, Semver defines rules on when to increment each of these parts:
MAJOR
version increments indicate incompatible API changes.MINOR
version increments indicate the addition of functionality in a backward-compatible manner.PATCH
version increments indicate backward-compatible bug fixes.
Semver also allows for optional pre-release and build metadata tags.
For a detailed set of guidelines that Semver version numbers follow, visit the previously linked website containing the full Semver specification.
Usage
To improve error / nil handling ergnomics, this library makes use of util.luau's Option
and Result
implementations.
Any fallible methods return a Result
and potentially null values are represented as Option
s.
Invalid versions should return a Result
with the respective error. If not, this is considered a bug, and please consider
filing an issue here.
local semver = require("semver")
-- Parse version strings
local v1 = semver.parse("1.2.3"):unwrap() --[[
major = 1,
minor = 2,
patch = 3,
buildMetadata = Option::None,
prerelease = Option::None
]]
local v2 = semver.parse("5.12.0+build.1731248766"):unwrap() --[[
major = 5,
minor = 12,
patch = 0,
buildMetadata = Option::Some("build.1731248766"),
prerelease = Option::None
]]
-- Compare versions
print(v1 < v2) -- true
print(v1 > v2) -- false
print(v1 == v2) -- false
MSLV (Minimum Supported Luau Version)
This library requires at least requires at least Luau 0.629,
which corresponds to Lune 0.8.7 (for leading |
support).
License
This project is licensed under the MIT license.