Source
(defmacro def-html-tag (name &rest attributes)
(let ((effective-attributes (make-effective-attributes attributes)))
(with-unique-names (custom-attributes)
`(deftag ,name (&attribute ,@effective-attributes
&allow-custom-attributes ,custom-attributes &body body)
(emit-open-tag ,(string-downcase (symbol-name name))
(list ,@(iter (for attr :in effective-attributes)
(collect (string-downcase (symbol-name attr)))
(collect attr)))
,custom-attributes)
(emit-body body)
(emit-close-tag ,(string-downcase (symbol-name name)))))))Source Context