internal static ParsingResult TryParse(string input, out Interval interval) { interval = null; if (string.IsNullOrWhiteSpace(input)) { return(ParsingResult.EmptyInputString); } var match = ParsingUtilities.Match(input, Patterns); if (match == null) { return(ParsingResult.NotMatched); } int halfSteps; if (!ParsingUtilities.ParseInt(match, HalfStepsGroupName, 0, out halfSteps) || !IntervalUtilities.IsIntervalValid(halfSteps)) { return(ParsingResult.Error(HalfStepsNumberIsOutOfRange)); } interval = Interval.FromHalfSteps(halfSteps); return(ParsingResult.Parsed); }
internal static ParsingResult TryParse(string input, out Interval interval) { interval = null; if (string.IsNullOrWhiteSpace(input)) { return(ParsingResult.EmptyInputString); } var match = ParsingUtilities.Match(input, Patterns, ignoreCase: false); if (match == null) { return(ParsingResult.NotMatched); } var intervalQualityGroup = match.Groups[IntervalQualityGroupName]; if (!intervalQualityGroup.Success) { int halfSteps; if (!ParsingUtilities.ParseInt(match, HalfStepsGroupName, 0, out halfSteps) || !IntervalUtilities.IsIntervalValid(halfSteps)) { return(ParsingResult.Error(HalfStepsNumberIsOutOfRange)); } interval = Interval.FromHalfSteps(halfSteps); return(ParsingResult.Parsed); } var intervalQuality = IntervalQualitiesByLetters[intervalQualityGroup.Value]; int intervalNumber; if (!ParsingUtilities.ParseInt(match, IntervalNumberGroupName, 0, out intervalNumber) || intervalNumber < 1) { return(ParsingResult.Error(IntervalNumberIsOutOfRange)); } interval = Interval.Get(intervalQuality, intervalNumber); return(ParsingResult.Parsed); }