Back

-write (clj)

(source)

protocol

(-write object out options)
Print object to Appendable out as JSON

Examples

epiccastle/spire
(ns spire.namespaces
  (:require [spire.ssh :as ssh]
            [spire.utils :as utils]
            [spire.context :as context]
            [spire.transport :as transport]
            [spire.state :as state]
            [spire.output.core]
            [spire.output.default]
            [spire.output.events]
            [spire.output.quiet]
            [spire.facts :as facts]
            [spire.selmer :as selmer]
            [spire.module.curl :as curl]
            [spire.module.line-in-file :as line-in-file]
            [spire.module.get-file :as get-file]
            [spire.module.download :as download]
            [spire.module.upload :as upload]
            [spire.module.user :as user]
            [spire.module.apt :as apt]
            [spire.module.aws :as aws]
            [spire.module.attrs :as attrs]
            [spire.module.apt-repo :as apt-repo]
            [spire.module.apt-key :as apt-key]
            [spire.module.pkg :as pkg]
            [spire.module.rm :as rm]
            [spire.module.group :as group]
            [spire.module.mkdir :as mkdir]
            [spire.module.shell :as shell]
            [spire.module.sysctl :as sysctl]
            [spire.module.service :as service]
            [spire.module.authorized-keys :as authorized-keys]
            [spire.module.stat :as stat]
            [spire.module.sudo :as sudo]
            [spire.local]
            [spire.remote]
            [spire.default]
            [clojure.tools.cli]
            [clojure.java.shell]
            [clojure.edn]
            [clojure.stacktrace :as stacktrace]
            [clojure.string]
            [clojure.set]
            [clojure.java.io]
            [clojure.data.json]
            [sci.core :as sci]
            [clj-http.lite.core]
            [clj-http.lite.client]
            [clj-http.lite.links]
            [clj-http.lite.util]
            [cheshire.core]
            [cheshire.custom]
            [cheshire.exact]
            [cheshire.experimental]
            [cheshire.factory]
            [cheshire.generate]
            [cheshire.generate-seq]
            [cheshire.parse]
            [fipp.edn]
            [edamame.core]
            [spire.sci :refer [make-sci-bindings
                               make-sci-bindings-clean
                               sci-bind-macro
                               clojure-repl]]
            [sci.impl.namespaces :refer [copy-var]]
            [sci.impl.vars :as vars]))

        (quote ~'stat*) (copy-var stat/stat* ~ns-sym)
        (quote ~'stat) (sci-bind-macro stat/stat ~ns-sym)
        (quote ~'other-exec?) (copy-var stat/other-exec? ~ns-sym)
        (quote ~'other-read?) (copy-var stat/other-read? ~ns-sym)
        (quote ~'other-write?) (copy-var stat/other-write? ~ns-sym)
        (quote ~'group-exec?) (copy-var stat/group-exec? ~ns-sym)
        (quote ~'group-read?) (copy-var stat/group-read? ~ns-sym)
        (quote ~'group-write?) (copy-var stat/group-write? ~ns-sym)
        (quote ~'user-exec?) (copy-var stat/user-exec? ~ns-sym)
        (quote ~'user-read?) (copy-var stat/user-read? ~ns-sym)
        (quote ~'user-write?) (copy-var stat/user-write? ~ns-sym)
        (quote ~'mode-flags) (copy-var stat/mode-flags ~ns-sym)
        (quote ~'exec?) (copy-var stat/exec? ~ns-sym)
        (quote ~'readable?) (copy-var stat/readable? ~ns-sym)
        (quote ~'writeable?) (copy-var stat/writeable? ~ns-sym)
        (quote ~'directory?) (copy-var stat/directory? ~ns-sym)
        (quote ~'block-device?) (copy-var stat/block-device? ~ns-sym)
        (quote ~'char-device?) (copy-var stat/char-device? ~ns-sym)
        (quote ~'symlink?) (copy-var stat/symlink? ~ns-sym)
        (quote ~'fifo?) (copy-var stat/fifo? ~ns-sym)
        (quote ~'regular-file?) (copy-var stat/regular-file? ~ns-sym)
        (quote ~'socket?) (copy-var stat/socket? ~ns-sym)
kyleburton/clj-etl-utils
(ns clj-etl-utils.json
  (:import
   [java.sql Timestamp]
   [java.io PrintWriter]
   [org.joda.time DateTime]
   [org.joda.time.format ISODateTimeFormat])
  (:require
   [clojure.data.json :as json]))


(extend java.sql.Timestamp json/JSONWriter
        {:-write (fn [x #^PrintWriter out]
                   (.print out "\"")
                   (.print out
                           (.print (ISODateTimeFormat/dateTime )
                                   (org.joda.time.DateTime. x)))
                   (.print out "\""))})

(extend org.joda.time.DateTime json/JSONWriter
        {:-write (fn [x #^PrintWriter out]
                   (.print out "\"")
                   (.print out (.toString x))
                   (.print out "\""))})

(extend java.util.Date json/JSONWriter
        {:-write (fn [x #^PrintWriter out]
                   (.print out "\"")
                   (.print out (.toString (org.joda.time.DateTime. x)))
                   (.print out "\""))})

(extend clojure.lang.Fn json/JSONWriter
        {:-write (fn [x #^PrintWriter out]
                   (.print out "\"")
                   (.print out (.toString x))
                   (.print out "\""))})
(comment
  (org.joda.time.DateTime. (java.util.Date.))
  (clojure.data.json/json-str (java.util.Date.))
  (clojure.data.json/json-str (java.sql.Timestamp. (.getTime (java.util.Date.))))
clojurewerkz/support
(try
  (require 'clojure.data.json)
  (catch Throwable t
    false))


;; all this madness would not be necessary if some people cared about backwards
;; compatiblity of the libraries they maintain. Shame on the clojure.data.json maintainer. MK.
(compile-if (and (find-ns 'clojure.data.json)
                 clojure.data.json/JSONWriter)
            (try
              ;; now try extending clojure.data.json 0.2.x protocol
              (extend-protocol clojure.data.json/JSONWriter
                org.joda.time.DateTime
                (-write [^DateTime object out]
                  (clojure.data.json/write (.print (ISODateTimeFormat/dateTime) ^ReadableInstant object) out))

                java.util.Date
                (-write [^java.util.Date object out]
                  (clojure.data.json/write (DateTime. object (DateTimeZone/UTC)) out)))
              (catch Throwable _
                false))
            (comment "Nothing to do, clojure.data.json is not available"))