EEx.SmartEngine View Source
The default engine used by EEx.
It includes assigns (like @foo
) and possibly other
conveniences in the future.
Examples
iex> EEx.eval_string("<%= @foo %>", assigns: [foo: 1])
"1"
In the example above, we can access the value foo
under
the binding assigns
using @foo
. This is useful because
a template, after being compiled, can receive different
assigns and would not require recompilation for each
variable set.
Assigns can also be used when compiled to a function:
# sample.eex
<%= @a + @b %>
# sample.ex
defmodule Sample do
require EEx
EEx.function_from_file :def, :sample, "sample.eex", [:assigns]
end
# iex
Sample.sample(a: 1, b: 2) #=> "3"
Link to this section Summary
Functions
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 Functions
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.
Callback implementation for EEx.Engine.handle_begin/1
.
handle_body(state) View Source
Called at the end of every template.
It must return Elixir's quoted expressions for the template.
Callback implementation for EEx.Engine.handle_body/1
.
handle_end(state) View Source
Invokes at the end of a nesting.
It must return Elixir's quoted expressions for the nesting.
Callback implementation for EEx.Engine.handle_end/1
.
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.
Callback implementation for EEx.Engine.handle_expr/3
.
handle_text(state, text) View Source
Called for the text/static parts of a template.
It must return the updated state.
Callback implementation for EEx.Engine.handle_text/2
.
init(opts) View Source
Called at the beginning of every template.
It must return the initial state.
Callback implementation for EEx.Engine.init/1
.