private static Tuple<ApiType, string[]> ParseDetailsFromExample(string messageName, ApiNode example, string owningMessageNamespace)
{
var blankCleanup1 = new Regex(@"\s+");
var blankCleanup2 = new Regex(@"\s*(\W)\s*");
var exampleText = example.Text;
exampleText = blankCleanup1.Replace(exampleText, " ");
exampleText = blankCleanup2.Replace(exampleText, "$1");
var jsRegex = new Regex($@"(?:\W|^)function {messageName}\(([^)]*)\)(?::(\w+))?\{{");
var m = jsRegex.Match(exampleText);
if (m.Success)
{
var returnType = new ApiType(m.Groups[2].Value, owningMessageNamespace);
var parameters = m.Groups[1].Value.Split(',');
var arguments = new string[parameters.Length];
for (var i = 0; i < parameters.Length; ++i)
{
arguments[i] = parameters[i].Split(':')[0];
}
return Tuple.Create(returnType, arguments);
}
var csRegex = new Regex($@"(\w+) {messageName}\(([^)]*)\)");
m = csRegex.Match(exampleText);
if (m.Success)
{
var nameRegex = new Regex(@"\W(\w+)$");
var returnType = new ApiType(m.Groups[1].Value, owningMessageNamespace);
var parameters = m.Groups[2].Value.Split(',');
var arguments = new string[parameters.Length];
for (var i = 0; i < parameters.Length; ++i)
{
arguments[i] = nameRegex.Replace(parameters[i], "$1");
}
return Tuple.Create(returnType, arguments);
}
return null;
}
}