cl-who: использование переменной в with-html-output-to-string

Все примеры, которые я видел за cl-who работать так:

(with-html-output-to-string (s)
   (:HTML (:HEAD (:TITLE "hello")) (:BODY (:DIV "world"))))

Который работает отлично. Тем не менее, я хотел использовать with-html-output-to-string с переменной, вместо жестко закодированного HTML-дерева; если *p* имеет (:HTML (:HEAD (:TITLE "hello")) (:BODY (:DIV "world"))) и я делаю это

(with-html-output-to-string (s)
   *p*)

я получил "" в следствии. Я думаю, что как with-html-output-to-string это макрос, его последний аргумент никогда не оценивается. Есть ли способ, которым я могу обойти это?

2 ответа

Решение

Использование cl-who:str; проверьте примеры на http://weitz.de/cl-who/.

Если вы делаете:

(with-html-output-to-string (s)
   (str *p*))

вы получите ожидаемый результат.

Передача частичных html-деревьев в виде lisp-форм не является ожидаемым способом в cl-who, но вы можете использовать некоторые внутренние компоненты cl-who (применить tree-to-commands) написать небольшую обертку.

Другие вопросы по тегам