查看源代码 EEx.Engine 行为 (EEx v1.16.2)
Elixir 附带的基本 EEx 引擎。
引擎需要实现以下所有回调。
此模块还附带一个默认的引擎实现,您可以委托给它。请参阅 EEx.SmartEngine
作为示例。
概要
类型
回调
在每个嵌套的开始调用。
它必须返回一个新的状态,该状态仅在嵌套内部使用。嵌套终止后,将恢复当前的 state
。
在每个模板的末尾调用。
它必须返回 Elixir 的模板引用表达式。
在嵌套结束时调用。
它必须返回 Elixir 的嵌套引用表达式。
针对模板的动态/代码部分调用。
标记是紧随 <%
之后的字符。例如,<% foo %>
的标记为空,但 <%= foo %>
的标记为 "="
。到目前为止,允许的标记是
""
"="
"/"
"|"
标记 "/"
和 "|"
仅供自定义 EEx 引擎使用,默认情况下未实现。在没有适当实现的情况下使用它们会引发 EEx.SyntaxError
。
它必须返回更新后的状态。
@callback handle_text( state(), [line: pos_integer(), column: pos_integer()], text :: String.t() ) :: state()
针对模板的文本/静态部分调用。
它必须返回更新后的状态。
在每个模板的开始调用。
它必须返回初始状态。
函数
处理引用的表达式中的赋值。
如果缺少赋值,将打印警告。将来版本将引发异常。
可以通过使用 Macro.prewalk/2
调用 handle_assign/1
将此添加到任何自定义引擎。
def handle_expr(state, token, expr) do
expr = Macro.prewalk(expr, &EEx.Engine.handle_assign/1)
super(state, token, expr)
end
handle_begin/1
的默认实现。
handle_body/1
的默认实现。
handle_end/1
的默认实现。
handle_expr/3
的默认实现。
handle_text/3
的默认实现。
init/1
的默认实现。