[функция] view-topic

Сигнатура

view-topic locator &key book interface displayer =>

Пакет

ystok.help

Аргументы
locator
Локатор или список локаторов, служащий для внутренней идентификации статьи.
book
Идентификатор или дескриптор книги помощи по умолчанию.
interface
nil или объект-окно верхнего уровня, через которое пользователь запросил о помощи.
displayer
nil или элемент интерфейса, для которого запрашивается помощь.
Возвращаемые значения

Нет.

Описание

Локатор — объект типа ystok.uri:uri или строка одного из следующих видов:
"anchor" | "#anchor"| "//book_id#anchor" | "//book_id/" | "/path" | "//book_id/path" | "/path#anchor" | "//book_id/path#anchor".
Эта строка аналогична гибкой ссылке, используемой в исходных HTML-файлах разрабатываемой книги помощи, с той лишь разницей, что при отсутствии каких-либо разделителей строка трактуется как anchor, а не как path (как это принято в спецификации URI).

Функция открывает книгу помощи на странице, содержащей указанный якорь anchor и/или находящейся в пути path. Когда в локаторе задан и якорь, и путь, путь обычно задаёт только физическую папку (без указания файла), где ищется страница с определением якоря.

Если аргумент book не задан, по умолчанию якорь ищется в книге *default-book*. Если существуют несколько страниц, содержащих данный якорь, то высвечивает запрос, на какой именно следует перейти. Если ни одной страницы не найдено, то выдается предупреждение в виде диалога.

В качестве аргумента book может передаваться экземпляр как класса book, так book-system. Последняя возможность удобна для отладки функций помощи на этапе разработки.

Не все браузеры позволяют прокручивать открываемую страницу, так чтобы показать указанный фрагмент. Тогда страница будет показана с начала.

Переход на фрагмент внутри страницы статьи верхнего уровня по умолчанию не реализован. Обычно такой статьёй служит обзор "O книге помощи". Маловероятно, что из прикладной программы потребуются переходы внутрь него — его достаточно показать с самого начала.

Когда локатор представлен строкой URI, функция разбирает её. Чтобы корректно преобразовать фрагмент, необходимо передать аргумент :fragment-char-p функции uri:parse-uri, а значит, знать язык. Обычно само приложение подразумевается скомпилированным под определённый язык. Поэтому функция ещё при компиляции проверяет системные возможности (features), вроде :Russian, вместо того, чтобы пытаться извлечь язык из какой-нибудь книги во время исполнения.