Manual:Parser functions/ru

Функции парсера, добавленные в MediaWiki 1.7, - тип расширения, которое близко интегрируется с парсером. Фразу "функции парсера" не следует путать с $ext-parser, которое является коллекцияей простых парсинговых функций. (см. $hlp-parser) Фразу "функция парсера" не следует путать с, которая представляет собой набор простых функций парсера. (Смотрите для этого.)

Описание
В то время как теги расширений обрабатывают необработанный текст и возвращают HTML в браузер, функции парсера могут 'взаимодействовать' с другими вики-элементами на странице. Например, вывод функций парсера может использоваться как шаблонный параметр или в конструкторе ссылок.

Типичный синтаксис парсера функции:

Для получения дополнительной информации см. по. В этой документации указано:
 * Callback-функция должна иметь вид:
 * Или с :
 * Или с :

Создание функции синтаксического анализатора немного сложнее, чем создание нового тега, поскольку имя функции должно быть magic word, ключевым словом, поддерживающим псевдонимы и локализацию.

Простой пример
Ниже приведен пример расширения, которое создает функция парсера.

Запись переходит в extension.json, а код-в src/ExampleExtensionHooks.php соответственно:

Другой файл, ExampleExtension.i18n.php, должен содержать:

С включенным расширением,



производит:


 * param1 is hello and param2 is hi and param3 is hey

Стандартные функции
Для больше функций, может потребоваться разделение функций-ловушек для a_body.php или .hooks.php файл и сделать их статическими функциями класса. Затем вы можете загрузить класс с и вызов статической функции в крючки; например:

Положи это в свой  файл: Затем положить это в ваш  файл
 * Смотри: Создание обработчика событий для других стилей.

Кэширование
Как и в случае расширения тега, $parser->disableCache Может использоваться для отключения кэша для динамического расширения. Это оказывает значительное негативное влияние на производительность, поэтому используйте его только в случае необходимости.

Контролирование вывода парсера
Чтобы викитекст, возвращаемые функцией парсер быть полностью разбираемый (в том числе расширение шаблонов), установите параметр, false при возвращении:

It seems the default value for  changed from false to true, at least in some situations, sometime around version 1.12.

И наоборот, чтобы ваш парсер функция возвращает HTML, который остается непроанализированным, а не обратно викитекст, используйте это:

Однако, This is a test. будут выпускать что-то вроде этого:

This is

param1-Привет и param2-hi и param3-эй, это тест.

Это происходит из-за жесткого кода "\n\n", предваряющая вывод HTML парсера функций. Чтобы избежать этого и убедиться, что HTML-код отображается встроенный в окружающий текст, вы можете использовать это:

Именование
По умолчанию, MW добавляет хэш-символа (знака, "#") перед названием каждой функции парсера. Чтобы подавить это дополнение (и получить синтаксический анализатор функционирует без "#" префикс), включать "SFH_NO_HASH" константа в необязательные флаги аргумент setFunctionHook, как описано ниже.

При выборе имени без хэш-префикса обратите внимание, что трансклюзия страницы с именем, начинающимся с этого имени функции, за которым следует двоеточие, более невозможна. В частности, избегайте имен функций, равных имени пространства имен. В том случае, если interwiki transclusion включен, также избегайте имен функций, равных префиксу interwiki.

The setFunctionHook hook
Дополнительные сведения об интерфейсе синтаксического анализатора смотрите в документации по setFunctionHook в разделе includes/Parser.РНР. Вот (возможно, датированная) копия этих комментариев:

function setFunctionHook( $id, $callback, $flags = 0 ) Параметры:


 * string $id - The magic word ID
 * mixed $callback - The callback function (and object) to use
 * integer $flags - Optional, set it to the SFH_NO_HASH constant to call the function without "#".

Return value: The old callback function for this name, if any

Create a function, e.g.,. The callback function should have the form:

The callback may either return the text result of the function, or an array with the text in element 0, and a number of flags in the other elements. The names of the flags are specified in the keys. Valid flags are:


 * found : The text returned is valid, stop processing the template. This is on by default.
 * nowiki : Wiki markup in the return value should be escaped
 * noparse : Unsafe HTML tags should not be stripped, etc.
 * noargs : Don't replace triple-brace arguments in the return value
 * isHTML : The returned text is HTML, armour it against wikitext transformation

Параметры
Функции синтаксического анализатора не поддерживают именованные параметры, как это делают шаблоны и расширения тегов, но иногда полезно подделать их. Пользователи часто привыкли использовать вертикальные полосы ( | ) для разделения аргументов, поэтому приятно иметь возможность делать это и в контексте функции синтаксического анализатора. Вот простой пример того, как это сделать:

См. также

 * Расширение ParserFunctions - хорошо известный сборник функций парсера.
 * , an (incomplete) list of parser functions provided by core and extensions.
 * Библиотека PHP Parser Hooks, которая предоставляет объектно-ориентированный интерфейс для декларативных крючков парсера
 * Расширение ParserFunctions - хорошо известный сборник функций парсера.
 * , an (incomplete) list of parser functions provided by core and extensions.
 * Библиотека PHP Parser Hooks, которая предоставляет объектно-ориентированный интерфейс для декларативных крючков парсера
 * Расширение ParserFunctions - хорошо известный сборник функций парсера.
 * , an (incomplete) list of parser functions provided by core and extensions.
 * Библиотека PHP Parser Hooks, которая предоставляет объектно-ориентированный интерфейс для декларативных крючков парсера
 * Библиотека PHP Parser Hooks, которая предоставляет объектно-ориентированный интерфейс для декларативных крючков парсера