我正在使用EEx.eval_file
和EEx.eval_string
因为我在编译期间无法访问模板,并希望公开一些可以从模板内部调用的函数。
我可以所以它使用绑定(test: &test/1
)传递引用但是我必须像这样调用它们从用户的角度来看这不是很好:{{ 1}}
我还有其他办法吗?
答案 0 :(得分:6)
没有记录AFAICS,EEx.eval_string
内部调用Code.eval_quoted/3
,第三个参数(options
)按原样传递给该函数。 Code.eval_quoted/3
在functions
中接受options
关键字参数,其中包含要导入的函数:
:functions
- 元组列表,其中第一个元素是模块,第二个元素是导入的函数名称和arity列表;必须对函数名称和arity列表进行排序
示例:
iex(1)> EEx.eval_string ~s|<%= length("foo") %>|, [], functions: [{String, [length: 1]}]
"3"