Parse a character vector to semantic versions

parse_version(version)

Arguments

version
A character vector

Value

A list of "svptr" objects. The list itself is of class "svlist"

Examples

semver <- parse_version(c("1.2.3", "1.2.4", "1.0.0", "1.2.4-beta", "2.1.3-alpha", "1.9.4")) max(semver)
#> Maj: 2 Min: 1 Pat: 3 Pre: alpha
ver124a <- semver[semver > "1.2.4-alpha"] sort(ver124a)
#> [1] Maj: 1 Min: 2 Pat: 4 Pre: beta #> #> [2] Maj: 1 Min: 2 Pat: 4 #> #> [3] Maj: 1 Min: 9 Pat: 4 #> #> [4] Maj: 2 Min: 1 Pat: 3 Pre: alpha #>
# compare versions semver[[1]] < semver[[2]]
#> [1] TRUE
# compare against a version semver > semver[1]
#> [1] FALSE TRUE FALSE TRUE TRUE TRUE
# compare against a character string semver > "1.7.2"
#> [1] FALSE FALSE FALSE FALSE TRUE TRUE
# sort versions sort(semver)
#> [1] Maj: 1 Min: 0 Pat: 0 #> #> [2] Maj: 1 Min: 2 Pat: 3 #> #> [3] Maj: 1 Min: 2 Pat: 4 Pre: beta #> #> [4] Maj: 1 Min: 2 Pat: 4 #> #> [5] Maj: 1 Min: 9 Pat: 4 #> #> [6] Maj: 2 Min: 1 Pat: 3 Pre: alpha #>
order(semver)
#> [1] 3 1 4 2 6 5
rank(semver)
#> [1] 2 4 1 3 6 5
# get summary statistics min(semver)
#> Maj: 1 Min: 0 Pat: 0
max(semver)
#> Maj: 2 Min: 1 Pat: 3 Pre: alpha
range(semver)
#> [1] Maj: 1 Min: 0 Pat: 0 #> #> [2] Maj: 2 Min: 1 Pat: 3 Pre: alpha #>
# coerce versions as.character(semver)
#> [1] "1.2.3" "1.2.4" "1.0.0" "1.2.4-beta" "2.1.3-alpha" #> [6] "1.9.4"
as.data.frame(semver)
#> major minor patch prerelease build #> 1 1 2 3 #> 2 1 2 4 #> 3 1 0 0 #> 4 1 2 4 beta #> 5 2 1 3 alpha #> 6 1 9 4