我正在使用Selmer库(版本 1.12.33)并构建了一个简单的自定义标签。我想进一步修改这个标签,以允许以类似的方式使用过滤器if
,例如一些标准标签,例如, for
,script
和style
似乎允许它。
似乎文档没有涵盖它;有谁知道如何做到这一点?
下面是一些提炼精华的(非常简化的)示例代码:
1.定义自定义标签:
(selmer.parser/add-tag! :hello
(fn [[arg & _] ctx] ; use only first argument
(let [[name & filters] (clojure.string/split arg #"\|")] ; separate arg1 from appended filter(s)
(format "Hi, %s!" (or ((keyword name) ctx) name))))) ; look up in context map, else use as-is
显然,我需要以filters
某种方式在这里使用,但我不知道如何......
2. 渲染文字
(def myctx {:greet/name "world"})
(selmer.parser/render "{{greet/name|upper|safe}}" myctx)
; SUCCESS: expected & actual: WORLD
(selmer.parser/render "{% hello greet/name|upper|safe %}" myctx)
; FAIL: Expected: Hi, WORLD!, actual: Hi, world!