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