ash v1.29.0-rc1 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 anextensions
key 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