module DateDiscreter

Constants

VERSION

Public Instance Methods

continuous_days?(dates) click to toggle source

whether arg months are continuous @param dates [Array<Date>]

# File lib/date_discreter.rb, line 50
def continuous_days?(dates)
  discrete_days(dates).empty?
end
continuous_hours?(hours) click to toggle source

whether arg months are continuous @param hours [Array<Date>]

# File lib/date_discreter.rb, line 56
def continuous_hours?(hours)
  discrete_hours(hours).empty?
end
continuous_months?(months) click to toggle source

whether arg months are continuous @param months [Array<Date>]

# File lib/date_discreter.rb, line 44
def continuous_months?(months)
  discrete_months(months).empty?
end
discrete_days(dates) click to toggle source

return discrete of arg days @param dates [Array<Date,Time>] @return [Array<Date>] if arg is continuous return empty array.

# File lib/date_discreter.rb, line 17
def discrete_days(dates)
  discrete_times(dates, 1.day)
end
discrete_hours(hours) click to toggle source

return discrete of arg hours @param hours [Array<Time>] @return [Array<Time>] if arg is continuous return empty array.

# File lib/date_discreter.rb, line 24
def discrete_hours(hours)
  discrete_times(hours, 1.hour)
end
discrete_months(months) click to toggle source

return discrete of arg months @param months [Array<Date,Time>] @return [Array<Date>] if arg is continuous return empty array.

# File lib/date_discreter.rb, line 10
def discrete_months(months)
  discrete_times(months, 1.month)
end
discrete_times(target_times, degree) click to toggle source
# File lib/date_discreter.rb, line 28
def discrete_times(target_times, degree)
  return [] if target_times.length < 2

  sorted = target_times.sort
  cursor, range_upper = sorted[0], sorted[-1]
  filledup = []
  while (cursor < range_upper)
    filledup << cursor
    cursor += degree
  end
  filledup - target_times
end