blob: 68cb7965d573716e561d5dbc3b3faefb597457e5 [file] [log] [blame]
// Copyright (C) 2009 The Android Open Source Project
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package com.google.gerrit.prettify.common;
import java.util.List;
import org.eclipse.jgit.diff.Edit;
/**
* This is a legacy class. It was only simplified but not improved regarding readability or code
* health. Feel free to completely rewrite it or replace it with some other, better code.
*/
public class EditHunk {
private final List<Edit> edits;
private int curIdx;
private Edit curEdit;
private int aCur;
private int bCur;
private final int aEnd;
private final int bEnd;
public EditHunk(List<Edit> edits, int aSize, int bSize) {
this.edits = edits;
curIdx = 0;
curEdit = edits.get(curIdx);
aCur = 0;
bCur = 0;
aEnd = aSize;
bEnd = bSize;
}
public int getCurA() {
return aCur;
}
public int getCurB() {
return bCur;
}
public void incA() {
aCur++;
}
public void incB() {
bCur++;
}
public void incBoth() {
incA();
incB();
}
public boolean isUnmodifiedLine() {
return !isDeletedA() && !isInsertedB();
}
public boolean isDeletedA() {
return curEdit.getBeginA() <= aCur && aCur < curEdit.getEndA();
}
public boolean isInsertedB() {
return curEdit.getBeginB() <= bCur && bCur < curEdit.getEndB();
}
public boolean next() {
if (!in(curEdit)) {
if (curIdx < edits.size() - 1) {
curEdit = edits.get(++curIdx);
}
}
return aCur < aEnd || bCur < bEnd;
}
private boolean in(Edit edit) {
return aCur < edit.getEndA() || bCur < edit.getEndB();
}
}