class BeanSprout::SproutBunch
Attributes
sprouts[R]
Public Class Methods
new(id, sprouts)
click to toggle source
# File lib/bean_sprout/transaction.rb, line 17 def initialize id, sprouts @id = id @sprouts = sprouts end
Public Instance Methods
balanced!()
click to toggle source
# File lib/bean_sprout/transaction.rb, line 33 def balanced! raise NotBalancedError.new("#{@sprouts} not balanced.") unless balanced? end
balanced?()
click to toggle source
# File lib/bean_sprout/transaction.rb, line 22 def balanced? balances = Hash.new(0) @sprouts.each do |sprout| currency = sprout.bean.currency balances[currency] += sprout.amount end balances.values.inject(true) do |acc, currency_balance| acc && currency_balance == 0 end end
plant()
click to toggle source
# File lib/bean_sprout/transaction.rb, line 37 def plant balanced! raise IllegalStateError, "Can't plant twice." if defined? @in_place sprouts.each do |sprout| sprout.bean.grow sprout end @in_place = true end
remove()
click to toggle source
# File lib/bean_sprout/transaction.rb, line 46 def remove balanced! unless defined? @in_place raise IllegalStateError, "Must plant before remove." end sprouts.each do |sprout| sprout.bean.pick sprout end @in_place = false end