View Source Routex.Extension behaviour (Phoenix Routes Extension Framework v0.3.0-alpha.4)

Specification for composable Routex extensions.

Optional callbacks:

  • configure
  • transform
  • post_transform
  • create_helpers

See also: Routex Extensions

Summary

Callbacks

The configure/2 callback is called in the first stage with the options provided to Routex and the name of the Routex backend. It is expected to return a new list of options.

The create_helpers/3 callback is called in the last stage with a list of routes belonging to a Routex backend, the name of the Routex backend and the current environment. It is expected to return Elixir AST.

The post_transform/1 callback is called in the third stage with a list of routes belonging to a Routex backend. It is expected to return a list of Phoenix.Router.Route structs almost identical to the input, only adding Routex.Attrs -for own usage- is allowed.

The transform/3 callback is called in the second stage with a list of routes belonging to a Routex backend, the name of the configuration model and the current environment. It is expected to return a list of Phoenix.Router.Route structs with flattened Routex.Attrs.

Types

@type backend() :: Routex.t()
@type env() :: Macro.Env.t()
@type opts() :: list()
@type routes() :: [Phoenix.Router.Route.t()]

Callbacks

Link to this callback

configure(opts, backend)

View Source (optional)
@callback configure(opts(), backend()) :: opts()

The configure/2 callback is called in the first stage with the options provided to Routex and the name of the Routex backend. It is expected to return a new list of options.

Link to this callback

create_helpers(routes, backend, env)

View Source (optional)
@callback create_helpers(routes(), backend(), env()) :: Macro.output()

The create_helpers/3 callback is called in the last stage with a list of routes belonging to a Routex backend, the name of the Routex backend and the current environment. It is expected to return Elixir AST.

The AST is included in MyAppWeb.Router.RoutexHelpers.

Link to this callback

post_transform(routes, backend, env)

View Source (optional)
@callback post_transform(routes(), backend(), env()) :: routes()

The post_transform/1 callback is called in the third stage with a list of routes belonging to a Routex backend. It is expected to return a list of Phoenix.Router.Route structs almost identical to the input, only adding Routex.Attrs -for own usage- is allowed.

Link to this callback

transform(routes, backend, env)

View Source (optional)
@callback transform(routes(), backend(), env()) :: routes()

The transform/3 callback is called in the second stage with a list of routes belonging to a Routex backend, the name of the configuration model and the current environment. It is expected to return a list of Phoenix.Router.Route structs with flattened Routex.Attrs.