Class: Trader::GameBackend::State

Inherits:
Object
  • Object
show all
Defined in:
lib/trade-o-matic/adapters/game_backend/state.rb

Instance Method Summary collapse

Constructor Details

#initializeState

Returns a new instance of State.



6
7
8
# File 'lib/trade-o-matic/adapters/game_backend/state.rb', line 6

def initialize
  reset
end

Instance Method Details

#account_for(_account_name, create: true) ⇒ Object



30
31
32
33
34
# File 'lib/trade-o-matic/adapters/game_backend/state.rb', line 30

def (, create: true)
   = state['accounts'][]
   = state['accounts'][] = {} if .nil? && create
  
end

#all_marketsObject



22
23
24
# File 'lib/trade-o-matic/adapters/game_backend/state.rb', line 22

def all_markets
  state['markets'].values.map { |m| CurrencyPair.new(m['base'], m['quote']) }
end

#balance_for(_account_name, _currency, create: true) ⇒ Object



36
37
38
39
40
41
# File 'lib/trade-o-matic/adapters/game_backend/state.rb', line 36

def balance_for(, _currency, create: true)
   = ()
  balance = [_currency.to_s]
  balance = [_currency.to_s] = new_balance if balance.nil? && create
  balance
end

#find_order_by_id(_id) ⇒ Object

Raises:

  • (ArgumentError)


49
50
51
52
53
54
55
56
# File 'lib/trade-o-matic/adapters/game_backend/state.rb', line 49

def find_order_by_id(_id)
  state['markets'].values.each do |market|
    order = market['open'].find { |o| o['id'] == _id } ||
      market['closed'].find { |o| o['id'] == _id }
    return { market: market, order: order } unless order.nil?
  end
  raise ArgumentError, 'order id not found'
end

#load_from_file(_path) ⇒ Object



10
11
12
13
14
15
16
# File 'lib/trade-o-matic/adapters/game_backend/state.rb', line 10

def load_from_file(_path)
  if File.exists? _path
    @state = YAML.load File.read(_path)
  else
    reset
  end
end

#market_for(_pair, create: true) ⇒ Object



43
44
45
46
47
# File 'lib/trade-o-matic/adapters/game_backend/state.rb', line 43

def market_for(_pair, create: true)
  market = state['markets'][_pair.to_s]
  market = state['markets'][_pair.to_s] = new_market_for(_pair) if market.nil? && create
  market
end

#store_to_file(_path) ⇒ Object



18
19
20
# File 'lib/trade-o-matic/adapters/game_backend/state.rb', line 18

def store_to_file(_path)
  File.write _path, YAML.dump(@state)
end

#unique_idObject



26
27
28
# File 'lib/trade-o-matic/adapters/game_backend/state.rb', line 26

def unique_id
  state['next_id'] += 1
end