state_machine v0.1.2 StateMachine.State behaviour

State module provides a structure describing a state in the state machine definition. It stores state name along with various callbacks to run before/after leaving/entering a state. Another purpose of the module is to define a behaviour for state get/setters along with the default implementation.

The state get/setters for basic structures and Ecto records are provided out of the box.

Link to this section Summary

Functions

Private function for running after_enter(state) callbacks.

Private function for running after_leave(state) callbacks.

Private function for running before_enter(state) callbacks.

Private function for running before_leave(state) callbacks.

Default implementation of a state getter.

Default implementation of a state setter.

Link to this section Types

Link to this type

t(model)
t(model) :: %StateMachine.State{
  after_enter: [StateMachine.Callback.t(model)],
  after_leave: [StateMachine.Callback.t(model)],
  before_enter: [StateMachine.Callback.t(model)],
  before_leave: [StateMachine.Callback.t(model)],
  name: atom()
}

Link to this section Functions

Link to this function

after_enter(ctx)
after_enter(StateMachine.Context.t(model)) :: StateMachine.Context.t(model)

Private function for running after_enter(state) callbacks.

Link to this function

after_leave(ctx)
after_leave(StateMachine.Context.t(model)) :: StateMachine.Context.t(model)

Private function for running after_leave(state) callbacks.

Link to this function

before_enter(ctx)
before_enter(StateMachine.Context.t(model)) :: StateMachine.Context.t(model)

Private function for running before_enter(state) callbacks.

Link to this function

before_leave(ctx)
before_leave(StateMachine.Context.t(model)) :: StateMachine.Context.t(model)

Private function for running before_leave(state) callbacks.

Default implementation of a state getter.

Default implementation of a state setter.

Link to this section Callbacks

Link to this callback

set(ctx, state)
set(ctx :: StateMachine.Context.t(model), state :: atom()) ::
  StateMachine.Context.t(model)