| Class | TaskJuggler::Interval |
| In: |
lib/taskjuggler/Interval.rb
|
| Parent: | Object |
This is the based class used to store several kinds of intervals in derived classes.
| end | [R] | |
| start | [R] |
Append or prepend the Interval iv to self. If iv does not directly attach to self, just return self.
# File lib/taskjuggler/Interval.rb, line 70 def combine(iv) raise ArgumentError, "Class mismatch" if self.class != iv.class if iv.end == @start # Prepend iv Array.new self.class.new(iv.start, @end) elsif @end == iv.start # Append iv Array.new self.class.new(@start, iv.end) else self end end
Return true if arg is contained within the Interval. It can either be a single TjTime or another Interval.
# File lib/taskjuggler/Interval.rb, line 37 def contains?(arg) if arg.is_a?(Interval) raise ArgumentError, "Class mismatch" if self.class != arg.class return @start <= arg.start && arg.end <= @end else raise ArgumentError, "Class mismatch" if @start.class != arg.class return @start <= arg && arg < @end end end
Return a new Interval that contains the overlap of self and the Interval iv. In case there is no overlap, nil is returned.
# File lib/taskjuggler/Interval.rb, line 61 def intersection(iv) raise ArgumentError, "Class mismatch" if self.class != iv.class newStart = @start > iv.start ? @start : iv.start newEnd = @end < iv.end ? @end : iv.end newStart < newEnd ? self.class.new(newStart, newEnd) : nil end
Check whether the Interval arg overlaps with this Interval.
# File lib/taskjuggler/Interval.rb, line 48 def overlaps?(arg) if arg.is_a?(Interval) raise ArgumentError, "Class mismatch" if self.class != arg.class return (@start <= arg.start && arg.start < @end) || (arg.start <= @start && @start < arg.end) else raise ArgumentError, "Class mismatch" if @start.class != arg.class return @start <= arg && arg < @end end end