(cond ((keywordp form)
(push (format nil "<~A/>"
(string-downcase (symbol-name form))) res))
-
+
((atom form)
(push form res))
(push (format nil "<~A>" node-name) res)
(map nil #'handle-form (cdr form))
(push (format nil "</~A>" node-name) res)))
-
+
((and (consp form)
(consp (first form))
(keywordp (caar form)))
(format t "value-string-lists: ~S~%" value-string-lists)
;;; collect single value-string-lists until line full
-
+
(do* ((string-lists value-string-lists (cdr string-lists))
(string-list (car string-lists) (car string-lists))
(cur-elt start)
(when join-after
(unless (null (cdr string-lists))
(funcall append-to-last string-list join-after)))
-
+
(if (and collect (= (length string-list) 1))
(progn
#+nil
`(setf (gethash ,(symbol-name name) *js-macro-toplevel*)
#'(lambda (&rest ,lambda-list)
(destructuring-bind ,args ,lambda-list ,@body)))))
-
+
(defun js-expand-form (expr)
"Expand a javascript form."
(cond ((atom expr)
(js-expand-form (let ((*js-macro-env* macro-env))
(funcall js-macro)))
expr)))
-
+
((js-compiler-macro-form-p expr) expr)
-
+
((equal (first expr) 'quote) expr)
(t (let ((js-macro (lookup-macro (car expr))))
:stmts (nconc (when (var-names single-defvar) (list single-defvar))
defvars
(mapcar #'js-compile-to-statement body)))))
-
+
;;; iteration
(defjsclass js-for (statement)
"javascript:"
(string-join (js-to-statement-strings
(js-compile (cons 'progn body)) 0) " "))))
-
+
(defmacro js (&rest body)
`(js* '(progn ,@body)))
(setf join-before ""))
;;; collect single value-string-lists until line full
-
+
(do* ((string-lists value-string-lists (cdr string-lists))
(string-list (car string-lists) (car string-lists))
(cur-elt start)
(when join-after
(unless (null (cdr string-lists))
(funcall append-to-last string-list join-after)))
-
+
(if (and collect (= (length string-list) 1))
(progn
#+nil
`(setf (gethash ',name *js-macro-toplevel*)
#'(lambda (&rest ,lambda-list)
(destructuring-bind ,args ,lambda-list ,@body)))))
-
+
(defun js-expand-form (expr)
"Expand a javascript form."
(cond ((atom expr)
(js-expand-form (let ((*js-macro-env* macro-env))
(funcall js-macro)))
expr)))
-
+
((js-compiler-macro-form-p expr) expr)
-
+
((equal (first expr) 'quote) expr)
(t (let ((js-macro (lookup-macro (car expr))))
:stmts (nconc (when (var-names single-defvar) (list single-defvar))
defvars
(mapcar #'js-compile-to-statement body)))))
-
+
;;; iteration
(defclass js-for (statement)
;; function definition
#:defun
#:lambda
-
+
;; object literals
#:create
#:slot-value
#:with-unique-js-names
#:gen-js-name
#:gen-js-name-string
-
+
;; CSS
#:css
#:css-to-string
;; so do not edit this file.
(def-suite ref-tests)
(in-suite ref-tests)~%~%") ; a double-quote for emacs: "
-
+
(defun make-reference-tests-dot-lisp()
(let ((built "")
heading
=> while (film.isNotFinished()) {
this.eat(new Popcorn);
}
-
+
;;;# The `CASE' statement
;;;t \index{CASE}
;;;t \index{switch}
(setf (aref *preloaded-images* i) (new *Image)
(slot-value (aref *preloaded-images* i) 'src)
(aref photos i))))
-
+
(defun apply-effect ()
(when (and document.all photoslider.filters)
(let ((trans photoslider.filters.reveal-trans))
(floor (* (random) 23)))
(trans.stop)
(trans.apply))))
-
+
(defun play-effect ()
(when (and document.all photoslider.filters)
(photoslider.filters.reveal-trans.play)))
(defvar *which* 0)
-
+
(defun keep-track ()
(setf window.status
(+ "Image " (1+ *which*) " of " photos.length)))
-
+
(defun backward ()
(when (> *which* 0)
(decf *which*)
(aref photos *which*))
(play-effect)
(keep-track)))
-
+
(defun forward ()
(when (< *which* (1- photos.length))
(incf *which*)
(aref photos *which*))
(play-effect)
(keep-track)))
-
+
(defun transport ()
(setf window.location (aref photoslink *which*)))))