defmodule Spark.Dsl.Verifier do
@moduledoc """
A verifier gets the dsl state and can return `:ok` or `:error`.
In a verifier, you can reference and depend on other modules without causing compile time dependencies.
"""
@callback verify(map) ::
:ok
| {:error, term}
| {:warn, String.t() | list(String.t())}
defmacro __using__(_) do
quote generated: true do
@behaviour Spark.Dsl.Verifier
end
end
defdelegate get_persisted(dsl, key), to: Spark.Dsl.Transformer
defdelegate get_persisted(dsl, key, default), to: Spark.Dsl.Transformer
defdelegate get_option(dsl_state, path, option), to: Spark.Dsl.Transformer
defdelegate get_option(dsl_state, path, option, default), to: Spark.Dsl.Transformer
defdelegate fetch_option(dsl_state, path, option), to: Spark.Dsl.Transformer
defdelegate get_entities(dsl_state, path), to: Spark.Dsl.Transformer
end