Generators
By implementing the Diesel.Generator
behaviour, developers can produce elixir code, based on a DSL
definition. For example, we could imagine a GenServer based implementation of a state machine:
defmodule MyApp.Fsm do
use Diesel,
otp_app: ...,
dsl: ...,
parsers: [...],
generators: [
MyApp.Fsm.Generator.GenServer
]
where:
defmodule MyApp.Fsm.Generator.GenServer do
@moduledoc "Generates a GenServer for a state machine DSL"
@behaviour Diesel.Generator
@impl true
def generate(definition, _opts) do
quote do
use GenServer
...
end
end
end