parse method

List<int> parse (String uuid, { List<int> buffer, int offset: 0 })

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;
}