private void SetStartEndDates(ParsedResult result, DateTime date, DateTime reference)
        {
            ParsedComponents pivot = null;
            ParsedComponents node  = null;

            result.End = result.End ?? result.Start.Clone() as ParsedComponents;

            if (Config.Direction == DateTimeDirection.Backward)
            {
                pivot = result.End;
                node  = result.Start;
            }
            else
            {
                pivot = result.Start;
                node  = result.End;
            }
            pivot.Imply("year", reference.Year);
            pivot.Imply("month", reference.Month);
            pivot.Imply("day", reference.Day);
            pivot.Imply("hour", reference.Hour);
            pivot.Imply("minute", reference.Minute);
            pivot.Imply("second", reference.Second);

            node.Imply("year", date.Year);
            node.Imply("month", date.Month);
            node.Imply("day", date.Day);
            node.Imply("hour", date.Hour);
            node.Imply("minute", date.Minute);
            node.Imply("second", date.Second);

            result.Tags[this.GetType().Name] = true;
        }
Пример #2
0
        public object Clone()
        {
            ParsedComponents pc = (ParsedComponents)this.MemberwiseClone();

            pc.knownValues   = new Dictionary <string, int>(this.knownValues);
            pc.impliedValues = new Dictionary <string, int>(this.impliedValues);

            return(pc);
        }
Пример #3
0
        public ParsedResult(TemporalResult result)
        {
            result = result ?? new TemporalResult();

            Reference = result.Reference;
            Index     = result.Index;
            Text      = result.Text;
            Tags      = result.Tags;
            Start     = new ParsedComponents(result.Start, result.Reference);
            if (result.End != null)
            {
                End = new ParsedComponents(result.End, result.Reference);
            }
        }