public static ProcessedResult DiffTextProcessed(string[] listA, string[] listB)
{
var result = new ProcessedResult();
var diff = new Diff();
int lastpos = 0;
foreach (var v in diff.DiffText(listA, listB))
{
for (int i = lastpos; i < v.StartA; i++)
{
//writefln(" %s", listA[i]);
result.Items.Add(new ProcessedItem()
{
LineNumber = i,
Line = listA[i],
Action = ProcessedItem.ActionEnum.Keep,
});
}
//writefln("lastpos(%d) : %s", lastpos, v);
for (int i = 0; i < v.deletedA; i++)
{
result.Items.Add(new ProcessedItem()
{
LineNumber = v.StartA + i,
Line = listA[v.StartA + i],
Action = ProcessedItem.ActionEnum.Delete,
});
}
for (int i = 0; i < v.insertedB; i++)
{
result.Items.Add(new ProcessedItem()
{
LineNumber = v.StartB + i,
Line = listB[v.StartB + i],
Action = ProcessedItem.ActionEnum.Insert,
});
}
lastpos = v.StartA;
lastpos += v.deletedA;
}
for (int i = lastpos; i < listA.Length; i++)
{
result.Items.Add(new ProcessedItem()
{
LineNumber = i,
Line = listA[i],
Action = ProcessedItem.ActionEnum.Keep,
});
}
return result;
}