class Weesked::DayBuilder

Attributes

dates[R]

Public Class Methods

new(dates) click to toggle source
# File lib/weesked/day_builder.rb, line 8
def initialize dates
  @dates = dates
end

Public Instance Methods

run() click to toggle source
# File lib/weesked/day_builder.rb, line 12
def run
  if dates.kind_of? Range
    build_from_date_range
  elsif dates.kind_of? Time
    build_from_single_date
  else
    raise DateNotRecognized
  end
end

Private Instance Methods

beginning_of_step(time) click to toggle source
# File lib/weesked/day_builder.rb, line 55
def beginning_of_step time
  (seconds_since_midnight(time) / Weesked.time_step) * Weesked.time_step
end
build_from_date_range() click to toggle source
# File lib/weesked/day_builder.rb, line 41
def build_from_date_range
  start = build_from_single_date dates.begin
  ending = build_from_single_date dates.end
  raise NotAvailiable unless start.day == ending.day
  i_start = Weesked.availiable_steps.index start.steps.first
  i_end = Weesked.availiable_steps.index ending.steps.first
  array = if Weesked.steps_day_shift > 0 && i_start > i_end
    Weesked.availiable_steps.slice(i_start..-1) + Weesked.availiable_steps.slice(0..i_end)
  else
    Weesked.availiable_steps.slice(i_start..i_end)
  end
  Day.new start.day, array
end
build_from_single_date(date=dates) click to toggle source
# File lib/weesked/day_builder.rb, line 26
def build_from_single_date date=dates
  wd = date.wday
  time = beginning_of_step date
  step = step_index time
  raise NotAvailiable unless Weesked.availiable_steps.include? step
  if step < Weesked.steps_day_shift
    if wd == SUNDAY
      wd = SATURDAY
    else
      wd -= 1
    end
  end
  Day.new(wd, step)
end
seconds_since_midnight(time) click to toggle source
# File lib/weesked/day_builder.rb, line 63
def seconds_since_midnight time
  time.hour * SECONDS_IN_HOUR + time.min * SECONDS_IN_MINUTE + time.sec
end
step_index(seconds) click to toggle source
# File lib/weesked/day_builder.rb, line 59
def step_index seconds
  seconds / Weesked.time_step
end