private void ParseFile(string filename, Version apiVersion)
{
var document = ApiNode.Load(filename);
var section = document?.SelectOne(@"//div.content/div.section");
var header = section?.SelectOne(@"div.mb20.clear");
var name = header?.SelectOne(@"h1.heading.inherit"); // Type or type member name
var ns = header?.SelectOne(@"p"); // "class in {ns}"
// Only interested in types at this point
if (name == null || ns == null) return;
// Only types that have messages
var messages = section.Subsection("Messages").ToArray();
if (messages.Length == 0) return;
var match = NsRegex.Match(ns.Text);
var clsType = match.Groups["type"].Value;
var nsName = match.Groups["namespace"].Value;
var unityApiType = api.AddType(nsName, name.Text, clsType, filename, apiVersion);
foreach (var message in messages)
{
var eventFunction = ParseMessage(message, apiVersion, nsName);
unityApiType.MergeEventFunction(eventFunction, apiVersion);
}
}