[bknr-cvs] hans changed trunk/libraries/yason/encode.lisp
BKNR Commits
bknr at bknr.net
Mon Jan 26 10:22:53 UTC 2009
Revision: 4167
Author: hans
URL: http://bknr.net/trac/changeset/4167
Remove with-standard-output-to macro and its uses. I'm not sure why I invented it in the first place.
U trunk/libraries/yason/encode.lisp
Modified: trunk/libraries/yason/encode.lisp
===================================================================
--- trunk/libraries/yason/encode.lisp 2009-01-21 12:19:30 UTC (rev 4166)
+++ trunk/libraries/yason/encode.lisp 2009-01-26 10:22:52 UTC (rev 4167)
@@ -9,10 +9,6 @@
(defvar *json-output*)
-(defmacro with-standard-output-to ((stream) &body body)
- `(let ((*standard-output* ,stream))
- , at body))
-
(defgeneric encode (object &optional stream)
(:documentation "Encode OBJECT to STREAM in JSON format. May be
@@ -29,19 +25,17 @@
#\Newline "\\n"
#\Return "\\r"
#\Tab "\\t")))
-
(defmethod encode ((string string) &optional (stream *standard-output*))
- (with-standard-output-to (stream)
- (write-char #\")
- (dotimes (i (length string))
- (let* ((char (aref string i))
- (replacement (gethash char *char-replacements*)))
- (if replacement
- (write-string replacement)
- (write-char char))))
- (write-char #\")
- string))
+ (write-char #\")
+ (dotimes (i (length string))
+ (let* ((char (aref string i))
+ (replacement (gethash char *char-replacements*)))
+ (if replacement
+ (write-string replacement)
+ (write-char char))))
+ (write-char #\")
+ string)
(defmethod encode ((object rational) &optional (stream *standard-output*))
(encode (float object) stream)
@@ -59,44 +53,41 @@
(princ object stream))
(defmethod encode ((object hash-table) &optional (stream *standard-output*))
- (with-standard-output-to (stream)
- (write-char #\{)
- (let (printed)
- (maphash (lambda (key value)
- (if printed
- (write-char #\,)
- (setf printed t))
- (encode key stream)
- (write-char #\:)
- (encode value stream))
- object))
- (write-char #\}))
+ (write-char #\{)
+ (let (printed)
+ (maphash (lambda (key value)
+ (if printed
+ (write-char #\,)
+ (setf printed t))
+ (encode key stream)
+ (write-char #\:)
+ (encode value stream))
+ object))
+ (write-char #\})
object)
(defmethod encode ((object vector) &optional (stream *standard-output*))
- (with-standard-output-to (stream)
- (write-char #\[)
- (let (printed)
- (loop
- for value across object
- do
- (when printed
- (write-char #\,))
- (setf printed t)
- (encode value stream)))
- (write-char #\]))
+ (write-char #\[)
+ (let (printed)
+ (loop
+ for value across object
+ do
+ (when printed
+ (write-char #\,))
+ (setf printed t)
+ (encode value stream)))
+ (write-char #\])
object)
(defmethod encode ((object list) &optional (stream *standard-output*))
- (with-standard-output-to (stream)
- (write-char #\[)
- (let (printed)
- (dolist (value object)
- (if printed
- (write-char #\,)
- (setf printed t))
- (encode value stream)))
- (write-char #\]))
+ (write-char #\[)
+ (let (printed)
+ (dolist (value object)
+ (if printed
+ (write-char #\,)
+ (setf printed t))
+ (encode value stream)))
+ (write-char #\])
object)
(defmethod encode ((object (eql 'true)) &optional (stream *standard-output*))
@@ -204,7 +195,7 @@
(defun encode-object-elements (&rest elements)
"Encode plist ELEMENTS as object elements."
(loop for (key value) on elements by #'cddr
- do (encode-object-element key value)))
+ do (encode-object-element key value)))
(defmacro with-object-element ((key) &body body)
"Open a new encoding context to encode a JSON object element. KEY
More information about the Bknr-cvs
mailing list