##// END OF EJS Templates
Fix a bug in dynamic return
Fix a bug in dynamic return

File last commit:

r65:4e5eb097 default
r65:4e5eb097 default
Show More
api-macros.lisp
47 lines | 1.2 KiB | text/x-common-lisp | CommonLispLexer
(in-package txt2web.api)
(defpsmacro with-call-args (args return &body body)
`(progn
(init-args ,args)
,@body
,@(when return
'((get-result)))))
(defpsmacro with-frame (&body body)
`(progn
(push-local-frame)
(unwind-protect
,@body
(pop-local-frame))))
(defpsmacro href-call (func &rest args)
`(+ "javascript:" (inline-call ,func ,@args)))
(defpsmacro inline-call (func &rest args)
`(+ ',func
"(\""
,(first args)
,@(loop :for arg :in (cdr args)
:collect "\", \""
:collect arg)
"\");"))
(defpsmacro with-sleep ((resume-func) &body body)
`(new (*promise
(lambda (resolve)
(start-sleeping)
(let ((,resume-func (lambda ()
(finish-sleeping)
(resolve)))))
,@body))))
(defvar *serv-vars* nil)
(defpsmacro define-serv-var (name (value &optional index) &body body)
(setf name (string-upcase (symbol-name name)))
(pushnew name *serv-vars* :test #'equal)
`(setf (getprop serv-vars ,name)
(create :name ,name
:body (lambda (,value ,@(when index (list index)))
,@body))))