String _explodeReplace()

in lib/src/characters_impl.dart [1015:1035]


String _explodeReplace(String string, int start, int end,
    String internalReplacement, String outerReplacement) {
  if (start == end) {
    return string.replaceRange(start, start, outerReplacement);
  }
  var buffer = StringBuffer(string.substring(0, start));
  var breaks = Breaks(string, start, end, stateSoTNoBreak);
  var index = 0;
  var replacement = outerReplacement;
  while ((index = breaks.nextBreak()) >= 0) {
    buffer
      ..write(replacement)
      ..write(string.substring(start, index));
    start = index;
    replacement = internalReplacement;
  }
  buffer
    ..write(outerReplacement)
    ..write(string.substring(end));
  return buffer.toString();
}