writeln method

void writeln(
  1. Object object
)

Safely writes both single-line and multi-line strings.

Implementation

void writeln(Object object) {
  final str = object.toString();
  if (str.isEmpty) {
    return;
  }

  if (_indentLevel <= 0) {
    _buffer.writeln(str);
    return;
  }

  if (!str.contains('\n')) {
    _writeIndent();
    _buffer.writeln(str);
    return;
  }

  final lines = str.split('\n');
  for (var i = 0; i < lines.length; i++) {
    final line = lines[i];
    if (i == lines.length - 1 && line.isEmpty) {
      break;
    }

    if (line.isNotEmpty) {
      _writeIndent();
    }

    _buffer.writeln(line);
  }
}