in customization-base/src/main/java/com/azure/autorest/customization/Editor.java [187:230]
public void replaceWithIndentedContent(String fileName, Position start, Position end, String newContent,
int newLineIndent) {
String indent = IntStream.range(0, newLineIndent).mapToObj(ignored -> " ").collect(Collectors.joining());
StringBuilder stringBuilder = new StringBuilder(4096);
List<String> lineContent = lines.get(fileName);
// Copy lines until the start of the change is reached.
for (int i = 0; i != start.getLine(); i++) {
writeLine(stringBuilder, lineContent.get(i));
}
// Copy until the start of the change.
stringBuilder.append(lineContent.get(start.getLine()), 0, start.getCharacter());
List<String> replacementLineContent = splitContentIntoLines(newContent);
// Add the change.
if (replacementLineContent.size() > 0) {
for (int i = 0; i != replacementLineContent.size() - 1; i++) {
if (i > 0) {
stringBuilder.append(indent);
}
writeLine(stringBuilder, replacementLineContent.get(i));
}
stringBuilder.append(indent).append(replacementLineContent.get(replacementLineContent.size() - 1));
}
writeLine(stringBuilder, lineContent.get(end.getLine()).substring(end.getCharacter()));
// Copy the rest of the file until its end.
for (int i = end.getLine() + 1; i != lineContent.size(); i++) {
writeLine(stringBuilder, lineContent.get(i));
}
contents.put(fileName, stringBuilder.toString());
lines.put(fileName, splitContentIntoLines(contents.get(fileName)));
try (BufferedWriter fileWriter = Files.newBufferedWriter(paths.get(fileName))) {
fileWriter.write(contents.get(fileName));
} catch (IOException e) {
throw new RuntimeException(e);
}
}