Class Runt::DateRange
In: lib/runt/daterange.rb
Parent: Range

DateRange

Based the range pattern by Martin Fowler.

Author:Matthew Lipper

Methods

<=>   empty?   gap   include?   max   min   new   overlap?   to_s  

Included Modules

DPrecision

Constants

EMPTY = DateRange.new(PDate.day(2004,2,2),PDate.day(2004,2,1))

Attributes

end_expr  [R] 
start_expr  [R] 

Public Class methods

[Source]

# File lib/runt/daterange.rb, line 23
    def initialize(start_expr, end_expr,exclusive=false)
      super(start_expr, end_expr,exclusive)
      @start_expr, @end_expr = start_expr, end_expr
    end

Public Instance methods

[Source]

# File lib/runt/daterange.rb, line 61
    def <=>(other)
      return @start_expr <=> other.start_expr if(@start_expr != other.start_expr)
      return @end_expr <=> other.end_expr
    end

[Source]

# File lib/runt/daterange.rb, line 39
    def empty?
      return @start_expr >= @end_expr
    end

[Source]

# File lib/runt/daterange.rb, line 43
    def gap(obj)

      return EMPTY if self.overlap? obj

      lower=nil
      higher=nil

      if((self<=>obj)<0)
        lower=self
        higher=obj
      else
        lower=obj
        higher=self
      end

      return DateRange.new((lower.end_expr+1),(higher.start_expr-1))
    end

[Source]

# File lib/runt/daterange.rb, line 28
    def include?(obj)
      return super(obj.min) && super(obj.max) if obj.kind_of? Range
      return super(obj)
    end

[Source]

# File lib/runt/daterange.rb, line 67
    def max; @end_expr  end

[Source]

# File lib/runt/daterange.rb, line 66
    def min; @start_expr  end

[Source]

# File lib/runt/daterange.rb, line 33
    def overlap?(obj)
      return true if( member?(obj) || include?(obj.min) || include?(obj.max) )
      return true if( obj.kind_of?(Range) && obj.include?(self) )
      false
    end

[Source]

# File lib/runt/daterange.rb, line 68
    def to_s; @start_expr.to_s + " " + @end_expr.to_s end

[Validate]