使用Clojure Hiccup呈现样式信息的惯用法

时间:2012-10-01 19:30:32

标签: css clojure hiccup

我需要在打嗝内构建样式信息,以便将元素放在变量“top”和“left”所指示的位置。我的代码看起来像这样:

  

(html [:div {:style(str“top”top“; left”left)}        “一些文字”])

这段代码非常难看。如果打嗝使用标准的CSS样式规则自动呈现“样式”属性会更好...然后我可以写下面的内容:

  

(html [:div {:style {:top top:left left}}        “一些文字”])

是否已有图书馆执行此操作?或者,我需要推出自己的解决方案吗?

感谢Clojurians提供任何指示!

3 个答案:

答案 0 :(得分:7)

你可以编写一个能够做到这一点的函数,它甚至会比地图略微打字。例如:

(defn style [& info]
  {:style (.trim (apply str (map #(let [[kwd val] %]
                                   (str (name kwd) ":" val "; "))
                                (apply hash-map info))))})

哪个允许你这样写...

(html [:div (style :top top :left left) "some text"])

函数的输出示例...

user=> (style :top 32 :left 14)
{:style "top: 32; left: 14;"}

答案 1 :(得分:1)

这个怎么样:

def read(stream, parsefunc):
    handler = err_handler()
    for record in parsefunc(stream, handler):
        do_stuff(record)

答案 2 :(得分:0)

Clojure还没有多少,但是像Enlive那样的基于'转换'的方法听起来像是满足这些需求的解决方案 - https://github.com/cgrand/enlive