module Toji::Product::ScheduleFactory
Public Instance Methods
action_schedules()
click to toggle source
# File lib/toji/product/schedule_factory.rb, line 76 def action_schedules recipe.actions.map.with_index {|action, i| create_action_schedule( date: base_date.next_day(action.interval_days), action_index: i, action: action, ) } end
create_action_schedule(date:, action_index:, action:)
click to toggle source
# File lib/toji/product/schedule_factory.rb, line 16 def create_action_schedule(date:, action_index:, action:) raise Error, "implement required: create_action_schedule" end
create_kake_schedule(date:, group_key:, step_weights:, kakes:)
click to toggle source
# File lib/toji/product/schedule_factory.rb, line 12 def create_kake_schedule(date:, group_key:, step_weights:, kakes:) raise Error, "implement required: create_kake_schedule" end
create_koji_schedule(date:, group_key:, step_weights:, kojis:)
click to toggle source
@dynamic recipe @dynamic base_date
# File lib/toji/product/schedule_factory.rb, line 8 def create_koji_schedule(date:, group_key:, step_weights:, kojis:) raise Error, "implement required: create_koji_schedule" end
kake_schedules()
click to toggle source
# File lib/toji/product/schedule_factory.rb, line 48 def kake_schedules recipe.steps.inject([]) {|result, step| step.kakes&.each {|kake| result << { step_weight: { index: step.index, subindex: step.subindex, weight: kake.weight, }, date: base_date.next_day(kake.interval_days), kake: kake, } } result }.select {|schedule| 0<schedule[:kake]&.weight.to_f }.group_by {|schedule| [schedule[:date], schedule[:kake].group_key] }.map {|(date, group_key), schedules| create_kake_schedule( date: date, group_key: "Kake:#{date.strftime('%Y%m%d')}:#{group_key}", step_weights: schedules.map {|schedule| schedule[:step_weight]}.sort_by {|x| [x[:index], x[:subindex]]}, kakes: schedules.map{|schedule| schedule[:kake]}, ) } end
koji_schedules()
click to toggle source
# File lib/toji/product/schedule_factory.rb, line 20 def koji_schedules recipe.steps.inject([]) {|result, step| step.kojis&.each {|koji| result << { step_weight: { index: step.index, subindex: step.subindex, weight: koji.weight, }, date: base_date.next_day(koji.interval_days), koji: koji, } } result }.select {|schedule| 0<schedule[:koji]&.weight.to_f }.group_by {|schedule| [schedule[:date], schedule[:koji].group_key] }.map {|(date, group_key), schedules| create_koji_schedule( date: date, group_key: "Koji:#{date.strftime('%Y%m%d')}:#{group_key}", step_weights: schedules.map {|schedule| schedule[:step_weight]}.sort_by {|x| [x[:index], x[:subindex]]}, kojis: schedules.map{|schedule| schedule[:koji]}, ) } end
rice_schedules()
click to toggle source
# File lib/toji/product/schedule_factory.rb, line 86 def rice_schedules koji_schedules + kake_schedules end
schedules()
click to toggle source
# File lib/toji/product/schedule_factory.rb, line 90 def schedules rice_schedules + action_schedules end