class Timely::TemporalPatterns::Interval

Attributes

first_datetime[RW]
last_datetime[RW]

Public Class Methods

new(first_datetime, last_datetime = nil) click to toggle source
# File lib/timely/temporal_patterns/interval.rb, line 16
def initialize(first_datetime, last_datetime = nil)
  self.first_datetime = first_datetime
  self.last_datetime = last_datetime || first_datetime
end
surrounding(intervals) click to toggle source
# File lib/timely/temporal_patterns/interval.rb, line 6
def self.surrounding(intervals)
  first_datetime = nil
  last_datetime = nil
  intervals.each do |i|
    first_datetime = i.first_datetime if first_datetime.nil? || i.first_datetime < first_datetime
    last_datetime = i.last_datetime if last_datetime.nil? || i.last_datetime > last_datetime
  end
  new(first_datetime, last_datetime)
end

Public Instance Methods

==(other) click to toggle source
# File lib/timely/temporal_patterns/interval.rb, line 37
def ==(other)
  self.range == other.range
end
date_time_to_s(datetime) click to toggle source
# File lib/timely/temporal_patterns/interval.rb, line 56
def date_time_to_s(datetime)
  datetime.strftime("%I:%M %p")
end
datetimes() click to toggle source
# File lib/timely/temporal_patterns/interval.rb, line 33
def datetimes
  range.to_a
end
first_datetime=(first_datetime) click to toggle source
# File lib/timely/temporal_patterns/interval.rb, line 21
def first_datetime=(first_datetime)
  @first_datetime = first_datetime.to_datetime
end
last_datetime=(last_datetime) click to toggle source
# File lib/timely/temporal_patterns/interval.rb, line 25
def last_datetime=(last_datetime)
  @last_datetime = last_datetime.to_datetime
end
range() click to toggle source
# File lib/timely/temporal_patterns/interval.rb, line 29
def range
  (first_datetime..last_datetime)
end
to_s() click to toggle source
# File lib/timely/temporal_patterns/interval.rb, line 41
def to_s
  if first_datetime == last_datetime
    "on #{first_datetime}#{first_datetime == first_datetime.beginning_of_day ? "" : " at #{first_datetime.strftime("%I:%M %p")}"}"
  elsif first_datetime == first_datetime.beginning_of_month && last_datetime == last_datetime.end_of_month
    if first_datetime.month == last_datetime.month
      "during #{first_datetime.strftime('%b %Y')}"
    else
      "from #{first_datetime.strftime('%b %Y')} to #{last_datetime.strftime('%b %Y')}"
    end
  else
    "from #{first_datetime}#{first_datetime == first_datetime.beginning_of_day ? "" : " at #{first_datetime.strftime("%I:%M %p")}"} "+
    "to #{last_datetime}#{last_datetime == last_datetime.beginning_of_day ? "" : " at #{last_datetime.strftime("%I:%M %p")}"}"
  end
end