public override bool DoesMatchInput(string input) { string[] splitBySeperator = input.Split(separator: Separator); if (splitBySeperator != null && splitBySeperator.Length != 2) { return(false); } return (OtherCalculations.Any(predicate: m => m.DoesMatchInput(input: splitBySeperator.First())) && OtherCalculations.Any(predicate: m => m.DoesMatchInput(input: splitBySeperator.Last()))); }
public override DateTimeRange CalculateFromInput(string input = "") { string[] splitBySeperator = input .Split(separator: Separator) .Take(count: 2) .ToArray(); string startInput = splitBySeperator.First(); string endInput = splitBySeperator.Last(); DateTimeRange startDateTimeRange = OtherCalculations .FirstOrDefault(predicate: m => m.DoesMatchInput(input: startInput)) ?.CalculateFromInput(input: startInput) ?? DateTimeRange.Empty; DateTimeRange endDateTimeRange = OtherCalculations .FirstOrDefault(predicate: m => m.DoesMatchInput(input: endInput)) ?.CalculateFromInput(input: endInput) ?? DateTimeRange.Empty; return(new DateTimeRange( start: startDateTimeRange.Start, end: endDateTimeRange.End)); }