首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Selmer:如何在自定义标签中应用过滤器?

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

Stack Overflow用户
提问于 2021-02-08 16:45:15
回答 1查看 122关注 0票数 1

我正在使用塞尔默库(1.12.33版本),并构建了一个简单的自定义标签。我想进一步修改这个标记,以类似的方式允许使用过滤器,比如ifforscriptstyle

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

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

1.定义自定义标签:

代码语言:javascript
复制
(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.文本的呈现

代码语言:javascript
复制
(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!
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-09 11:01:03

我想,很明显的方法是,选择Selmer,只在输入arg上做它的东西,而不试图重新发明Selmer的轮子。然后,自定义标记将类似于:

代码语言:javascript
复制
(selmer.parser/add-tag! :hello
  (fn [[arg & _] ctx] ; use only first argument
    (let [name (selmer.parser/render (str "{{" arg "}}") ctx)]
      (format "Hello, %s!" name))))

太明显了?我希望得到一个更好的答案,甚至是关于这个方法的缺陷的评论,因为我对Clojure相当陌生,而且还不相信我自己的洞察力。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66105750

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档