public void replaceWithIndentedContent()

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);
        }
    }