Шаблоны и функции генерации HTML-кода

Шаблон YHTML-Template представляет собой HTML-код с псевдотегами. Компилятор анализирует шаблоны в исходных HTML-файлах статей и разворачивает их в конкретный код, состоящий как из плоского текста, так и стандартных тегов HTML.

Пусть в исходный файл страницы помещён псевдотег

<!-- TMPL_EVAL expr -->

Тогда на выходе получится страницу с "динамическим" текстом или более сложным куском разметки, полученным в результате оценивания S-выражения Лисп expr.

Текущая версия компилятора включает следующие функции генерации кусков HTML-кода.

[функция] anchor-href, ahref

Сигнатура

anchor-href link &key target

ahref link &key target

Пакет

ystok.help

Аргументы
link
Строка или объект типа ystok.uri:uri, представляющий гибкую ссылку.
Если в строке не указаны ни схема help:, ни знак #, то строка трактуется как якорь, т.е. она целиком считается фрагментом, а не путём, и подразумевает схему help.
target
позволяет уточнить исходный файл фрагмента, на который ссылается якорь:
"_popup" означает искать только во всплывающих заметках,
"_self", "_parent" или другое непустое значение означает искать только в обычных статьях,
если не задан или nil, то искать везде.
Значение

Если якорь найден в книге, то возвращается объект типа ystok.uri:uri, который может быть использован в качестве значения атрибута href HTML-элемента A. Результат есть спецификация целевой страницы и, возможно, включает якорь в качестве фрагмента.

Если якорь не найден в книге, возвращается nil, а в журнал пишется соответствующее предупреждение.

[функция] anchor-content, acontent

Сигнатура

anchor-content link &key target suffix

acontent link &key target suffix

Пакет

ystok.help

Аргументы
link
Строка или объект типа ystok.uri:uri, представляющий гибкую ссылку.
Если в строке не указаны ни схема help:, ни знак #, то строка трактуется как якорь, т.е. она целиком считается фрагментом, а не путём, и подразумевает схему help.
target
позволяет уточнить исходный файл фрагмента, на который ссылается якорь:
"_popup" означает искать только во всплывающих заметках,
"_self", "_parent" или другое непустое значение означает искать только в обычных статьях;
если не задан или nil, то искать везде.
suffix
Булево значение,
умолчание есть nil.
Значение

Если якорь найден в книге, возвращается псевдоэлемент LHTML вида

 (:content . LHTML-список)

Когда для якоря явно задано свойство text, то результирующий LHTML-список состоит из строки — значения этого свойства — или из результата форматирования этой строки с помощью псевдотегов BBcode.
В противном случае LHTML-списком служит содержимое HTML-элемента, определяющего данный якорь.

Если значение suffix истино, к содержимому якоря присоединяются дополнительные свойства, нампример, category. Если значение suffix есть nil, вслед за содержимым ничего не выдаётся.

Если якорь не найден в книге, возвращается nil, а в журнал пишется соответствующее предупреждение.

[функция] anchor-text, atext

Сигнатура

anchor-text link &key target

atext link &key target

Пакет

ystok.help

Аргументы
link
Строка или объект типа ystok.uri:uri, представляющий гибкую ссылку.
Если в строке не указаны ни схема help:, ни знак #, то строка трактуется как якорь, т.е. она целиком считается фрагментом, а не путём, и подразумевает схему help.
target
позволяет уточнить исходный файл фрагмента, на который ссылается якорь:
"_popup" означает искать только во всплывающих заметках,
"_self", "_parent" или другое непустое значение означает искать только в обычных статьях;
если не задан или nil, то искать везде.
Значение

Если якорь найден в книге, возвращается строка, являющаяся

Если якорь не найден в книге, возвращается nil, а в журнал пишется соответствующее предупреждение.

[функция] anchor-a, aa

Сигнатура

anchor-a link &key class target content text suffix

aa link &key class target content text suffix

Пакет

ystok.help

Аргументы
link
Строка или объект типа ystok.uri:uri, представляющий гибкую ссылку.
Если в строке не указаны ни схема help:, ни знак #, то строка трактуется как якорь, т.е. она целиком считается фрагментом, а не путём, и подразумевает схему help.
class
Имя CSS-класса, который будет приписан элементу A.
target
позволяет уточнить исходный файл фрагмента, на который ссылается якорь:
"_popup" означает искать только во всплывающих заметках,
"_self", "_parent" или другое непустое значение означает искать только в обычных статьях,
если не задан или nil, то искать везде.
content
LHTML список, задающий содержимое генерируемого элемента A.
text
Либо t, либо строка, явно задающая содержимое генерируемого элемента A.
suffix
Булево значение,
умолчание есть nil.
Значение

Если якорь найден в книге, то возвращается кусок HTML-кода, состоящий из элемента

<A [class="class"] [target="target"] href="ahref">content-or-text</A>

где ahref — спецификация целевой страницы и, возможно, фрагмента для якоря, вычисленная с помощью функции {(anchor-a "ANCHOR-HREF" :text t)}.

Если в качестве class явно передаётся nil, то атрибут class не выдаётся.
Если class не задан, то по умолчанию в качестве значения атрибута class будут перечислены те классы, которые

Если text есть t, то содержимое будет плоским текстом, вычисленным с помощью функции {(anchor-a "ANCHOR-TEXT" :text t)}.

Если оба аргумента content и text есть nil, то содержимое вычисляется исходя из определения якоря с помощью функции {(anchor-a "ANCHOR-CONTENT" :text t)}.

Если значение suffix истино, к содержимому якоря присоединяются дополнительные свойства, нампример, category. Если значение suffix есть nil, вслед за содержимым ничего не выдаётся.

Если якорь не найден в книге, возвращается nil, а в журнал пишется соответствующее предупреждение.