EEx.Engine behaviour View Source
Basic EEx engine that ships with Elixir.
An engine needs to implement all callbacks below.
An engine may also use EEx.Engine
to get the default behaviour
but this is not advised. In such cases, if any of the callbacks
are overridden, they must call super()
to delegate to the
underlying EEx.Engine
.
Link to this section Summary
Functions
Handles assigns in quoted expressions
Callbacks
Invoked at the beginning of every nesting
Called at the end of every template
Invokes at the end of a nesting
Called for the dynamic/code parts of a template
Called for the text/static parts of a template
Called at the beginning of every template
Link to this section Types
state()
View Source
state() :: term()
state() :: term()
Link to this section Functions
handle_assign(arg) View Source
Handles assigns in quoted expressions.
A warning will be printed on missing assigns. Future versions will raise.
This can be added to any custom engine by invoking
handle_assign/1
with Macro.prewalk/2
:
def handle_expr(state, token, expr) do
expr = Macro.prewalk(expr, &EEx.Engine.handle_assign/1)
super(state, token, expr)
end
Link to this section Callbacks
handle_begin(state) View Source
Invoked at the beginning of every nesting.
It must return a new state that is used only inside the nesting.
Once the nesting terminates, the current state
is resumed.
handle_body(state) View Source
Called at the end of every template.
It must return Elixir's quoted expressions for the template.
handle_end(state) View Source
Invokes at the end of a nesting.
It must return Elixir's quoted expressions for the nesting.
handle_expr(state, marker, expr) View Source
Called for the dynamic/code parts of a template.
The marker is what follows exactly after <%
. For example,
<% foo %>
has an empty marker, but <%= foo %>
has "="
as marker. The allowed markers so far are:
""
"="
"/"
"|"
Markers "/"
and "|"
are only for use in custom EEx engines
and are not implemented by default. Using them without an
appropriate implementation raises EEx.SyntaxError
.
It must return the updated state.
handle_text(state, text) View Source
Called for the text/static parts of a template.
It must return the updated state.
init(opts) View Source
Called at the beginning of every template.
It must return the initial state.