Class: Arcp::Lease::BudgetCounter

Inherits:
Object
  • Object
show all
Defined in:
lib/arcp/lease.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(initial:) ⇒ BudgetCounter

Returns a new instance of BudgetCounter.



59
60
61
# File 'lib/arcp/lease.rb', line 59

def initialize(initial:)
  @remaining = initial.dup
end

Instance Attribute Details

#remainingObject (readonly)

Returns the value of attribute remaining.



57
58
59
# File 'lib/arcp/lease.rb', line 57

def remaining
  @remaining
end

Instance Method Details

#get(currency) ⇒ Object



72
# File 'lib/arcp/lease.rb', line 72

def get(currency) = @remaining[currency] || BigDecimal('0')

#negative?(currency) ⇒ Boolean

Returns:

  • (Boolean)


73
# File 'lib/arcp/lease.rb', line 73

def negative?(currency) = (@remaining[currency] || BigDecimal('0')).negative?

#snapshotObject



75
76
77
# File 'lib/arcp/lease.rb', line 75

def snapshot
  @remaining.transform_values(&:dup).freeze
end

#try_decrement(currency, amount) ⇒ Object



63
64
65
66
67
68
69
70
# File 'lib/arcp/lease.rb', line 63

def try_decrement(currency, amount)
  balance = @remaining[currency]
  return false if balance.nil?
  return false if balance < amount

  @remaining[currency] = balance - amount
  true
end