public static List <Token> ExtractorDurationWithBeforeAndAfter(string text, ExtractResult er, List <Token> ret, IDateTimeUtilityConfiguration utilityConfiguration) { var pos = (int)er.Start + (int)er.Length; if (pos <= text.Length) { var afterString = text.Substring(pos); var beforeString = text.Substring(0, (int)er.Start); var index = -1; if (MatchingUtil.GetAgoLaterIndex(afterString, utilityConfiguration.AgoRegex, out index)) { ret.Add(new Token(er.Start ?? 0, (er.Start + er.Length ?? 0) + index)); } else if (MatchingUtil.GetAgoLaterIndex(afterString, utilityConfiguration.LaterRegex, out index)) { ret.Add(new Token(er.Start ?? 0, (er.Start + er.Length ?? 0) + index)); } else if (MatchingUtil.GetInIndex(beforeString, utilityConfiguration.InConnectorRegex, out index)) { // for range unit like "week, month, year", it should output dateRange or datetimeRange if (!utilityConfiguration.RangeUnitRegex.IsMatch(er.Text)) { if (er.Start != null && er.Length != null && (int)er.Start >= index) { ret.Add(new Token((int)er.Start - index, (int)er.Start + (int)er.Length)); } } } } return(ret); }
public static List <Token> ExtractorDurationWithBeforeAndAfter(string text, ExtractResult er, List <Token> ret, IDateTimeUtilityConfiguration utilityConfiguration) { var pos = (int)er.Start + (int)er.Length; if (pos <= text.Length) { var afterString = text.Substring(pos); var beforeString = text.Substring(0, (int)er.Start); var index = -1; if (MatchingUtil.GetAgoLaterIndex(afterString, utilityConfiguration.AgoStringList, out index)) { ret.Add(new Token(er.Start ?? 0, (er.Start + er.Length ?? 0) + index)); } else if (MatchingUtil.GetAgoLaterIndex(afterString, utilityConfiguration.LaterStringList, out index)) { ret.Add(new Token(er.Start ?? 0, (er.Start + er.Length ?? 0) + index)); } else if (MatchingUtil.GetInIndex(beforeString, utilityConfiguration.InStringList, out index)) { if (er.Start != null && er.Length != null && (int)er.Start > index) { ret.Add(new Token((int)er.Start - index, (int)er.Start + (int)er.Length)); } } } return(ret); }