encodeNewlinesAsPercentCrlf function

String encodeNewlinesAsPercentCrlf(
  1. String input
)

Implementation

String encodeNewlinesAsPercentCrlf(String input) {
  if (input.isEmpty) return input;
  final StringBuffer buf = StringBuffer();
  int i = 0;
  while (i < input.length) {
    final int cu = input.codeUnitAt(i);
    if (cu == 0x0D /* \r */) {
      // Collapse CRLF and CR into CRLF.
      if (i + 1 < input.length && input.codeUnitAt(i + 1) == 0x0A /* \n */) {
        i += 2;
      } else {
        i++;
      }
      buf.write('%0D%0A');
      continue;
    }
    if (cu == 0x0A /* \n */) {
      i++;
      buf.write('%0D%0A');
      continue;
    }
    buf.writeCharCode(cu);
    i++;
  }
  return buf.toString();
}