class Redux::Store

Attributes

state[R]

Public Class Methods

new(initial_state = nil, &reducer) click to toggle source
# File lib/redux/store.rb, line 5
def initialize(initial_state = nil, &reducer)
  @state     = initial_state
  @reducer   = reducer || ->(*){}
  @listeners = []
  dispatch({})
end

Public Instance Methods

dispatch(action) click to toggle source
# File lib/redux/store.rb, line 12
def dispatch(action)
  @state = @reducer.call(@state, action)
  @listeners.each{ |listener| listener.call() }
end
subscribe(&listener) click to toggle source
# File lib/redux/store.rb, line 17
def subscribe(&listener)
  @listeners << listener
  ->{ @listeners.delete(listener) }
end