class DR::DateRange

Attributes

d[RW]
t[RW]

Public Class Methods

new(d) click to toggle source
# File lib/dr/parse/date_parse.rb, line 108
def initialize(d)
        @d=d
        @t=d.map do |range|
                case range.length
                when 1
                        [DateRange.to_time(range[0], complete_date: :first),
                        DateRange.to_time(range[0], complete_date: :last)]
                when 2
                        [DateRange.to_time(range[0], complete_date: :first),
                        DateRange.to_time(range[1], complete_date: :last)]
                else
                        range.map {|i| DateRange.to_time(i)}
                end
        end
end

Public Instance Methods

<=>(d2, sort_date_by: :last,**_opts) click to toggle source

sort_date_by :first or :last

# File lib/dr/parse/date_parse.rb, line 125
def <=>(d2, sort_date_by: :last,**_opts)
        d1=@t; d2=d2.t
        sel=lambda do |d|
                case sort_date_by
                when :last
                        return d.map {|i| i.last}
                when :first
                        return d.map {|i| i.first}
                end
        end
        best=lambda do |d|
                case sort_date_by
                when :last
                        return d.max
                when :first
                        return d.min
                end
        end
        b1=best.call(sel.call(d1))
        b2=best.call(sel.call(d2))
        return b1 <=> b2
end
to_s(join: ", ", range_join: " – ", **opts) click to toggle source
# File lib/dr/parse/date_parse.rb, line 148
def to_s(join: ", ", range_join: " – ", **opts)
        r=@d.map do |range|
                range.map do |d|
                        DateRange.output_date(d,**opts)
                end.join(range_join)
        end.join(join)
        r.empty? ? nil : r
end