Semantic Versioning (SemVer 2.0.0) parser and comparator for MoonBit.
let v = parse("1.2.3-alpha.1+build.5")inspect(v.to_string(), content="1.2.3-alpha.1+build.5")
let a = parse("1.0.0-alpha")let b = parse("1.0.0")assert_true(a.compare(b) < 0)
pub suberror SemVerError { InvalidFormat(String) InvalidNumber(String) LeadingZero(String) InvalidIdentifier(String)} derive(Eq, @moonbitlang/core/debug.DebugDebug)
pub enum PreId { Num(Int) Str(String)} derive(Eq, ToJson, @moonbitlang/core/debug.DebugDebug)
pub struct SemVer { major : Int minor : Int patch : Int pre : Array[PreId] build : Array[String]} derive(Eq, ToJson, @moonbitlang/core/debug.DebugDebug)
fn SemVer::compare(self : SemVer, other : SemVer) -> Int
fn SemVer::inc(self : SemVer, release : String, identifier? : String, identifier_base? : Int) -> SemVer?
fn SemVer::is_prerelease(self : SemVer) -> Bool
fn SemVer::new(major : Int, minor : Int, patch : Int) -> SemVer
fn SemVer::strip_build(self : SemVer) -> SemVer
fn SemVer::to_string(self : SemVer) -> String
fn SemVer::with_prerelease(major : Int, minor : Int, patch : Int, label : String, number : Int) -> SemVer
fn inc(version : String, release : String, identifier? : String, identifier_base? : Int) -> String?
fn parse(input : String) -> SemVer raise SemVerError
fn try_parse(input : String) -> Result[SemVer, SemVerError]
Install
Powered by MoonBit
© 2026 mooncakes.io