将功能公开给EEx模板

时间:2018-02-01 12:11:38

标签: templates elixir

我正在使用EEx.eval_fileEEx.eval_string因为我在编译期间无法访问模板,并希望公开一些可以从模板内部调用的函数。

可以所以它使用绑定(test: &test/1)传递引用但是我必须像这样调用它们从用户的角度来看这不是很好:{{ 1}}

我还有其他办法吗?

1 个答案:

答案 0 :(得分:6)

没有记录AFAICS,EEx.eval_string内部调用Code.eval_quoted/3,第三个参数(options)按原样传递给该函数。 Code.eval_quoted/3functions中接受options关键字参数,其中包含要导入的函数:

  

:functions - 元组列表,其中第一个元素是模块,第二个元素是导入的函数名称和arity列表;必须对函数名称和arity列表进行排序

Source

示例:

iex(1)> EEx.eval_string ~s|<%= length("foo") %>|, [], functions: [{String, [length: 1]}]
"3"