private int GetNumLines(ComplexConcPatternNode node)
{
var morphNode = node as ComplexConcMorphNode;
if (morphNode != null)
{
int numLines = 1;
if (morphNode.Form != null)
numLines++;
if (morphNode.Entry != null)
numLines++;
if (morphNode.Gloss != null)
numLines++;
if (morphNode.Category != null)
numLines++;
numLines += GetNumLines(morphNode.InflFeatures);
return numLines;
}
var wordNode = node as ComplexConcWordNode;
if (wordNode != null)
{
int numLines = 1;
if (wordNode.Form != null)
numLines++;
if (wordNode.Gloss != null)
numLines++;
if (wordNode.Category != null)
numLines++;
numLines += GetNumLines(wordNode.InflFeatures);
return numLines;
}
var tagNode = node as ComplexConcTagNode;
if (tagNode != null)
{
int numLines = 1;
if (tagNode.Tag != null)
numLines++;
return numLines;
}
if (!node.IsLeaf)
return node.Children.Max(n => GetNumLines(n));
return 1;
}