tryParseAsciiBool function

bool? tryParseAsciiBool(
  1. Uint8List data
)

Parses wire bool text (0/1/true/false) from bytes when possible.

Implementation

bool? tryParseAsciiBool(Uint8List data) {
  if (data.isEmpty) {
    return null;
  }
  if (!isAsciiBytes(data)) {
    return null;
  }
  var start = 0;
  var end = data.length;
  while (start < end && _isAsciiSpace(data[start])) {
    start++;
  }
  while (end > start && _isAsciiSpace(data[end - 1])) {
    end--;
  }
  final len = end - start;
  if (len == 1) {
    final c = data[start];
    if (c == 0x30) {
      return false; // '0'
    }
    if (c == 0x31) {
      return true; // '1'
    }
  }
  if (len == 4) {
    // true
    if (data[start] == 0x74 || data[start] == 0x54) {
      final a = data[start + 1] | 0x20;
      final b = data[start + 2] | 0x20;
      final c = data[start + 3] | 0x20;
      if (a == 0x72 && b == 0x75 && c == 0x65) {
        return true;
      }
    }
  }
  if (len == 5) {
    // false
    if (data[start] == 0x66 || data[start] == 0x46) {
      final a = data[start + 1] | 0x20;
      final b = data[start + 2] | 0x20;
      final c = data[start + 3] | 0x20;
      final d = data[start + 4] | 0x20;
      if (a == 0x61 && b == 0x6c && c == 0x73 && d == 0x65) {
        return false;
      }
    }
  }
  return null;
}