parse method
Parses the provided uuid
into a list of byte values.
Can optionally be provided a buffer
to write into and
a positional offset
for where to start inputting into the buffer.
Implementation
List<int> parse(String uuid, {List<int> buffer, int offset: 0}) {
var i = offset, ii = 0;
// Create a 16 item buffer if one hasn't been provided.
buffer = (buffer != null) ? buffer : new List<int>(16);
// Convert to lowercase and replace all hex with bytes then
// string.replaceAll() does a lot of work that I don't need, and a manual
// regex gives me more control.
final RegExp regex = new RegExp('[0-9a-f]{2}');
for (Match match in regex.allMatches(uuid.toLowerCase())) {
if (ii < 16) {
var hex = uuid.toLowerCase().substring(match.start, match.end);
buffer[i + ii++] = _hexToByte[hex];
}
}
// Zero out any left over bytes if the string was too short.
while (ii < 16) {
buffer[i + ii++] = 0;
}
return buffer;
}