private int addUnchangedLines()

in app/src/main/java/com/google/reviewit/widget/UnifiedDiffView.java [144:192]


  private int addUnchangedLines(int a, int b, List<String> lines, int
      contextLines, boolean isFirst, boolean isLast) {
    if (lines == null) {
      return 0;
    }

    if (isFirst) {
      if (lines.size() < contextLines + 1) {
        addUnchangedLines(a, b, lines);
      } else {
        int skipped = lines.size() - contextLines;
        addSkippedRow(a, b, lines.subList(0, skipped), true, isLast);
        a += skipped;
        b += skipped;
        for (int i = skipped; i < lines.size(); i++) {
          addRow(++a, ++b, LineChangeType.NO_CHANGE, lines.get(i), null);
        }
      }
    } else if (isLast) {
      if (lines.size() < contextLines + 1) {
        addUnchangedLines(a, b, lines);
      } else {
        for (int i = 0; i < contextLines; i++) {
          addRow(++a, ++b, LineChangeType.NO_CHANGE, lines.get(i), null);
        }
        addSkippedRow(
            a, b, lines.subList(contextLines, lines.size()), false, true);
      }
    } else {
      if (lines.size() < 2 * contextLines + 1) {
        addUnchangedLines(a, b, lines);
      } else {
        for (int i = 0; i < contextLines; i++) {
          addRow(++a, ++b, LineChangeType.NO_CHANGE, lines.get(i), null);
        }
        int skipped = lines.size() - 2 * contextLines;
        addSkippedRow(
            a, b, lines.subList(contextLines, lines.size() - contextLines),
            false, false);
        a += skipped;
        b += skipped;
        for (int i = contextLines + skipped; i < lines.size(); i++) {
          addRow(++a, ++b, LineChangeType.NO_CHANGE, lines.get(i), null);
        }
      }
    }

    return lines.size();
  }