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