toString method
Show bytes description if defined.
Implementation
@override
String toString({String indent = '', bool hex = false}) {
var s = StringBuffer();
for (var e in _data) {
if (e is BytesEmitter) {
s.write(e.toString(indent: ' ', hex: hex));
} else if (e is List<int>) {
if (hex) {
var h = e.map((e) => e.toHex()).join(' ');
s.write('[$h]\n');
} else {
s.write('$e\n');
}
} else if (e is int) {
if (hex) {
var h = e.toHex();
s.write('[$h] ');
} else {
s.write('[$e] ');
}
} else {
throw StateError("Can't handle type: $e");
}
}
var lines = s.toString().split('\n').map((l) => '$indent$l');
var allLines = lines
.join('\n')
.replaceAllMapped(_regexpNs, (m) {
var indent = m.group(1)!;
var ns = m.group(2)!;
ns = ns.replaceAll(RegExp(r'[^\da-f]+'), ' ').trim();
return '$indent[$ns]';
})
.replaceAll(_regexpLineTail, '\n')
.trimRight();
final description = this.description;
if (description != null && description.isNotEmpty) {
return '$indent## $description:\n$allLines\n';
} else {
return '$allLines\n';
}
}