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