Пример #1
0
        private static bool TryParse(string versionString, out int major, out int minor, out int patch, out string pre, out string build)
        {
            major = minor = patch = 0;
            pre   = build = null;

            if (versionString == null)
            {
                return(false);
            }
            versionString = versionString.Trim();
            if (versionString.Length == 0)
            {
                return(false);
            }
            if (versionString[0] == 'v' || versionString[0] == 'V' || versionString[0] == '=')
            {
                versionString = versionString.Substring(1);
            }
            if (versionString.Length == 0)
            {
                return(false);
            }
            var versionMatch = VersionExpression.Match(versionString);

            if (!versionMatch.Success)
            {
                return(false);
            }
            var majorMatch = versionMatch.Groups["major"].Value;
            var minorMatch = versionMatch.Groups["minor"].Value;
            var patchMatch = versionMatch.Groups["patch"].Value;

            if (!int.TryParse(majorMatch, NumberStyles.Integer, CultureInfo.InvariantCulture, out major))
            {
                return(false);
            }
            if (string.IsNullOrEmpty(minorMatch))
            {
                minor = 0;
            }
            else if (!int.TryParse(minorMatch, NumberStyles.Integer, CultureInfo.InvariantCulture, out minor))
            {
                return(false);
            }
            if (string.IsNullOrEmpty(patchMatch))
            {
                patch = 0;
            }
            else if (!int.TryParse(patchMatch, NumberStyles.Integer, CultureInfo.InvariantCulture, out patch))
            {
                return(false);
            }
            pre   = versionMatch.Groups["pre"].Value;
            build = versionMatch.Groups["build"].Value;
            return(true);
        }
Пример #2
0
            public static bool TryParse(string versionString, out ComparatorSemanticVersion version)
            {
                version = null;
                if (versionString == null)
                {
                    return(false);
                }
                versionString = versionString.Trim();
                if (versionString.Length == 0)
                {
                    return(false);
                }
                if (versionString[0] == 'v' || versionString[0] == 'V')
                {
                    versionString = versionString.Substring(1);
                }
                if (versionString.Length == 0)
                {
                    return(false);
                }
                var versionMatch = VersionExpression.Match(versionString);

                if (!versionMatch.Success)
                {
                    return(false);
                }
                int?major, patch, minor;

                if (!TryParseNumber(versionMatch.Groups["major"].Value, false, out major))
                {
                    return(false);
                }
                if (!TryParseNumber(versionMatch.Groups["minor"].Value, true, out minor))
                {
                    return(false);
                }
                if (!TryParseNumber(versionMatch.Groups["patch"].Value, true, out patch))
                {
                    return(false);
                }
                var pre = versionMatch.Groups["pre"].Value;

                version = new ComparatorSemanticVersion(major ?? 0, minor, patch, pre);
                return(true);
            }
Пример #3
0
 /// <summary>Checks if a given string can be considered a valid <see cref="SemanticVersion" />.</summary>
 /// <param name="inputString">The string to check for validity.</param>
 /// <returns>True, if the passed string is a valid <see cref="SemanticVersion" />, otherwise false.</returns>
 public static bool IsVersion(string inputString) => VersionExpression.IsMatch(inputString);