Skip to content

Commit

Permalink
Merge remote-tracking branch 'ztellman/master'
Browse files Browse the repository at this point in the history
  • Loading branch information
dakrone committed Feb 19, 2013
2 parents 2f4f6e7 + 03aff88 commit 5ff5a30
Showing 1 changed file with 18 additions and 16 deletions.
34 changes: 18 additions & 16 deletions src/cheshire/generate.clj
Expand Up @@ -31,25 +31,26 @@
Long (.writeNumber ~jg (long ~obj))
Double (.writeNumber ~jg (double ~obj))
Float (.writeNumber ~jg (double ~obj))
BigInteger (.writeNumber ~jg ^BigInteger ~obj)
BigDecimal (.writeNumber ~jg ^BigDecimal ~obj)
BigInteger (.writeNumber ~jg ~(with-meta obj {:tag "BigInteger"}))
BigDecimal (.writeNumber ~jg ~(with-meta obj {:tag "BigDecimal"}))
Ratio (.writeNumber ~jg (double ~obj))
Short (.writeNumber ~jg (int ~obj))
Byte (.writeNumber ~jg (int ~obj))
clojure.lang.BigInt (.writeNumber ~jg ^clojure.lang.BigInt
(.toBigInteger (bigint ~obj)))
clojure.lang.BigInt (.writeNumber ~jg ^BigInteger
(.toBigInteger ^clojure.lang.BigInt (bigint ~obj)))
(fail ~obj ~jg ~e))
`(condp instance? ~obj
Integer (.writeNumber ~jg (int ~obj))
Long (.writeNumber ~jg (long ~obj))
Double (.writeNumber ~jg (double ~obj))
Float (.writeNumber ~jg (float ~obj))
BigInteger (.writeNumber ~jg ^BigInteger ~obj)
BigDecimal (.writeNumber ~jg ^BigDecimal ~obj)
Ratio (.writeNumber ~jg (double ~obj))
Short (.writeNumber ~jg (int ~obj))
Byte (.writeNumber ~jg (int ~obj))
(fail ~obj ~jg ~e))))
`(let [^JsonGenerator jg# ~jg]
(condp instance? ~obj
Integer (.writeNumber jg# (int ~obj))
Long (.writeNumber jg# (long ~obj))
Double (.writeNumber jg# (double ~obj))
Float (.writeNumber jg# (float ~obj))
BigInteger (.writeNumber jg# ^BigInteger ~obj)
BigDecimal (.writeNumber jg# ^BigDecimal ~obj)
Ratio (.writeNumber jg# (double ~obj))
Short (.writeNumber jg# (int ~obj))
Byte (.writeNumber jg# (int ~obj))
(fail ~obj jg# ~e)))))

(declare generate)

Expand Down Expand Up @@ -117,7 +118,8 @@
(write-string ^JsonGenerator jg (.format sdf obj)))
:else (try
(.writeNumber ^JsonGenerator jg obj)
(catch Exception e (fail obj jg ex)))))
(catch Exception e
(fail obj jg ex)))))

;; Generic encoders, these can be used by someone writing a custom
;; encoder if so desired, after transforming an arbitrary data
Expand Down

0 comments on commit 5ff5a30

Please sign in to comment.