Add formatting options to print-hash-table
authorKevin M. Rosenberg <kevin@rosenberg.net>
Mon, 27 Jun 2011 04:43:39 +0000 (22:43 -0600)
committerKevin M. Rosenberg <kevin@rosenberg.net>
Mon, 27 Jun 2011 04:43:39 +0000 (22:43 -0600)
hash.lisp

index 98e9439d27b6f2bb637750ffd437e57d6fcf2209..fb4c4fa9ced427a96f94e94f6ac5d827a49f47fa 100644 (file)
--- a/hash.lisp
+++ b/hash.lisp
 
 ;;; hashs
 
+(defun print-hash (h &key (stream *standard-output*)
+                   key-transform-fn value-transform-fn
+                   (prefix "") (divider " -> ") (terminator "~%"))
+  (maphash #'(lambda (k v)
+               (format stream "~A~S~A~S~%"
+                       prefix
+                       (if key-transform-fn
+                           (funcall key-transform-fn k)
+                           k)
+                       divider
+                       (if value-transform-fn
+                           (funcall value-transform-fn v)
+                           v)
+                       (when terminator (format stream terminator)))
+               h)
+  h)
+
 (defun print-hash (h &optional (stream *standard-output*))
   (maphash #'(lambda (k v) (format stream "~S -> ~S~%" k v)) h)
   h)