toString method

  1. @override
String toString({
  1. bool returnRaw = true,
})
override

A string representation of this object.

Some classes have a default textual representation, often paired with a static parse function (like int.parse). These classes will provide the textual representation as their string representation.

Other classes have no meaningful textual representation that a program will care about. Such classes will typically override toString to provide useful information when inspecting the object, mainly for debugging or logging.

Implementation

@override
String toString({bool returnRaw = true}) {
  if (raw case final raw? when returnRaw) {
    return raw;
  }
  final buf = StringBuffer();
  for (final comp in comps) {
    if (comp is Wildcard) {
      buf.writeCharCode(Character.star);
    }
    for (final char in comp.literal.runes) {
      final escaped = switch (char) {
        Character.nullChar => '\\0'.codeUnits,
        Character.tab => '\\t'.codeUnits,
        Character.lineFeed => '\\n'.codeUnits,
        Character.carriageReturn => '\\r'.codeUnits,
        Character.doubleQuote => '\\"'.codeUnits,
        Character.singleQuote => "\\'".codeUnits,
        Character.star => '\\*'.codeUnits,
        < 0x20 ||
        0x7f ||
        0x96 ||
        > 0xffff =>
          '\\u{${char.toRadixString(16)}}'.codeUnits,
        _ => [char],
      };
      escaped.forEach(buf.writeCharCode);
    }
  }
  return buf.toString();
}