class FortuneTeller::SpendingStrategy
The spending strategy being used when simulating with FortuneTeller
Public Instance Methods
resolution_transforms(state:)
click to toggle source
# File lib/fortuneteller/spending_strategy.rb, line 4 def resolution_transforms(state:) transforms = [] reader = state_reader 12.times do |i| date = determine_transform_date(state, i) data = reader.read(date) next unless data.strategy == :exact amount = data.amount.on(date) - determine_take_home_pay(state, i) transforms.push(gen_transform(date, amount)) if amount.positive? end transforms end
Private Instance Methods
determine_take_home_pay(state, index)
click to toggle source
# File lib/fortuneteller/spending_strategy.rb, line 31 def determine_take_home_pay(state, index) c = state.cashflow merged = state.class.cashflow_base merged.merge!(c[:primary][index]).merge!(c[:partner][index]) merged.line_items[:take_home_pay] end
determine_transform_date(state, index)
click to toggle source
# File lib/fortuneteller/spending_strategy.rb, line 27 def determine_transform_date(state, index) Date.new(state.from.year, (index + 1), 1) end
gen_transform(date, amount)
click to toggle source
# File lib/fortuneteller/spending_strategy.rb, line 19 def gen_transform(date, amount) self.class::Transform.new( holder: :joint, date: date, withdrawal: amount ) end