;; -*- lisp -*- (in-package :it.bese.ucw) ;;;; ** UCW Extensions to tal (defmacro with-attribute-value ((var attribute-name tag &key implicit-progn-p) &body body) (rebinding (attribute-name tag) (with-unique-names (value-string) `(let ((,value-string (getf (cdar ,tag) ,attribute-name))) (unless ,value-string (error "~S not found in ~S." ,attribute-name ',tag)) (let ((,var (read-tal-expression-from-string ,value-string ,implicit-progn-p))) (remf (cdar ,tag) ,attribute-name) ,@body))))) (def-tag-handler