summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Schulte <schulte.eric@gmail.com>2010-11-26 15:49:24 -0700
committerEric Schulte <schulte.eric@gmail.com>2010-11-26 15:49:24 -0700
commit1aa92418dab35ec1992977098c8350d6de795b65 (patch)
tree05721eabfee0a316ff3679b9df9e763d10bf10d6
parent01b4f63fe9518f12ffdb233787d3e50bc8e4fe1a (diff)
downloadorg-mode-1aa92418dab35ec1992977098c8350d6de795b65.tar.gz
ob-clojure: support for pretty printing code and data
* lisp/ob-clojure.el (org-babel-expand-body:clojure): Support for pretty printing of Clojure code and data.
-rw-r--r--lisp/ob-clojure.el28
1 files changed, 18 insertions, 10 deletions
diff --git a/lisp/ob-clojure.el b/lisp/ob-clojure.el
index 378f186..fad7544 100644
--- a/lisp/ob-clojure.el
+++ b/lisp/ob-clojure.el
@@ -49,16 +49,24 @@
(defun org-babel-expand-body:clojure (body params)
"Expand BODY according to PARAMS, return the expanded body."
(let* ((vars (mapcar #'cdr (org-babel-get-header params :var)))
- (print-level nil) (print-length nil)
- (body (if (> (length vars) 0)
- (concat "(let ["
- (mapconcat
- (lambda (var)
- (format "%S (quote %S)" (car var) (cdr var)))
- vars "\n ")
- "]\n" body ")")
- body)))
- body))
+ (print-level nil) (print-length nil)
+ (body (org-babel-trim
+ (if (> (length vars) 0)
+ (concat "(let ["
+ (mapconcat
+ (lambda (var)
+ (format "%S (quote %S)" (car var) (cdr var)))
+ vars "\n ")
+ "]\n" body ")")
+ body))))
+ (if (or (member "code" result-params)
+ (member "pp" result-params))
+ (format (concat "(let [org-mode-print-catcher (java.io.StringWriter.)]"
+ "(with-pprint-dispatch %s-dispatch"
+ "(clojure.pprint/pprint %s org-mode-print-catcher)"
+ "(str org-mode-print-catcher)))")
+ (if (member "code" result-params) "code" "simple") body)
+ body)))
(defun org-babel-execute:clojure (body params)
"Execute a block of Clojure code with Babel."