Ash.Dsl.Transformer behaviour (ash v1.48.0-rc.12) View Source

A transformer manipulates and/or validates the entire DSL state of a resource.

It's transform/2 takes a map, which is just the values/configurations at each point of the DSL. Don't manipulate it directly, if possible, instead use functions like get_entities/3 and replace_entity/5 to manipulate it.

Use the after?/1 and before?/1 callbacks to ensure that your transformer runs either before or after some other transformer.

Return true in after_compile/0 to have the transformer run in an after_compile hook, but keep in mind that no modifications to the dsl structure will be retained, so there is no point in returning a new dsl structure from transform/2 if after_compile/0 is defined. Instead, simply return :ok or {:error, error}

Link to this section Summary

Link to this section Functions

Link to this function

add_entity(dsl_state, path, entity, opts \\ [])

View Source
Link to this function

build_entity(extension, path, name, opts)

View Source
Link to this function

get_entities(dsl_state, path)

View Source
Link to this function

get_option(dsl_state, path, option)

View Source
Link to this function

get_persisted(dsl, key, default \\ nil)

View Source
Link to this function

persist(dsl, key, value)

View Source
Link to this function

replace_entity(dsl_state, path, replacement, matcher)

View Source
Link to this function

set_option(dsl_state, path, option, value)

View Source

Link to this section Callbacks

Specs

after?(module()) :: boolean()

Specs

after_compile?() :: boolean()

Specs

before?(module()) :: boolean()

Specs

transform(module(), map()) :: :ok | {:ok, map()} | {:error, term()} | :halt