-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathswank-utils.lisp
28 lines (26 loc) · 1.2 KB
/
swank-utils.lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
(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))))