0
我想創建一個模板,它產生一些數據在其中的表。數據來自在msh-contents中定義的映射。Clojure:活躍的deftemplate不能使用片段
(require '[net.cgrand.enlive-html :as html])
(def msh-contents {:title "Events mashup",
:data-content [{:title "ICTM Study Group ",
:url "http://some-url.com"}
{:title "Volodja Balzalorsky - Hinko Haas",
:url "http://some- other-url.com"}
]})
;; define snippets based on some divs in the template
(html/defsnippet header-cell (template-div) [:div.Heading :div.Cell][value]
(html/content value))
(html/defsnippet value-cell (template-div) [:div.Row :div.Cell] [value]
(html/content value))
;; define a template
(html/deftemplate mshp "index.html" [cont]
[:div.Heading]
(html/content (for [c (keys (first (:data-content cont)))] (header-cell (name c))))
[:div.Row]
(html/content (map #(value-cell %) (for[e (:data-content cont)] (vals e)))))
所以,在REPL
(mshp msh-contents)
callling模板產生錯誤:拋出:IllegalArgumentException ArityException錯誤數args來傳遞到(0):PersistentArrayMap clojure.lang.AFn.throwArity(AFn.java:437 ),可能是因爲片段產生了LazySeq。
謝謝,我會研究這一點。不確定defsnippet不能正常工作,因爲我自己嘗試了,而且很好。我必須嘗試一下,所以它不會返回懶惰的seq,而只是字符串。 – Vesna
優秀,我愛打嗝。這是html資源的問題,所以打嗝的解決方案要好得多。 – Vesna