use of com.google.gerrit.client.diff.DiffInfo.Region in project gerrit by GerritCodeReview.
the class UnifiedChunkManager method render.
@Override
void render(DiffInfo diff) {
super.render();
chunks = new ArrayList<>();
int cmLine = 0;
boolean useIntralineBg = diff.metaA() == null || diff.metaB() == null;
for (Region current : Natives.asList(diff.content())) {
int origLineA = lineMapper.getLineA();
int origLineB = lineMapper.getLineB();
if (current.ab() != null) {
int length = current.ab().length();
lineMapper.appendCommon(length);
for (int i = 0; i < length; i++) {
host.setLineNumber(DisplaySide.A, cmLine + i, origLineA + i + 1);
host.setLineNumber(DisplaySide.B, cmLine + i, origLineB + i + 1);
}
cmLine += length;
} else if (current.skip() > 0) {
lineMapper.appendCommon(current.skip());
// Maybe current.ab().length();
cmLine += current.skip();
} else if (current.common()) {
lineMapper.appendCommon(current.b().length());
cmLine += current.b().length();
} else {
cmLine += render(current, cmLine, useIntralineBg);
}
}
host.setLineNumber(DisplaySide.A, cmLine, lineMapper.getLineA() + 1);
host.setLineNumber(DisplaySide.B, cmLine, lineMapper.getLineB() + 1);
}
use of com.google.gerrit.client.diff.DiffInfo.Region in project gerrit by GerritCodeReview.
the class SkipManager method render.
void render(int context, DiffInfo diff) {
if (context == DiffPreferencesInfo.WHOLE_FILE_CONTEXT) {
return;
}
List<SkippedLine> skips = new ArrayList<>();
int lineA = 0;
int lineB = 0;
JsArray<Region> regions = diff.content();
for (int i = 0; i < regions.length(); i++) {
Region current = regions.get(i);
if (current.ab() != null || current.common() || current.skip() > 0) {
int len = current.skip() > 0 ? current.skip() : (current.ab() != null ? current.ab() : current.b()).length();
if (i == 0 && len > context + 1) {
skips.add(new SkippedLine(0, 0, len - context));
} else if (i == regions.length() - 1 && len > context + 1) {
skips.add(new SkippedLine(lineA + context, lineB + context, len - context));
} else if (len > 2 * context + 1) {
skips.add(new SkippedLine(lineA + context, lineB + context, len - 2 * context));
}
lineA += len;
lineB += len;
} else {
lineA += current.a() != null ? current.a().length() : 0;
lineB += current.b() != null ? current.b().length() : 0;
}
}
skips = host.getCommentManager().splitSkips(context, skips);
renderSkips(skips, lineA, lineB);
}
use of com.google.gerrit.client.diff.DiffInfo.Region in project gerrit by GerritCodeReview.
the class SideBySideChunkManager method render.
@Override
void render(DiffInfo diff) {
super.render();
chunks = new ArrayList<>();
padding = new ArrayList<>();
paddingDivs = new ArrayList<>();
String diffColor = diff.metaA() == null || diff.metaB() == null ? SideBySideTable.style.intralineBg() : SideBySideTable.style.diff();
for (Region current : Natives.asList(diff.content())) {
if (current.ab() != null) {
lineMapper.appendCommon(current.ab().length());
} else if (current.skip() > 0) {
lineMapper.appendCommon(current.skip());
} else if (current.common()) {
lineMapper.appendCommon(current.b().length());
} else {
render(current, diffColor);
}
}
if (paddingDivs.isEmpty()) {
paddingDivs = null;
}
}
Aggregations