Made HoneySQL helpers compatible with ClojureScript

This commit is contained in:
Anatoly Zelenin 2016-01-03 13:15:48 +01:00
parent 93e66c90c4
commit b8aaac02aa

View file

@ -1,4 +1,5 @@
(ns honeysql.helpers
#?(:cljs (:require-macros [honeysql.helpers :refer [defhelper]]))
(:refer-clojure :exclude [update]))
(defmulti build-clause (fn [name & args]
@ -7,18 +8,19 @@
(defmethod build-clause :default [_ m & args]
m)
(defmacro defhelper [helper arglist & more]
(let [kw (keyword (name helper))]
`(do
(defmethod build-clause ~kw ~(into ['_] arglist) ~@more)
(doto (defn ~helper [& args#]
(let [[m# args#] (if (map? (first args#))
[(first args#) (rest args#)]
[{} args#])]
(build-clause ~kw m# args#)))
;; maintain the original arglist instead of getting
;; ([& args__6880__auto__])
(alter-meta! assoc :arglists '(~arglist))))))
#?(:clj
(defmacro defhelper [helper arglist & more]
(let [kw (keyword (name helper))]
`(do
(defmethod build-clause ~kw ~(into ['_] arglist) ~@more)
(doto (defn ~helper [& args#]
(let [[m# args#] (if (map? (first args#))
[(first args#) (rest args#)]
[{} args#])]
(build-clause ~kw m# args#)))
;; maintain the original arglist instead of getting
;; ([& args__6880__auto__])
(alter-meta! assoc :arglists '(~arglist)))))))
(defn collify [x]
(if (coll? x) x [x]))