ApiParser.ApiParser.ParseDetailsFromExample C# (CSharp) Method

ParseDetailsFromExample() private static method

private static ParseDetailsFromExample ( string messageName, ApiNode example, string owningMessageNamespace ) : string[]>.Tuple
messageName string
example ApiNode
owningMessageNamespace string
return string[]>.Tuple
        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;
        }
    }