README.md
# Statex
[<img src="https://travis-ci.com/RstorLabs/statex.svg?branch=master">](https://travis-ci.com/RstorLabs/statex)
**General State Machine for Elixir**
Using Statex is easy, you just have to define a `@state_graph`.
```elixir
defmodule LightSwitch do
use Statex
@state_graph off: [flip: :on],
on: [flip: :off]
end
iex> {:ok, pid} = LightSwitch.start_link()
...
iex> LightSwitch.state(pid)
:off
iex> LightSwitch.flip(pid)
:ok
iex> LightSwitch.state(pid)
:on
iex> LightSwitch.flip(pid)
:ok
iex> LightSwitch.state(pid)
:off
```
## Installation
The package can be installed by adding `Statex` to your list of dependencies
in `mix.exs`:
```elixir
def deps do
[
{:statex, github: "RstorLabs/statex"}
]
end
```