Различия между YstokHTML и HTMLGen
- Макрос
html
переименован в htm
(одноименный
макрос есть в
CL-WHO).
- YstokHTML может генерировать XHTML с соответствующими закрывающими тегами
для пустых элементов в зависимости от значения переменной
*html-mode*
;
поэтому (htm :hr)
генерирует или
'<hr>', или '<hr />'. Эта же переменная *html-mode*
задает завершение тегов '/>' в семействе функций print-html-...
- Имена тегов переводятся в нижний регистр, когда
*html-mode*
есть :xml
.
- Имена атрибутов переводятся в нижний регистр, когда
*html-mode*
есть :xml
или
*attribute-case*
есть :downcase
. В это режиме (htm ((:p class 'a)))
генерирует '<p class="a"></p>'.
- Дополнительные псевдотеги
:include, :nbsp, :jscript, :format, :format-safe,
:!doctype, :?xml
.
- Дополнительный псевдотег
:escape
производит escape-кодирование
содержимого путем вызова функции html-template:escape-string
.
- Дополнительный (помимо
:if*
) признак :optional,
указывающий способ
вычисления значения атрибута.
- Автоматическое заключение значений атрибутов в двойные кавычки (quoting).
- Вхождения вспомогательного макроса
if*
удалены из исходного
файла htmlgen.lisp.
- Структурный тип
html-process
переименован в descriptor
:
- теперь это "настоящий" структурный тип, а не представленный
списком;
- слот
name-attrs
переименован в name-attr
;
- добавлен слот
uri-attrs
, в котором перечисляются имена
атрибутов со значениями типа URI.
- Функция
prin1-safe-http-string
заменена обобщённой фукнцией prin1-attribute-value
сигнатуры:
(
val &optional
stream)
.
- Сигнатура функций
html-print-list
и html-print
изменена на:
(
form &optional
stream)
.
- К макросу
def-std-html
добавлен необязательный параметр macro-name:
- явно передаваемый аргумент должен быть символом —
именем макроса, который будет генерировать HTML-код для
соответствующего элемента,
- умолчательным значением служит символ
— результат (intern "
key")
,
а не (intern "WITH-HTML-
key")
,
как для макроса HTMLGen.
- Вспомогательные функции
attribute-name-string
и prin1-attribute-value
однообразно генерируют HTML и при вызове функции
html-standard-print
, и с помощью макроса htm
.