Merge pull request #53 from MichaelBlume/format-format

format the format namespace a bit more nicely
This commit is contained in:
Michael Blume 2015-03-15 10:49:56 -07:00
commit d6295a7fc6

View file

@ -244,7 +244,8 @@
(extend-protocol ToSql (extend-protocol ToSql
clojure.lang.Keyword clojure.lang.Keyword
(-to-sql [x] (let [s ^String (name x)] (-to-sql [x]
(let [s (name x)]
(condp = (.charAt s 0) (condp = (.charAt s 0)
\% (let [call-args (string/split (subs s 1) #"\." 2)] \% (let [call-args (string/split (subs s 1) #"\." 2)]
(to-sql (apply call (map keyword call-args)))) (to-sql (apply call (map keyword call-args))))
@ -255,9 +256,11 @@
java.lang.Number java.lang.Number
(-to-sql [x] (str x)) (-to-sql [x] (str x))
java.lang.Boolean java.lang.Boolean
(-to-sql [x] (if x "TRUE" "FALSE")) (-to-sql [x]
(if x "TRUE" "FALSE"))
clojure.lang.Sequential clojure.lang.Sequential
(-to-sql [x] (if *fn-context?* (-to-sql [x]
(if *fn-context?*
;; list argument in fn call ;; list argument in fn call
(paren-wrap (comma-join (map to-sql x))) (paren-wrap (comma-join (map to-sql x)))
;; alias ;; alias
@ -270,14 +273,16 @@
(quote-identifier (second x)) (quote-identifier (second x))
(to-sql (second x)))))) (to-sql (second x))))))
SqlCall SqlCall
(-to-sql [x] (binding [*fn-context?* true] (-to-sql [x]
(binding [*fn-context?* true]
(let [fn-name (name (.name x)) (let [fn-name (name (.name x))
fn-name (fn-aliases fn-name fn-name)] fn-name (fn-aliases fn-name fn-name)]
(apply fn-handler fn-name (.args x))))) (apply fn-handler fn-name (.args x)))))
SqlRaw SqlRaw
(-to-sql [x] (.s x)) (-to-sql [x] (.s x))
clojure.lang.IPersistentMap clojure.lang.IPersistentMap
(-to-sql [x] (let [clause-ops (sort-clauses (keys x)) (-to-sql [x]
(let [clause-ops (sort-clauses (keys x))
sql-str (binding [*subquery?* true sql-str (binding [*subquery?* true
*fn-context?* false] *fn-context?* false]
(space-join (space-join
@ -289,7 +294,8 @@
nil nil
(-to-sql [x] "NULL") (-to-sql [x] "NULL")
Object Object
(-to-sql [x] (let [[x pname] (if (instance? SqlParam x) (-to-sql [x]
(let [[x pname] (if (instance? SqlParam x)
(let [pname (param-name x)] (let [pname (param-name x)]
(if (map? @*input-params*) (if (map? @*input-params*)
[(get @*input-params* pname) pname] [(get @*input-params* pname) pname]