unfoldStandardCompliantLines static method

List<String> unfoldStandardCompliantLines(
  1. List<String> input
)

Unfolds the given input lines, originally separated by \r\n

Implementation

static List<String> unfoldStandardCompliantLines(
  List<String> input,
) {
  final output = <String>[];
  StringBuffer? buffer;
  for (var i = 0; i < input.length; i++) {
    final current = input[i];
    if (buffer != null) {
      if (current.startsWithWhiteSpace()) {
        buffer.write(current.trimLeft());
        if (i == input.length - 1) {
          output.add(buffer.toString());
        }
        continue;
      } else {
        // this is then end of the current fold:
        output.add(buffer.toString());
        buffer = null;
      }
    }

    if (i < input.length - 1) {
      final next = input[i + 1];
      if (next.startsWithWhiteSpace()) {
        buffer = StringBuffer();
        buffer.write(current);
      } else if (current.isNotEmpty) {
        output.add(current);
      }
    } else if (current.isNotEmpty) {
      output.add(current);
    }
  }
  return output;
}