Инструменты пользователя

Инструменты сайта


wiki:devel:syntax_plugins

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
wiki:devel:syntax_plugins [2025/01/09 22:04] vladpolskiywiki:devel:syntax_plugins [2025/01/09 22:44] (текущий) – [Написание своего собственного плагина] vladpolskiy
Строка 1: Строка 1:
 ====== Синтаксические плагины ====== ====== Синтаксические плагины ======
  
-Синтаксические плагины --- это плагины расширения синтаксиса «[[ru:dokuwiki|ДокуВики]]». Чтобы понять, что необходимо для регистрации нового синтаксиса в «ДокуВики», вы должны прочитать, как работает [[parser|парсер]].+Синтаксические плагины --- это плагины расширения синтаксиса «[[wiki:dokuwiki|ДокуВики]]». Чтобы понять, что необходимо для регистрации нового синтаксиса в «ДокуВики», вы должны прочитать, как работает [[parser|парсер]].
  
 ===== Краткий обзор ===== ===== Краткий обзор =====
Строка 11: Строка 11:
   * <del>''getInfo()'' --- возвращает хэш с информацией о плагине: автор, электропочта, дата, название, описание, ссылки.</del>\\ **Теперь вместо неё прилагается отдельный файл plugin.info.txt**   * <del>''getInfo()'' --- возвращает хэш с информацией о плагине: автор, электропочта, дата, название, описание, ссылки.</del>\\ **Теперь вместо неё прилагается отдельный файл plugin.info.txt**
   * ''getType()'' --- должен возвращать тип синтаксиса (см. [[#синтаксические типы|ниже]]).   * ''getType()'' --- должен возвращать тип синтаксиса (см. [[#синтаксические типы|ниже]]).
-  * ''getSort()'' --- возвращает число, по которому определяется, в каком порядке должны добавляться состояния, см. также  [[devel:parser#order_of_adding_modes_important|parser, order of adding modes]] и [[devel:parser:getSort list]].+  * ''getSort()'' --- возвращает число, по которому определяется, в каком порядке должны добавляться состояния, см. также  [[wiki:devel:parser#order_of_adding_modes_important|parser, order of adding modes]] и [[wiki:devel:parser:getSort list]].
   * ''connectTo($mode)'' --- эта функция наследуется от класса Doku_Parser_Mode, определённого в ''inc/parser/parser.php''. Это место, где регистрируется регулярные выражения, необходимые для опознания вашего синтаксиса.   * ''connectTo($mode)'' --- эта функция наследуется от класса Doku_Parser_Mode, определённого в ''inc/parser/parser.php''. Это место, где регистрируется регулярные выражения, необходимые для опознания вашего синтаксиса.
   * ''handle($match, $state, $pos, Doku_Handler $handler)'' --- функция для подготовки совпавшего синтаксиса для использования рендером.   * ''handle($match, $state, $pos, Doku_Handler $handler)'' --- функция для подготовки совпавшего синтаксиса для использования рендером.
Строка 52: Строка 52:
 ====== Руководство: разбор синтаксического плагина ====== ====== Руководство: разбор синтаксического плагина ======
  
-Цель данного руководства --- разобрать концепции, касающиеся [[syntax_plugins|синтаксических плагинов]] «[[ru:dokuwiki|ДокуВики]]» и пройти шаги, связанные с написанием своего собственного плагина.+Цель данного руководства --- разобрать концепции, касающиеся [[syntax_plugins|синтаксических плагинов]] «[[wiki:dokuwiki|ДокуВики]]» и пройти шаги, связанные с написанием своего собственного плагина.
  
 Для тех, кто с особым нетерпением жаждет начать: возьмите копию плагина [[syntax_plugin_skeleton|syntax plugin skeleton]]. Это своего рода костяк --- плагин, который выводит «Hello World!», когда встречает токен «''%%<TEST>%%''» в статье вики. Начните наращивать на него «мясо». Для тех, кто с особым нетерпением жаждет начать: возьмите копию плагина [[syntax_plugin_skeleton|syntax plugin skeleton]]. Это своего рода костяк --- плагин, который выводит «Hello World!», когда встречает токен «''%%<TEST>%%''» в статье вики. Начните наращивать на него «мясо».
Строка 170: Строка 170:
 Этот номер используется лексером((Lexer --- часть парсера, анализируящая «сырую» (исходную) статью вики.)) для управления порядком, в котором он проверяет шаблоны синтаксических состояний на «сырых» (исходных) данных вики. Это важно только в том случае, если один и тот же участок данных попадает в шаблоны, относящиеся к двум или более состояниям. После проверки будет выбран шаблон, относящийся к состоянию с наименьшим порядковым номером. Этот номер используется лексером((Lexer --- часть парсера, анализируящая «сырую» (исходную) статью вики.)) для управления порядком, в котором он проверяет шаблоны синтаксических состояний на «сырых» (исходных) данных вики. Это важно только в том случае, если один и тот же участок данных попадает в шаблоны, относящиеся к двум или более состояниям. После проверки будет выбран шаблон, относящийся к состоянию с наименьшим порядковым номером.
  
-Вы можете использовать это свойство для написания плагина, который заменяет или расширяет «родной» хендлер «ДокуВики» для той же синтаксической конструкции. Примером является плагин «[[plugin:Code]]».+Вы можете использовать это свойство для написания плагина, который заменяет или расширяет «родной» хендлер «ДокуВики» для той же синтаксической конструкции. Примером является плагин «[[wiki:plugin:Code]]».
  
-Подробности о существующих порядковых номерах доступны для обоих [[parser]] ([[ru:devel:parser:getsort_list|sort list]]).+Подробности о существующих порядковых номерах доступны для обоих [[parser]] ([[wiki:devel:parser:getsort_list|sort list]]).
 :?: :?:
  
Строка 234: Строка 234:
 Параметр ''$mode'' --- имя формата состояния финального вывода произведённого рендером. В настоящее время «ДокуВики» поддерживает только один формат вывода --- ''XHTML'' ((Существует ещё специальное состояние ''metadata'', которое ничего не выводит, только собирает метаданные для страницы. Используйте его для вставки значений в массив метаданных.)). Параметр ''$mode'' --- имя формата состояния финального вывода произведённого рендером. В настоящее время «ДокуВики» поддерживает только один формат вывода --- ''XHTML'' ((Существует ещё специальное состояние ''metadata'', которое ничего не выводит, только собирает метаданные для страницы. Используйте его для вставки значений в массив метаданных.)).
  
-Новые состояния могут быть представлены в [[renderer_plugins|плагинах рендера]]. Плагины должны производить вывод только для тех форматов, которые они поддерживают, это значит, что эта функция должна быть структурирована...+Новые состояния могут быть представлены в [[wiki:devel:renderer_plugins|плагинах рендера]]. Плагины должны производить вывод только для тех форматов, которые они поддерживают, это значит, что эта функция должна быть структурирована...
 <code> <code>
 if ($mode == 'xhtml') {  // supported mode if ($mode == 'xhtml') {  // supported mode
Строка 248: Строка 248:
  
 ==== Локализация ==== ==== Локализация ====
- 
 FIXME FIXME
- +Смотрите статьи «[[wiki:devel:common_plugin_functions#локализация|Локализация]]» и «[[plugin_file_structure|Структура файлов плагина]]».
-Смотрите статьи «[[common_plugin_functions#локализация|Локализация]]» и «[[plugin_file_structure|Структура файлов плагина]]».+
  
 ==== Конфигурация ==== ==== Конфигурация ====
Строка 258: Строка 256:
  
 ==== Использование CSS и JavaScript ==== ==== Использование CSS и JavaScript ====
- 
 FIXME FIXME
- 
 Смотрите статью «[[plugin_file_structure|Структура файлов плагина]]». Смотрите статью «[[plugin_file_structure|Структура файлов плагина]]».
  
Строка 291: Строка 287:
     * если у вас есть входной и выходной шаблоны, не забудьте обработать не совпавшие с шаблоном данные;     * если у вас есть входной и выходной шаблоны, не забудьте обработать не совпавшие с шаблоном данные;
     * относитесь к сырым данным вики с подозрением (вниманием) и убедитесь, что все спецсимволы прошли конвертор последовательностей.     * относитесь к сырым данным вики с подозрением (вниманием) и убедитесь, что все спецсимволы прошли конвертор последовательностей.
-  - Протестируйте и добавьте плагин на [[ru:plugins|страницу плагинов]] «ДокуВики».+  - Протестируйте и добавьте плагин на [[wiki:plugins|страницу плагинов]] «ДокуВики».
  
 ===== Пример 1-й плагина — Now ===== ===== Пример 1-й плагина — Now =====
wiki/devel/syntax_plugins.1736449478.txt.gz · Последнее изменение: vladpolskiy