View Source Spark.Dsl behaviour (spark v0.3.9)
The primary entry point for adding a DSL to a module.
To add a DSL to a module, 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.: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[].
See the callbacks defined in this module to augment the behavior/compilation of the module getting a Dsl.
schemas-data-types
Schemas/Data Types
Spark DSLs use a superset of NimbleOptions for the schema that makes up sections/entities of the DSL.
For more information, see Spark.OptionsHelpers.
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
@type entity() :: %Spark.Dsl.Entity{ args: term(), auto_set_fields: term(), deprecations: term(), describe: term(), docs: term(), entities: term(), examples: term(), hide: term(), imports: term(), links: term(), modules: term(), name: term(), no_depend_modules: term(), recursive_as: term(), schema: term(), snippet: term(), target: term(), transform: term() }
@type opts() :: Keyword.t()
@type t() :: map()
Link to this section 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.
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