     (number? value)
       (str value (when (not= 0 value) "px"))
     (and (string? value)
-         (re-matches #"\s*\d+\s*" value))
+         (re-matches #"\s*\d+\s*" value)) ;; FIXME floats?
       (recur key (-> value str/trim Long/parseLong))
     :else
       (escape-html (to-str value))))

      (-render-html src nil (volatile! 1) sb)
      (.insert sb (.indexOf sb ">") (str " data-react-checksum=\"" (adler32 sb) "\""))
      (str sb))))

(render-html [:div { :class [nil] }])

    "meta" "param" "source" "track" "wbr"})


(def attr-mapping
  { :class-name "class"
    :className  "class"
    :html-for   "for"
    :htmlFor    "for" })


(defn normalize-attr-key ^String [key]
  (let [^String str (or (attr-mapping key)
                        (str/lower-case (to-str key)))]
    (if (or (.startsWith str "data-")
            (.startsWith str "aria-")
            (.startsWith str "-"))
      str
      (str/replace str "-" ""))))


(defn escape-html [^String s]
