public IEnumerable <LocalInterval> GetIntervals(LocalInterval interval = null) { var maskIntervals = mask.GetIntervals(interval); var contentIntervals = payload.GetIntervals(interval); return(TimeMathOld.Intersection(contentIntervals, maskIntervals).OrderBy(i => i.Start)); }
protected override IEnumerable <LocalInterval> GetLocalIntervalsBase(LocalInterval interval = null) { if (interval == null) { interval = new LocalInterval(Start, End); } if (!interval.Start.HasValue || !interval.End.HasValue) { throw new ArgumentOutOfRangeException("interval", "Cannot request shift for an unbounded date range"); } LocalDate currDate = (interval.Start.Value.Date < Start) ? Start : interval.Start.Value.Date; while (currDate <= interval.End.Value.Date) { foreach (LocalTimeInterval timeInterval in GetDayPattern(currDate).ToList()) { var start = currDate + timeInterval.Start; var end = currDate + timeInterval.End; yield return(new LocalInterval(start, end, null, timeInterval.Name)); } currDate = currDate.PlusDays(1); } }
private IEnumerable <LocalInterval> GetLocalIntervals(LocalInterval interval = null) { var ints = GetLocalIntervalsBase(interval); ints = isNot ? Not(ints) : ints; return(ints); }
public virtual IEnumerable <LocalInterval> GetIntervals(LocalInterval interval, DateTimeZone destinationTimezone) { var maskIntervals = mask.GetIntervals(interval, destinationTimezone); var contentIntervals = payload.GetIntervals(interval, destinationTimezone); return(TimeMathOld.Intersection(contentIntervals, maskIntervals).OrderBy(i => i.Start)); }
protected virtual IEnumerable <LocalInterval> GetLocalIntervalsBase(LocalInterval interval = null) { if (interval == null) { return(mask.Select(i => i.Clone())); } if (!interval.Start.HasValue || !interval.End.HasValue) { throw new ArgumentOutOfRangeException("interval", "Cannot request holidays for an unbounded range"); } return(TimeMathOld.Intersection(mask, interval)); }
public void Add_Before() { // Arrange var timeline1 = new TimelinePayload <KeyCountPayload>(new LocalInterval(new LocalDateTime(2008, 1, 4, 0, 0), new LocalDateTime(2008, 1, 8, 0, 0)).AddPayload(new KeyCountPayload("Craft", 1.5m))); var timeline2 = new TimelinePayload <KeyCountPayload>(new LocalInterval(new LocalDateTime(2008, 1, 1, 0, 0), new LocalDateTime(2008, 1, 3, 0, 0)).AddPayload(new KeyCountPayload("Craft", 1.5m))); // Act var actual = (timeline1 + timeline2).GetIntervals(); // Assert var expected = new LocalInterval[] { TimeBuilder.From(2008, 1, 1).To(2008, 1, 3).Payload("Craft", 1.5m).Interval, TimeBuilder.From(2008, 1, 4).To(2008, 1, 8).Payload("Craft", 1.5m).Interval, }; Assert.That(TimeMath.Equals(expected, actual), Is.True); }
public IEnumerable <LocalInterval> GetIntervals(LocalInterval interval = null) { if (layers.Count == 0) { return(GetLocalIntervals(interval)); } List <LocalInterval> currIntervals = GetLocalIntervals(interval).ToList(); var currTimeline = new TimelineMask(Timezone, currIntervals); foreach (var layer in layers) { var nextIntervals = layer.Value.GetIntervals(interval, Timezone).ToList(); var flat = layer.Key(currIntervals, nextIntervals).ToList(); currTimeline = new TimelineMask(Timezone, flat); currIntervals = currTimeline.GetIntervals(interval, Timezone).ToList(); } return(currTimeline.GetIntervals(interval)); }
public OverlappingIntervals(LocalInterval interval) { Add(interval); }
private static void LogTimeline(string heading, ITimeline timeline, DateTimeZone timezone) { var queryInterval = new LocalInterval(new LocalDate(2014, 12, 22), new LocalDate(2014, 12, 28)); LogTimeline(heading, timeline.GetIntervals(queryInterval, timezone)); }
public IEnumerable <LocalInterval> GetIntervals(LocalInterval interval, DateTimeZone destinationTimezone) { var ints = GetIntervals(interval); return(ints.Select(i => i.Map(Timezone, destinationTimezone))); }
public TimelineMask(DateTimeZone timezone, LocalInterval interval) : this(timezone, new NonOverlappingIntervals(interval)) { }