檢視原始碼 EEx.Engine 行為 (EEx v1.16.2)
Elixir 附帶的基本 EEx 引擎。
引擎需要實作以下所有回呼。
此模組也附帶您可以委派給的預設引擎實作。請參閱 EEx.SmartEngine
作為範例。
摘要
函式
處理引號表達式中的賦值。
針對 handle_begin/1
的預設實作。
針對 handle_body/1
的預設實作。
針對 handle_end/1
的預設實作。
針對 handle_expr/3
的預設實作。
針對 handle_text/3
的預設實作。
針對 init/1
的預設實作。
類型
回呼
在每個巢狀的開始時呼叫。
它必須傳回一個新的狀態,僅在巢狀結構內部使用。巢狀結構終止後,目前的 state
會恢復。
在每個範本的結尾呼叫。
它必須傳回範本的 Elixir 引號表達式。
在巢狀的結尾呼叫。
它必須傳回巢狀結構的 Elixir 引號表達式。
呼叫範本的動態/程式碼部分。
標記緊接在 <%
之後。例如,<% foo %>
有個空標記,但 <%= foo %>
的標記為 "="
。目前允許的標記如下:
""
"="
"/"
"|"
標記 "/"
和 "|"
僅供自訂 EEx 引擎使用,且預設未實作。在沒有適當實作的情況下使用它們會引發 EEx.SyntaxError
。
它必須傳回已更新的狀態。
@callback handle_text( state(), [line: pos_integer(), column: pos_integer()], text :: String.t() ) :: state()
呼叫範本的文字/靜態部分。
它必須傳回已更新的狀態。
在每個範本的開始時呼叫。
它必須傳回初始狀態。
函式
處理引號表達式中的賦值。
遺漏指定項時會印出警告。未來版本將會引發例外。
這可以透過呼叫 handle_assign/1
搭配 Macro.prewalk/2
來新增到任何自訂引擎
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
的預設實作。