Wispy Lisp

Dojo Javascript Directives 

(deftag :js-require (&rest dojo-packages)
  `(:script :type "text/javascript" (js (prog
					    ,@(mapcar (fn (dojo-package)
							`(dojo.require ,(^dojo-package-string dojo-package)))
						      dojo-packages)))))
(deftag :js (&rest body)
  `(:script :type "text/javascript" (js (prog ,@body))))
(deftag :js-src (&rest sources)
  `(:progn ,@(mapcar (fn (source)
		       `(:script :type "text/javascript" :src ,(^html-string source)))
		     sources)))
(deftag :js-init (&rest body)
  `(:js (function init () ,@body)
	(dojo.addOnLoad init)))
(deftag :js-down (&rest body)
  `(:js (function clean-up () ,@body)
	(dojo.addUnLoad clean-up)))