Wiki Doc |
Результат трансляции wiki текста представлен в виде структуры
struct Wiki { fix inp: sinput/Input! fix xtree: xml/Elem! fix xhtml: xml/Elem! }Здесь:
inp
– инпут-объект парсера с накопленной дополнительной информацией об оттранслированном документе (объект библиотеки com/teacode/sinput).
xtree
– представление документа в абстрактной xml модели (модель будет меняться)
xhtml
– финальное html-представление документа.
Для обычного применения (отрисовки документа) вполне достаточно использовать только содержимое поля xhtml
.
Методы wikimize
являются единственным внешним интерфейсом библиотеки. Wiki документ подается в контексте методов. В наиболее общем виде wikimize
содержит пять аргументов, но все они являются необязательными.
blacklist
позволяет управлять набором разрешаемых компонент
getlocurl
, getdoc
, inp0
и params
полезны, если пользователь библиотеки реализует собственные обработчики для локальных ссылок *[]()
и локальных вставок +[]()
. Эти компоненты зависят от контекста, в котором используется библиотека Wiki, и самой библиотекой не определяются. Они позволяют глубоко интегрировать обработку wiki документов в самые разнообразные проекты.
Последние четыре аргумента нужны только в случае разработки сложных интегрированных проектов, поэтому при обычном использовании мы рекомендуем работать с методами wikimize/0
и wikimize/1
. Результат формируется в виде структуры типа Wiki
.
Наиболее общий метод.
def String wikimize( blacklist: String*, getlocurl: Block?, getdoc: Block?, inp0: i/Input?, params:q/Node*): Wiki!
Самый общий метод трансляции wiki текста. Параметры:
blacklist: String*
Реализованный в библиотеке вариант wiki является сложным, продвинутым, и содержит большое количество компонентов. Данный параметр позволяет отключить отдельные компоненты wiki, если в них нет необходимости:
'header
– отключение заголовков ###
'emph
– отключение выделений в тексте (_курсив_
, __жирный__
)
'ol
– отключение упорядоченных списков
'ul
– отключение неупорядоченных списков
'quote
– отключение цитат >
'slink
– отключение простых ссылок <http://..>
'link
– отключение гиперссылок []()
'img
– отключение изображений ![]()
'hr
– отключение горизонтальных линий ***
'html
– отключение встроенного HTML
'entity
– отключение сущностей HTML &..;
'table
– отключение таблиц |
'comment
– отключение комментариев %%%
'math
– отключение математических формул \\(..\\)
'fnote
– отключение сносок ^[]
'meta
– отключение метаинформации %%%> ...
getlocurl: Block?
Содержит нульместную анонимную функцию, обрабатывающую локальные ссылки вида *[](local-link)
. Библиотека wiki не обрабатывает такие ссылки, а оставляет это на усмотрение разработчика приложения, который должен предоставить обработчик в параметре getlocurl
.
В контексте вызываемой анонимной функции подается объект структуры
struct LocLink(text: Any*, params: (map/M + base/Map)?)В поле
text
подается локальная ссылка local-link
, а в поле params
– пятый аргумент wikimize
, который может содержать дополнительную информацию, передаваемую разработчиком.
Результатом работы анонимной функции должно стать строковое значение URL, которое метод wikimize
интерпретирует как адрес гиперссылки и вставляет в html-элемент a/href
.
getdoc: Block?
Содержит нульместную анонимную функцию, обрабатывающую локальные вставки вида +[](local-link)
. Библиотека wiki не обрабатывает такие ссылки, а оставляет это на усмотрение разработчика приложения, который должен предоставить обработчик в параметре getdoc
.
В контексте вызываемой анонимной функции getdoc
подается объект структуры
struct LocLink(text: Any*, params: (map/M + base/Map)?)В поле
text
подается локальная ссылка local-link
, а в поле params
– пятый аргумент wikimize
, который может содержать дополнительную информацию, передаваемую разработчиком.
В качестве результата анонимная функция должна также вернуть структуру типа LocLink
.
Если параметр params
непустой, то параметр text
интерпретируется как текст дочернего документа, который должен быть вставлен в родительский текст. В этом случае для обработки дочернего документа рекурсивно вызывается wikimize
, результат которого вставляется в родительский текст.
Если параметр params
пустой, то значение text
интерпретируется как готовое значение, которое библиотекой не обрабатывается и вставляется в документ в не измененном виде.
inp0
Используется для импорта контекста родительского документа к документу дочернему. После обработки дочернего документа, необходимые данные, накопленные в процессе этой обработки, передаются обратно в родительский контекст. В основном этот параметр используется самой библиотекой при обработке локальных ссылок и локальных вставок.
params
В этом параметре пользователь может передать любые дополнительные данные, необходимые для исполнения getlocurl
и getdoc
.
def String wikimize( blacklist: String*, getlocurl: Block?, getdoc: Block?, params: q/Node* ): Wiki!
def String wikimize( blacklist: String* ): Wiki!
def String wikimize: Wiki!