semver

Semantic Versioning (SemVer 2.0.0) parser and comparator for MoonBit.

semver
versioning
moon add mizchi/semver@0.1.2
Download zip
Author
Version
0.1.2
License
Apache-2.0
Last updated
18 hours ago
Downloads
1K
README

#mizchi/semver

Semantic Versioning (SemVer 2.0.0) parser and comparator for MoonBit.

#Usage

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)

#
SemVerError

pub suberror SemVerError {
InvalidFormat(String)
InvalidNumber(String)
LeadingZero(String)
InvalidIdentifier(String)
} derive(Eq,
Debug
)

Errors raised while parsing a SemVer string.

#
PreId

pub enum PreId {
Num(Int)
Str(String)
} derive(Eq, ToJson,
Debug
)

Pre-release identifier.

#
SemVer

pub struct SemVer {
major : Int
minor : Int
patch : Int
pre : Array[PreId]
build : Array[String]
} derive(Eq, ToJson,
Debug
)

Semantic Versioning (SemVer 2.0.0).

#
SemVer::compare

fn SemVer::compare(self : SemVer, other : SemVer) -> Int

Compare versions by SemVer precedence rules (build metadata ignored).

#
SemVer::inc

fn SemVer::inc(self : SemVer, release : String, identifier? : String, identifier_base? : Int) -> SemVer?

#
SemVer::is_prerelease

fn SemVer::is_prerelease(self : SemVer) -> Bool

#
SemVer::new

fn SemVer::new(major : Int, minor : Int, patch : Int) -> SemVer

#
SemVer::strip_build

fn SemVer::strip_build(self : SemVer) -> SemVer

#
SemVer::to_string

fn SemVer::to_string(self : SemVer) -> String

#
SemVer::with_prerelease

fn SemVer::with_prerelease(major : Int, minor : Int, patch : Int, label : String, number : Int) -> SemVer

#
inc

fn inc(version : String, release : String, identifier? : String, identifier_base? : Int) -> String?

#
parse

fn parse(input : String) -> SemVer raise SemVerError

Parse a SemVer string.

#
try_parse

fn try_parse(input : String) -> Result[SemVer, SemVerError]

Powered by MoonBit

Site sourceReport issuePackagesBuild queueSkillsStatistics

© 2026 mooncakes.io