扩展 erlydtl

Posted

技术标签:

【中文标题】扩展 erlydtl【英文标题】:Extending erlydtl 【发布时间】:2013-10-28 17:43:36 【问题描述】:

如何扩展“erlydtl”?

我非常喜欢 django 模板,以及模板语言可以扩展的方式。例如,我喜欢“sekizai”之类的扩展名。

可以为 erlydtl 提供自定义标签模块。但是如何添加对更复杂标签的支持,例如 sekizai 提供的?

在 django 中,使用 sekizai 我可以执行以下操作(取自 sekizai 文档)。

% render_block "css" %

并添加以下内容以添加到上面的块中

% addtoblock "css" %
<link href="/media/css/stylesheet.css" media="screen" rel="stylesheet" type="text/css" />
% endaddtoblock %

这会在调用 % render_block % 的地方添加内容。

【问题讨论】:

【参考方案1】:

您需要编写自己的模块并定义被调用的函数并为您的模板标签提供数据。

例子:

文件perc_filter.erl

-module(perc_filter).
-export([percentage/2]).

percentage(Input, Whole) when is_integer(Input), is_integer(Whole) ->
    [Result] = io_lib:format("~.2f", [Input / Whole * 100]),
     Result.

在模板中:

 x|percentage:1000 

【讨论】:

编写标签模块很容易。这里的主要问题是模板标签“addtoblock”应该向已经存在的标签“render_block”添加一些东西。而且我不知道该怎么做。

以上是关于扩展 erlydtl的主要内容,如果未能解决你的问题,请参考以下文章

Kotlin扩展函数总结 ★ ( 超类扩展函数 | 私有扩展函数 | 泛型扩展函数 | 扩展属性 | 定义扩展文件 | infix 关键字用法 | 重命名扩展函数 | 标准库扩展函数 )

Kotlin扩展函数总结 ★ ( 超类扩展函数 | 私有扩展函数 | 泛型扩展函数 | 扩展属性 | 定义扩展文件 | infix 关键字用法 | 重命名扩展函数 | 标准库扩展函数 )

GroovyGroovy 扩展方法 ( 扩展静态方法示例 | 扩展实例方法示例 | 扩展实例方法与扩展静态方法代码相同 )

003-正则的扩展数值的扩展函数的扩展数组的扩展对象的扩展

GroovyGroovy 扩展方法 ( 实例扩展方法配置 | 扩展方法示例 | 编译实例扩展类 | 打包实例扩展类字节码到 jar 包中 | 测试使用 Thread 实例扩展方法 )

GroovyGroovy 扩展方法 ( 静态扩展方法配置 | 扩展方法示例 | 编译静态扩展类 | 打包静态扩展类字节码到 jar 包中 | 测试使用 Thread 静态扩展类 )