Argentini.Halide.H3Http.BuildMatch C# (CSharp) Method

BuildMatch() private static method

private static BuildMatch ( String pattern, String userAgent, String browser, Int32 versionIndex, String browserNameVersionFallback, String &browserName, System.Int64 &majorVersion, System.Int64 &minorVersion, System.Int64 &buildVersion ) : String
pattern String
userAgent String
browser String
versionIndex System.Int32
browserNameVersionFallback String
browserName String
majorVersion System.Int64
minorVersion System.Int64
buildVersion System.Int64
return String
        private static String BuildMatch(String pattern, String userAgent, String browser, Int32 versionIndex, String browserNameVersionFallback, out String browserName, out Int64 majorVersion, out Int64 minorVersion, out Int64 buildVersion)
        {
            browserName = browser;
            majorVersion = 0;
            minorVersion = 0;
            buildVersion = 0;

            Match match = Regex.Match(userAgent, pattern, RegexOptions.IgnoreCase | RegexOptions.CultureInvariant);

            if (match.Success)
            {
                string key = match.Groups[versionIndex].Value;

                key = key.Replace("_", ".");

                String[] versions = key.Split('.');

                // Handle minor build versioning without dot syntax (leading zeroes)
                // (9.06 becomes 9.0.6)
                if (versions.Length > 1 && versions[1].StartsWith("0"))
                {
                    key = key.Replace(versions[0] + "." + versions[1], versions[0] + ".0." + Convert.ToInt64(versions[1]));
                    versions = key.Split('.');
                }

                if (versions.Length > 0)
                {
                    if (versions[0].Length > 18)
                    {
                        versions[0] = versions[0].Substring(0, 18);
                    }

                    if (H3Identify.IsPureNumeric(versions[0]))
                    {
                        majorVersion = Convert.ToInt64(versions[0]);
                    }
                }

                if (versions.Length > 1)
                {
                    if (versions[1].Length > 18)
                    {
                        versions[1] = versions[1].Substring(0, 18);
                    }

                    if (H3Identify.IsPureNumeric(versions[1]))
                    {
                        minorVersion = Convert.ToInt64(versions[1]);
                    }
                }

                if (versions.Length > 2)
                {
                    if (versions[2].Length > 18)
                    {
                        versions[2] = versions[2].Substring(0, 18);
                    }

                    if (H3Identify.IsPureNumeric(versions[2]))
                    {
                        buildVersion = Convert.ToInt64(versions[2]);
                    }
                }

                browser += " " + majorVersion + "." + minorVersion + (buildVersion > 0 ? "." + buildVersion : "");
            }

            else
            {
                if (browserNameVersionFallback != "")
                {
                    browser = browserName = browserNameVersionFallback;
                }
            }

            return browser;
        }