mxcl/version
A µ-framework for representing, comparing, encoding and utilizing
Ranges
Ranges work as you expect, but there are caveats for prerelease identifiers, here are the rules:
1.0.0..<2.0.0does not include eg.2.0.0-alpha
This is probably what you expected. However:
1.0.0..<2.0.0also does not include eg.1.5.0-alpha
However:
1.0.0..<2.0.0-betadoes include eg.2.0.0-alpha
This is how the majority of Semantic Version libraries work.
Comparable, Equatable & Hashable
Both comparable and equatable ignore build metadata as per the specification. Thus:
Version("1.2.3+14") == Version("1.2.3+15") // => true
Version("1.2.3+14") <= Version("1.2.3+15") // => true
Version("1.2.3+14") < Version("1.2.3+15") // => falseThis also means that Hashable must mirror this behavior, thus:
dict[Version("1.2.3+14")] = 1
dict[Version("1.2.3+15")] = 2
dict.count // => 1
dict // => ["1.2.3+15": 2]Be aware of this as it may catch you out, naturally this will also effect structures that depend on Hashable, eg. Set.
Package Metadata
Repository: mxcl/version
Default branch: master
README: README.md