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