parse static method

List<int> parse(
  1. String uuid, {
  2. List<int>? buffer,
  3. int offset = 0,
  4. bool validate = true,
  5. ValidationMode validationMode = ValidationMode.strictRFC4122,
})

Parses the provided uuid into a list of byte values as a List

Implementation

static List<int> parse(
  String uuid, {
  List<int>? buffer,
  int offset = 0,
  bool validate = true,
  ValidationMode validationMode = ValidationMode.strictRFC4122,
}) {
  if (validate) {
    isValidOrThrow(fromString: uuid, validationMode: validationMode);
  }
  var i = offset, ii = 0;

  // Create a 16 item buffer if one hasn't been provided.
  buffer = (buffer != null) ? buffer : Uint8List(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 regex = 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++] = int.parse(hex, radix: 16);
    }
  }

  // Zero out any left over bytes if the string was too short.
  while (ii < 16) {
    buffer[i + ii++] = 0;
  }

  return buffer;
}