Added GEN-JS-NAME and WITH-UNIQUE-JS-NAMES
authorMarco Baringer <mb@bese.it>
Mon, 15 Aug 2005 13:49:40 +0000 (13:49 +0000)
committerMarco Baringer <mb@bese.it>
Mon, 15 Aug 2005 13:49:40 +0000 (13:49 +0000)
js.lisp

diff --git a/js.lisp b/js.lisp
index 41d74bb..dfa86e3 100644 (file)
--- a/js.lisp
+++ b/js.lisp
@@ -1249,12 +1249,34 @@ this macro."
                       :stmts (list res)))))
 
 ;;; Math library
+
 (defjsmacro floor (expr)
   `(*Math.floor ,expr))
 
 (defjsmacro random ()
   `(*Math.random))
 
+;;; helper functions
+
+(defvar *gen-js-name-counter* 0)
+
+(defun gen-js-name (&key (prefix "parenscript_"))
+  (intern (concatenate 'string
+                       prefix (princ-to-string (incf *gen-js-name-counter*)))
+          (find-package :js)))
+
+(defmacro with-unique-js-names (symbols &body body)
+  `(let* ,(mapcar (lambda (symbol)
+                    (destructuring-bind (symbol &optional prefix)
+                        (if (consp symbol)
+                            symbol
+                            (list symbol))
+                      (if prefix
+                          `(,symbol (gen-js-name :prefix ,prefix))
+                          `(,symbol (gen-js-name)))))
+                  symbols)
+     ,@body))
+
 ;;; helper macros
 
 (define-js-compiler-macro js (&rest body)