Function parseTimeDigits [src]

Prototype

pub fn parseTimeDigits(text: *const [2]u8, min: u8, max: u8) !u8

Parameters

text: *const [2]u8min: u8max: u8

Example

test parseTimeDigits { const expectEqual = std.testing.expectEqual; try expectEqual(@as(u8, 0), try parseTimeDigits("00", 0, 99)); try expectEqual(@as(u8, 99), try parseTimeDigits("99", 0, 99)); try expectEqual(@as(u8, 42), try parseTimeDigits("42", 0, 99)); const expectError = std.testing.expectError; try expectError(error.CertificateTimeInvalid, parseTimeDigits("13", 1, 12)); try expectError(error.CertificateTimeInvalid, parseTimeDigits("00", 1, 12)); try expectError(error.CertificateTimeInvalid, parseTimeDigits("Di", 0, 99)); }

Source

pub fn parseTimeDigits(text: *const [2]u8, min: u8, max: u8) !u8 { const result = if (use_vectors) result: { const nn: @Vector(2, u16) = .{ text[0], text[1] }; const zero: @Vector(2, u16) = .{ '0', '0' }; const mm: @Vector(2, u16) = .{ 10, 1 }; break :result @reduce(.Add, (nn -% zero) *% mm); } else std.fmt.parseInt(u8, text, 10) catch return error.CertificateTimeInvalid; if (result < min) return error.CertificateTimeInvalid; if (result > max) return error.CertificateTimeInvalid; return @truncate(result); }