internal static void RetrieveDefaultWritingSystemIdsFromLift(XmlReader reader, out string vernWs, out string analysisWs)
{
vernWs = analysisWs = null;
bool inLexicalUnit = false;
bool inDefnOrGloss = false;
while (reader.Read())
{
switch (reader.NodeType)
{
case XmlNodeType.Element:
switch (reader.Name)
{
case "lexical-unit":
inLexicalUnit = true;
break;
case "definition":
case "gloss":
inDefnOrGloss = true;
break;
case "form":
if (inLexicalUnit && string.IsNullOrWhiteSpace(vernWs))
vernWs = reader.GetAttribute("lang"); // pathologically may leave it null, if so keep trying.
if (inDefnOrGloss && string.IsNullOrWhiteSpace(analysisWs))
analysisWs = reader.GetAttribute("lang"); // pathologically may leave it null, if so keep trying.
if (!string.IsNullOrWhiteSpace(vernWs) && !string.IsNullOrWhiteSpace(analysisWs))
return; // got all we need, skip rest of file.
break;
}
break;
case XmlNodeType.EndElement:
switch (reader.Name)
{
case "lexical-unit":
inLexicalUnit = false;
break;
case "definition":
case "gloss":
inDefnOrGloss = false;
break;
}
break;
}
}
if (string.IsNullOrWhiteSpace(vernWs))
vernWs = "fr"; // Arbitrary default (consistent with default creation of new project) if we don't find an entry
if (string.IsNullOrWhiteSpace(analysisWs))
analysisWs = "en"; // Arbitrary default if we don't find a sense
}