atomo-0.2: prelude/version.atomo
Version = Object clone
(major: Integer) . (minor: Integer) :=
Version clone do:
{ major = major
minor = minor
}
(major: Integer) . (rest: Version) :=
Version clone do:
{ major = major
minor = rest
}
(v: Version) show :=
v major show .. " . " .. v minor show
(v: Version) as: String :=
v major show .. "." .. v minor (as: String)
(s: String) as: Version :=
s (split-on: '.') (map: @(as: Integer)) reduce-right: @.
(n: Integer) as: Version := n . 0
(a: Version) == (b: Version) :=
a major == b major && a minor == b minor
(n: Integer) == (v: Version) :=
(n == v major) && (v minor == 0)
(v: Version) == (n: Integer) :=
(n == v major) && (v minor == 0)
(a: Version) > (b: Version) :=
a major > b major || a minor > b minor
(n: Integer) > (v: Version) :=
n > v major || v major == n && v minor /= 0
(v: Version) > (n: Integer) :=
v major > n || v major == n && v minor /= 0
(a: Version) < (b: Version) :=
a major < b major || a minor < b minor
(n: Integer) < (v: Version) :=
n < v major || v major == n && v minor /= 0
(v: Version) < (n: Integer) :=
v major < n || v major == n && v minor /= 0
(a: Version) >= (b: Version) :=
a major >= b major || a minor >= b minor
(n: Integer) >= (v: Version) :=
n >= v major
(v: Version) >= (n: Integer) :=
v major >= n
(a: Version) <= (b: Version) :=
a major <= b major || a minor <= b minor
(n: Integer) <= (v: Version) :=
n <= v major
(v: Version) <= (n: Integer) :=
v major <= n