parseVersion
Similar to SemanticVersion.parse, but with following changes:
- Leading zeroes are allowed.
- Supports only 2 or 3 version components (major, minor, [patch]). If 3-rd component is omitted, it will be 0.
Function parameters
Parameters
- ver:[]const u8
Type definitions in this namespace
Types
Functions in this namespace
Functions
- parseCpuArch
- Similar to `parse` except instead of fully parsing, it only determines the CPU
- parseVersion
- Similar to `SemanticVersion.parse`, but with following changes:
- serializeCpu
- Renders the query into a textual representation that can be parsed via the
Source
Implementation
pub fn parseVersion(ver: []const u8) error{ InvalidVersion, Overflow }!SemanticVersion {
const parseVersionComponentFn = (struct {
fn parseVersionComponentInner(component: []const u8) error{ InvalidVersion, Overflow }!usize {
return std.fmt.parseUnsigned(usize, component, 10) catch |err| switch (err) {
error.InvalidCharacter => return error.InvalidVersion,
error.Overflow => return error.Overflow,
};
}
}).parseVersionComponentInner;
var version_components = mem.splitScalar(u8, ver, '.');
const major = version_components.first();
const minor = version_components.next() orelse return error.InvalidVersion;
const patch = version_components.next() orelse "0";
if (version_components.next() != null) return error.InvalidVersion;
return .{
.major = try parseVersionComponentFn(major),
.minor = try parseVersionComponentFn(minor),
.patch = try parseVersionComponentFn(patch),
};
}