View Source Spark.Dsl behaviour (spark v2.2.39)
The primary entry point for defining a DSL.
To define a DSL, add use Spark.Dsl, ...options. The options supported with use Spark.Dsl are:
:single_extension_kinds(list ofatom/0) - The extension kinds that are allowed to have a single value. For example:[:data_layer]The default value is[].:many_extension_kinds(list ofatom/0) - The extension kinds that can have multiple values. e.g[notifiers: [Notifier1, Notifier2]]The default value is[].:untyped_extensions?(boolean/0) - Whether or not to support anextensionskey which contains untyped extensions The default value istrue.:extension_kind_types(keyword/0) - A keyword list of extension kinds and their types, e.g[authorizers: {:list, {:behaviour, Ash.Authorizer}}]The default value is[].:extension_kind_docs(keyword/0) - A keyword list of extension kinds and a short documentation snippet to be used when autocompleting that option The default value is[].:default_extensions(keyword/0) - 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[].:opt_schema(keyword/0) - A schema for additional options to accept when callinguse YourSparkThe default value is[].:opts_to_document- A list ofatom/0or:all. Spark automatically detects options and documents them in@moduledoc. You can instruct Spark to use only a subset of options, e.g.opts_to_document: [:fragments]. The default value is:all.
See the callbacks defined in this module to augment the behavior/compilation of the module getting a Dsl.
Schemas/Data Types
For more information, see Spark.Options.
Summary
Callbacks
Validate/add options. Those options will be passed to handle_opts and handle_before_compile
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
A callback that is called in the after_verify hook. Only runs on versions of Elixir >= 1.14.0
Types
@type entity() :: %Spark.Dsl.Entity{ args: term(), auto_set_fields: term(), deprecations: term(), describe: term(), docs: term(), entities: term(), examples: term(), hide: term(), identifier: term(), imports: term(), links: term(), modules: term(), name: term(), no_depend_modules: term(), recursive_as: term(), schema: term(), singleton_entity_keys: term(), snippet: term(), target: term(), transform: term() }
@type opts() :: keyword()
@type section() :: %Spark.Dsl.Section{ auto_set_fields: term(), deprecations: term(), describe: term(), docs: term(), entities: term(), examples: term(), imports: term(), links: term(), modules: term(), name: term(), no_depend_modules: term(), patchable?: term(), schema: term(), sections: term(), snippet: term(), top_level?: term() }
@type t() :: map()
Callbacks
Validate/add options. Those options will be passed to handle_opts and handle_before_compile
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.
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.
Validate/add options. Those options will be passed to handle_opts and handle_before_compile
A callback that is called in the after_verify hook. Only runs on versions of Elixir >= 1.14.0