This is the based class used to store several kinds of intervals in derived classes.
Create a new Interval object. s is the interval start, e the interval end (not included).
# File lib/taskjuggler/Interval.rb, line 24 def initialize(s, e) @start = s @end = e # The end must not be before the start. if @end < @start raise ArgumentError, "Invalid interval (#{s} - #{e})" end end
Return true if the Interval iv describes an identical time period.
# File lib/taskjuggler/Interval.rb, line 94 def ==(iv) raise ArgumentError, "Class mismatch" if self.class != iv.class @start == iv.start && @end == iv.end end
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 68 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 35 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 59 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 46 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
Generated with the Darkfish Rdoc Generator 2.