git.fiddlerwoaroof.com
Raw Blame History
(defpackage :fwoar.swank-utils
  #+fw.dev
  (:nicknames fw.su)
  (:use :cl )
  (:export #:log-json #:log-object))
(in-package :fwoar.swank-utils)

(defvar *target-identifier* (alexandria:make-keyword (gensym "JSON")))
(defun log-json (obj &optional (indent t) (target-identifier *target-identifier*))
  (let* ((buffer-stream (swank-buffer-streams:make-buffer-output-stream target-identifier))
         (stream (yason:make-json-output-stream buffer-stream :indent indent)))
    (unwind-protect (progn (fresh-line buffer-stream)
                           (values (yason:encode obj stream)
                                   target-identifier))
      (terpri buffer-stream)
      (finish-output stream)
      (finish-output buffer-stream)
      (close stream))))

(defvar *log-target-identifier* (alexandria:make-keyword (gensym "LOG")))
(defun log-object (obj &optional (target-identifier *log-target-identifier*))
  (let* ((stream (swank-buffer-streams:make-buffer-output-stream target-identifier)))
    (unwind-protect (progn (fresh-line stream)
                           (values (princ obj stream)
                                   target-identifier))
      (terpri stream)
      (finish-output stream)
      (close stream))))