예제 #1
0
 private static List <Resolution.Entry> ResolveDateTimeRange(TimexProperty timex)
 {
     if (timex.PartOfDay != null)
     {
         var date      = TimexValue.DateValue(timex);
         var timeRange = PartOfDayTimeRange(timex);
         return(new List <Resolution.Entry>
         {
             new Resolution.Entry
             {
                 Timex = timex.TimexValue,
                 Type = "datetimerange",
                 Start = $"{date} {timeRange.Item1}",
                 End = $"{date} {timeRange.Item2}",
             },
         });
     }
     else
     {
         var range = TimexHelpers.ExpandDateTimeRange(timex);
         return(new List <Resolution.Entry>
         {
             new Resolution.Entry
             {
                 Timex = timex.TimexValue,
                 Type = "datetimerange",
                 Start = $"{TimexValue.DateValue(range.Start)} {TimexValue.TimeValue(range.Start)}",
                 End = $"{TimexValue.DateValue(range.End)} {TimexValue.TimeValue(range.End)}",
             },
         });
     }
 }
예제 #2
0
        public static string Format(TimexProperty timex)
        {
            var types = timex.Types.Count != 0 ? timex.Types : TimexInference.Infer(timex);

            if (types.Contains(Constants.TimexTypes.Present))
            {
                return("PRESENT_REF");
            }

            if ((types.Contains(Constants.TimexTypes.DateTimeRange) || types.Contains(Constants.TimexTypes.DateRange) ||
                 types.Contains(Constants.TimexTypes.TimeRange)) && types.Contains(Constants.TimexTypes.Duration))
            {
                var range = TimexHelpers.ExpandDateTimeRange(timex);
                return($"({Format(range.Start)},{Format(range.End)},{Format(range.Duration)})");
            }

            if (types.Contains(Constants.TimexTypes.DateTimeRange))
            {
                return($"{FormatDate(timex)}{FormatTimeRange(timex)}");
            }

            if (types.Contains(Constants.TimexTypes.DateRange))
            {
                return($"{FormatDateRange(timex)}");
            }

            if (types.Contains(Constants.TimexTypes.TimeRange))
            {
                return($"{FormatTimeRange(timex)}");
            }

            if (types.Contains(Constants.TimexTypes.DateTime))
            {
                return($"{FormatDate(timex)}{FormatTime(timex)}");
            }

            if (types.Contains(Constants.TimexTypes.Duration))
            {
                return($"{FormatDuration(timex)}");
            }

            if (types.Contains(Constants.TimexTypes.Date))
            {
                return($"{FormatDate(timex)}");
            }

            if (types.Contains(Constants.TimexTypes.Time))
            {
                return($"{FormatTime(timex)}");
            }

            return(string.Empty);
        }
예제 #3
0
        private static List <Resolution.Entry> ResolveDefiniteDateRange(TimexProperty timex, DateObject date)
        {
            var range = TimexHelpers.ExpandDateTimeRange(timex);

            return(new List <Resolution.Entry>
            {
                new Resolution.Entry
                {
                    Timex = timex.TimexValue,
                    Type = "daterange",
                    Start = TimexValue.DateValue(range.Start),
                    End = TimexValue.DateValue(range.End),
                },
            });
        }
예제 #4
0
        private static List <Resolution.Entry> ResolveDateTimeRange(TimexProperty timex, DateObject date)
        {
            if (timex.PartOfDay != null)
            {
                var dateValues = GetDateValues(timex, date);
                var timeRange  = PartOfDayTimeRange(timex);
                var result     = new List <Resolution.Entry> {
                };
                foreach (string dateValue in dateValues)
                {
                    result.Add(
                        new Resolution.Entry
                    {
                        Timex = timex.TimexValue,
                        Type  = "datetimerange",
                        Start = TimexHelpers.FormatResolvedDateValue(dateValue, timeRange.Item1),
                        End   = TimexHelpers.FormatResolvedDateValue(dateValue, timeRange.Item2),
                    });
                }

                return(result);
            }
            else
            {
                var range           = TimexHelpers.ExpandDateTimeRange(timex);
                var startDateValues = GetDateValues(range.Start, date);
                var endDateValues   = GetDateValues(range.End, date);
                var result          = new List <Resolution.Entry> {
                };
                foreach (var dateRange in startDateValues.Zip(endDateValues, (n, w) => new { start = n, end = w }))
                {
                    result.Add(
                        new Resolution.Entry
                    {
                        Timex = timex.TimexValue,
                        Type  = "datetimerange",
                        Start = TimexHelpers.FormatResolvedDateValue(dateRange.start, TimexValue.TimeValue(range.Start, date)),
                        End   = TimexHelpers.FormatResolvedDateValue(dateRange.end, TimexValue.TimeValue(range.End, date)),
                    });
                }

                return(result);
            }
        }