# Finitomata v0.40.0 - Table of Contents

> The FSM implementation generated from PlantUML textual representation.

## Pages

- [Finitomata](readme.md)
- [Finite Automata](fsm.md)
- [Finitomata Compiler](compiler.md)
- [Finitomata Cheatsheet](cheatsheet.md)

## Modules

- FSM
  - [Finitomata](Finitomata.md): 
  - [Finitomata.Error](Finitomata.Error.md): The canonical representation of a failure that happened while processing a transition.
  - [Finitomata.Flow](Finitomata.Flow.md): The basic “brick” to build forks in top-level `Finitomata` instances.
  - [Infinitomata](Infinitomata.md): The sibling of `Finitomata`, but runs transparently in the cluster.

- Test
  - [Finitomata.ExUnit](Finitomata.ExUnit.md): Helpers and assertions to make `Finitomata` implementation easily testable.
  - [Finitomata.ExUnit.Listener](Finitomata.ExUnit.Listener.md): A dependency-free `Finitomata.Listener` implementation for tests.

- Goods
  - [Finitomata.Accessible](Finitomata.Accessible.md): The convenience module, exposing `start_link/1` to embed `Finitomata.Supervisor`
implementation into a supervision tree in an agnostic way.
  - [Finitomata.Cache](Finitomata.Cache.md): The self-curing cache based on `Finitomata` implementation.
  - [Finitomata.Pool](Finitomata.Pool.md): The instance of _FSM_ backed up by `Finitomata`.
  - [Finitomata.Throttler](Finitomata.Throttler.md): The internal definition of the call to throttle.

- Internals
  - [Finitomata.ClusterInfo](Finitomata.ClusterInfo.md): The behaviour to be implemented for locating the node across the cluster.
  - [Finitomata.Listener](Finitomata.Listener.md): The behaviour to be implemented and passed to `use Finitomata` to receive
  all the state transitions notifications.

  - [Finitomata.Parser](Finitomata.Parser.md): The behaviour, defining the parser to produce _FSM_ out of textual representation.

  - [Finitomata.Pool.Actor](Finitomata.Pool.Actor.md): The behaviour specifying the actor in the pool.

  - [Finitomata.State](Finitomata.State.md): Carries the state of the FSM.

  - [Finitomata.Supervisor](Finitomata.Supervisor.md): The behaviour for actual _FSM_ implementations across _Finitomata_ framework.
  - [Finitomata.Transition](Finitomata.Transition.md): The internal representation of `Transition`.
  - [Finitomata.Transition.Path](Finitomata.Transition.Path.md): The path from one state to another one

- Persistence
  - [Finitomata.Persistency](Finitomata.Persistency.md): The behaviour to be implemented by a persistent storage to be used
  with `Finitomata` (pass the implementation as `persistency: Impl.Module.Name`
  to `use Finitomata`.)
  - [Finitomata.Persistency.DETS](Finitomata.Persistency.DETS.md): Built-in disk-durable `Finitomata.Persistency` adapter backed by a `:dets` file.
  - [Finitomata.Persistency.ETS](Finitomata.Persistency.ETS.md): Built-in in-memory `Finitomata.Persistency` adapter backed by a named ETS table.
  - [Finitomata.Persistency.Persistable](Finitomata.Persistency.Persistable.md): The protocol to be implemented for custom data to be used in pair with
  `Finitomata.Persistency.Protocol` persistency adapter.
  - [Finitomata.Persistency.Protocol](Finitomata.Persistency.Protocol.md): Default implementation of persistency adapter that does nothing but routes
  to the implementation of `Finitomata.Persistency.Persistable` for the data.

- Exceptions
  - [Finitomata.TestSyntaxError](Finitomata.TestSyntaxError.md)
  - [Finitomata.TestTransitionError](Finitomata.TestTransitionError.md)

## Mix Tasks

- [mix finitomata.generate](Mix.Tasks.Finitomata.Generate.md): Mix task to generate the `Finitomata` instance scaffold.
- [mix finitomata.generate.test](Mix.Tasks.Finitomata.Generate.Test.md): Mix task to generate the `Finitomata.ExUnit` test scaffold.

