/// <summary>
/// Calculate the editing distance between the two nodes (with caching)
/// </summary>
/// <returns>The minimal editing distance</returns>
private static int Distance(XNode node1, XNode node2, bool toRecord, int threshold)
{
var isElement1 = node1.IsElement();
var isElement2 = node2.IsElement();
if (isElement1 && isElement2)
{
if (node1.Name != node2.Name)
{
return(NoConnection);
}
int dist = DistanceElements(node1, node2, threshold);
if (toRecord && (dist < NoConnection))
{
distanceLookup[new Tuple <XNode, XNode>(node1, node2)] = dist;
}
return(dist);
}
if (!isElement1 && !isElement2)
{
return(1);
}
return(NoConnection);
}