public void format()

in common/src/main/java/org/apache/servicecomb/toolkit/common/SplitDiffFormatter.java [44:91]


  public void format(List<Comparison> comparisons, String source, String dest) throws IOException {

    outputFormat = "%-" + (getMaxLineSize(source) + 10) + "s";

    List<String> sourceLines = readStringAsLines(source);
    List<String> destLines = readStringAsLines(dest);

    for (int currentIndex = 0; currentIndex < comparisons.size(); ) {
      Comparison currentComparison = comparisons.get(currentIndex);
      final int endIndex = findOutputEndIndex(comparisons, currentIndex);
      final Comparison endComparison = comparisons.get(endIndex);

      int originalBegin = (int) Math.max(0, (long) currentComparison.originalPointBegin - radius);
      int destinationBegin = (int) Math.max(0, (long) currentComparison.destinationPointBegin - radius);
      int originalEnd = (int) Math.min(sourceLines.size(), (long) endComparison.originalPointEnd + radius);
      int destinationEnd = (int) Math.min(destLines.size(), (long) endComparison.destinationPointEnd + radius);

      writeHunkHeader(originalBegin, originalEnd, destinationBegin, destinationEnd);

      while (originalBegin < originalEnd || destinationBegin < destinationEnd) {

        if (originalBegin < currentComparison.originalPointBegin || endIndex + 1 < currentIndex) {
          writeContextLine(sourceLines, originalBegin, destLines, destinationBegin);
          originalBegin++;
          destinationBegin++;
        } else if (originalBegin < currentComparison.originalPointEnd) {

          if (destinationBegin < currentComparison.destinationPointEnd) {
            writeReplaceLine(sourceLines, originalBegin, destLines, destinationBegin);
            destinationBegin++;
          } else {
            writeRemovedLine(sourceLines, originalBegin, destLines, destinationBegin);
          }
          originalBegin++;
        } else if (destinationBegin < currentComparison.destinationPointEnd) {

          writeAddedLine(sourceLines, originalBegin, destLines, destinationBegin);
          destinationBegin++;
        }

        if (end(currentComparison, originalBegin, destinationBegin) && ++currentIndex < comparisons.size()) {
          currentComparison = comparisons.get(currentIndex);
        }
      }

      writeLine(noNewLine);
    }
  }