trimIndents method

String trimIndents()

Implementation

String trimIndents() {
  final lines = trim().split('\n');

  final nonEmptyLines =
      lines.where((line) => line.trim().isNotEmpty).toList();
  if (nonEmptyLines.isEmpty) return '';

  final int minIndent = nonEmptyLines.fold(double.maxFinite.toInt(), (min, line) {
    final leadingSpaces = line.length - line.trimLeft().length;
    return leadingSpaces < min ? leadingSpaces : min;
  });

  return lines
      .map((line) {
        if (line.trim().isEmpty) return '';
        return line.length > minIndent ? line.substring(minIndent) : line;
      })
      .join('\n');
}