gpt4 book ai didi

Clojure:部分更改 Enlive 中的属性值

转载 作者:行者123 更新时间:2023-12-02 17:09:53 27 4
gpt4 key购买 nike

我有这个 test.html 文件,其中包含:

<div class="clj-test class1 class2 col-sm-4 class3">content</div>

想要定义一个仅更改 html attr 值的一部分的模板:

(deftemplate test "public/templates/test.html" []
[:.clj-test] (enlive/set-attr :class (partly-change-attr #"col*" "col-sm-8")))

这将呈现:

...
<div class="clj-test class1 class2 col-sm-8 class3">content</div>
...

感谢您的帮助!

最佳答案

刚刚找到了 Christophe Grand 建议的 update-attr fn in another thread :

(defn update-attr [attr f & args]
(fn [node] (apply update-in node [:attrs attr] f args)))

非常酷!我们可以直接使用它:

(enlive/deftemplate test-template "templates/test.html" []
[:.clj-test] (update-attr :class clojure.string/replace #"col-.*?(?=\s)" "col-sm-8"))

或者从中构建一个更具体的 fn:

(defn replace-attr [attr pattern s]
(update-attr attr clojure.string/replace pattern s))

(enlive/deftemplate test-template "templates/test.html" []
[:.clj-test] (replace-attr :class #"col-.*?(?=\s)" "col-sm-8"))

关于Clojure:部分更改 Enlive 中的属性值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30763609/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com