ash v1.36.4 Ash.Dsl behaviour View Source
The primary entry point for adding a DSL to a module.
To add a DSL to a module, add use Ash.Dsl, ...options. The options supported with use Ash.Dsl are:
:single_extension_kinds- The extension kinds that are allowed to have a single value. For example:[:data_layer]The default value is[].:many_extension_kinds- The extension kinds that can have multiple values. e.g[notifiers: [Notifier1, Notifier2]]The default value is[].:untyped_extensions?- Whether or not to support anextensionskey which contains untyped extensions The default value istrue.:default_extensions- The extensions that are included by default. e.g[data_layer: Default, notifiers: [Notifier1]]Default values for single extension kinds are overwritten if specified by the implementor, while many extension kinds are appended to if specified by the implementor. The default value is[].
See the callbacks defined in this module to augment the behavior/compilation of the module getting a Dsl.
Link to this section Summary
Callbacks
Handle options in the context of the module, after all extensions have been processed. Must return a quote block.
Handle options in the context of the module. Must return a quote block.
Validate/add options. Those options will be passed to handle_opts and handle_before_compile
Link to this section Types
Specs
opts() :: Keyword.t()
Link to this section Functions
Link to this section Callbacks
Specs
Handle options in the context of the module, after all extensions have been processed. Must return a quote block.
Specs
Handle options in the context of the module. Must return a quote block.
If you want to persist anything in the DSL persistence layer,
use @persist {:key, value}. It can be called multiple times to
persist multiple times.
Specs
Validate/add options. Those options will be passed to handle_opts and handle_before_compile