Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Filter Selmer:如何在自定义标记中应用过滤器?_Filter_Clojure_Tags_Selmer - Fatal编程技术网

Filter Selmer:如何在自定义标记中应用过滤器?

Filter Selmer:如何在自定义标记中应用过滤器?,filter,clojure,tags,selmer,Filter,Clojure,Tags,Selmer,我正在使用库(版本1.12.33)并构建了一个简单的。我想进一步修改这个标签,以允许以类似的方式使用一些标准标签,例如,和似乎允许它 似乎文件没有涵盖它有人知道怎么做吗? 下面是一些(非常简化的)示例代码,它们提取了精华: 1.定义自定义标记: (selmer.parser/add-tag!:您好 (fn[[arg&]ctx];仅使用第一个参数 (让[[name&filters](clojure.string/split arg#“\\\\\”);将arg1与附加的筛选器分开) (格式为“Hi,

我正在使用库(版本1.12.33)并构建了一个简单的。我想进一步修改这个标签,以允许以类似的方式使用一些标准标签,例如,和似乎允许它

似乎文件没有涵盖它有人知道怎么做吗?

下面是一些(非常简化的)示例代码,它们提取了精华:

1.定义自定义标记:
(selmer.parser/add-tag!:您好
(fn[[arg&]ctx];仅使用第一个参数
(让[[name&filters](clojure.string/split arg#“\\\\\”);将arg1与附加的筛选器分开)
(格式为“Hi,%s!”(或((关键字名称)ctx)名称‘‘‘)’);在上下文映射中查找,否则按原样使用
显然,我需要在这里使用
过滤器,但我不知道如何

2.呈现文本
(def myctx{:greet/name“world”})
(selmer.parser/render“{greet/name | upper | safe}}”myctx)
; 成功:预期和实际:世界
(selmer.parser/render“{%hello greet/name | upper | safe%}”myctx)
; 失败:期待:嗨,世界!,事实:嗨,世界!
我想,erm最明显的方法是让Selmer只在输入arg上完成自己的工作,而不必重新发明Selmer的轮子。然后,自定义标记将类似于:

(selmer.parser/add-tag!:您好
(fn[[arg&]ctx];仅使用第一个参数
(let[name(selmer.parser/render(str{{“arg”}}”)ctx)]
(格式为“Hello,%s!”name)))
太明显了?如果能给我一个更好的答案,甚至是关于这种方法的缺陷的评论,我将不胜感激,因为我对Clojure还相当陌生,还不相信我自己的见解