From a14a6538721688952073ea8dba9c77e638522b20 Mon Sep 17 00:00:00 2001 From: Bozhidar Batsov Date: Wed, 2 Jan 2019 21:24:18 +0200 Subject: [PATCH] Tweak the new pprint functions to have single-arity version Originally I didn't notice that other middlewares were making use of the same functions. --- src/cider/nrepl/middleware/format.clj | 2 +- src/cider/nrepl/middleware/stacktrace.clj | 2 +- src/cider/nrepl/pprint.clj | 26 +++++++++++++++-------- 3 files changed, 19 insertions(+), 11 deletions(-) diff --git a/src/cider/nrepl/middleware/format.clj b/src/cider/nrepl/middleware/format.clj index 5bf029057..092db111c 100644 --- a/src/cider/nrepl/middleware/format.clj +++ b/src/cider/nrepl/middleware/format.clj @@ -45,7 +45,7 @@ (defn- format-edn [edn pprint-fn] (->> (read-edn edn) - (map #(with-out-str (pprint-fn %))) + (map #(pprint-fn %)) str/join str/trim)) diff --git a/src/cider/nrepl/middleware/stacktrace.clj b/src/cider/nrepl/middleware/stacktrace.clj index 5495b111a..b93564ef5 100644 --- a/src/cider/nrepl/middleware/stacktrace.clj +++ b/src/cider/nrepl/middleware/stacktrace.clj @@ -249,7 +249,7 @@ of pretty printed problems. The content of the returned map is modeled after `clojure.spec/explain-printer`." [ed pprint-fn] - (let [pp-str #(with-out-str (pprint-fn %)) + (let [pp-str #(pprint-fn %) problems (sort-by #(count (:path %)) (or (:clojure.spec/problems ed) (:clojure.spec.alpha/problems ed)))] diff --git a/src/cider/nrepl/pprint.clj b/src/cider/nrepl/pprint.clj index 9c0ad2ba5..70604dbb4 100644 --- a/src/cider/nrepl/pprint.clj +++ b/src/cider/nrepl/pprint.clj @@ -2,7 +2,7 @@ "Pretty-print related utilities. All functions here are simple wrappers that ensure a consistent API: - * two params - object to print and a map of print options + * has one and two params signatures - object to print and a map of print options * the keys of the print options map can be strings, as bencode clients can't send keywords * functions return the printed object as a string" {:added "0.20.0"} @@ -14,9 +14,11 @@ "A simple wrapper around `clojure.pprint/write`. It provides an API compatible with what nREPL's pr-values middleware expects for printer functions." - [object opts] - (let [opts (assoc (walk/keywordize-keys opts) :stream nil)] - (apply pp/write object (vec (flatten (vec opts)))))) + ([object] + (pprint object {})) + ([object opts] + (let [opts (assoc (walk/keywordize-keys opts) :stream nil)] + (apply pp/write object (vec (flatten (vec opts))))))) (def ^:private fipp-printer (delay @@ -24,9 +26,12 @@ (require 'fipp.edn) (resolve 'fipp.edn/pprint)))) -(defn fipp-pprint [object opts] - (with-out-str - (@fipp-printer object (walk/keywordize-keys opts)))) +(defn fipp-pprint + ([object] + (fipp-pprint object {})) + ([object opts] + (with-out-str + (@fipp-printer object (walk/keywordize-keys opts))))) (def ^:private puget-printer (delay @@ -34,5 +39,8 @@ (require 'puget.printer) (resolve 'puget.printer/pprint-str)))) -(defn puget-pprint [object opts] - (@puget-printer object (walk/keywordize-keys opts))) +(defn puget-pprint + ([object] + (puget-pprint object {})) + ([object opts] + (@puget-printer object (walk/keywordize-keys opts))))