Skip to content

Instantly share code, notes, and snippets.

@fevral13
Created January 7, 2017 12:44
Show Gist options
  • Select an option

  • Save fevral13/ed3085a49befcc5a4e5c110e01bb299a to your computer and use it in GitHub Desktop.

Select an option

Save fevral13/ed3085a49befcc5a4e5c110e01bb299a to your computer and use it in GitHub Desktop.
hiccup template engine naive implementation
(ns cljcks.hiccup
(:require [clojure.string :as s]))
(defn render-attr [[key value]] (str (name key) "=\"" value "\""))
(defn render-attrs [attrs]
(s/join " " (map render-attr (seq attrs))))
(defn render [[elem, attrs, subtree]]
(let [rendered-attributes (render-attrs attrs)
subelements (map render subtree)
rendered-subtree (s/join " " subelements)
elem-name (name elem)]
(str "<" elem-name " " rendered-attributes ">" rendered-subtree "</" elem-name ">")))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment