package org.revisionfilter.utils.rcs.impl;
import java.util.LinkedList;
import java.util.List;
/**
* Logic for computing a map between string offset and line number
*/
public class LineOffsetEngine
{
/**
* @param inputString
* @return Map from string offset to line number
*/
public static List<OffsetLineMapping> computeLineOffsets(String inputString)
{
List<OffsetLineMapping> lineOffsets = new LinkedList<OffsetLineMapping>();
int lineOffset = 0;
int lineNo = 1;
lineOffsets.add(new OffsetLineMapping(lineOffset, lineNo));
lineOffset = inputString.indexOf("\n",0);
lineNo++;
while (lineOffset > -1)
{
lineOffsets.add(new OffsetLineMapping(lineOffset + 1, lineNo));
lineOffset = inputString.indexOf("\n",lineOffset + 1);
lineNo++;
}
return lineOffsets;
}
public static class OffsetLineMapping
{
public OffsetLineMapping(int offset, int lineNo)
{
this.offset = offset;
this.lineNo = lineNo;
}
public final int offset;
public final int lineNo;
}
}