Вики Сообщества

ПОДРОБНЕЕ

Вики Сообщества
Advertisement
Вики Сообщества

Синтаксический анализатор — часть кода MediaWiki, позволяющая выполнять логические операции, во время выполнения которых анализатор использует параметры, заданные заранее, и выводит результат.

Анализатор заполняется также, как и шаблоны, используя фигурные скобки. Их можно легко распознать по наличию двоеточия или решётки (#) в функции (или же всего сразу, как в случае с {{#if:}}).

Список всех доступных анализаторов на вики можно найти на странице «Служебная:Version».

Шаг за шагом

  1. Подберите нужную функцию анализатора, подходящую для вашей логической операции. Обратите внимание на то, что существует много других доступных функций, позволяющих намного быстрее и легче провести ту или иную операцию.
    Ниже раздела с примером находится дополнительная информация с ссылками, позволяющими подробнее ознакомится с каждым видом функции анализатора.
  2. Определите правильный синтаксис, который будете использоваться в функции.
    В нашем случае, мы будем использовать функцию {{#ifexpr:}}, которая доступна на всех вики по умолчанию. Её синтаксис:
    {{#ifexpr: условие | значение, если условие истинно | значение, если условие ложно }}
  3. Заполним синтаксис функции.
    {{#ifexpr: 1 > 0 | да | нет }}
    В примере выше мы использовали математическое условие (1 > 0), при истинном значении которого анализатор выдаст нам да, а при ложном значении нет.
  4. Сохраните страницу с анализатором и убедитесь, что функция возвращает ожидаемое значение. В нашем примере анализатор должен вернуть значение да, так как 1 больше, чем 0.
    {{#ifexpr: 1 > 0 | да | нет }}да.
    Посмотрим, что произойдёт, если мы изменим условие на 1 < 0. В данном случае анализатор вернёт нам значение нет.
    {{#ifexpr: 1 < 0 | да | нет }}нет.

Пример выше может показаться глупым, ведь мы всегда знаем, что 1 больше 0. Но его возможности увеличиваются, когда мы используем переменную в условии. Давайте представим, что вы создаёте инфобокс для вики о TV шоу и хотите автоматически определять возрастную группу персонажа по его возрасту.

Добавив в свой инфобокс анализатор {{#ifexpr: {{{Возраст}}} >= 18 | Этот персонаж взрослый | Этот персонаж подросток }}, вы получите значение Этот персонаж взрослый, если заданная вами переменная "Возраст" будет больше или равна 18. Если же меньше, анализатор вернёт вам значение Этот персонаж подросток.

Встроенные в MediaWiki анализаторы

Программное обеспечение MediaWiki по умолчанию имеет свои собственные анализаторы, весь список которых можно найти на MediaWiki.org. В нашем случае мы приведём самые полезные.

{{fullurl:}}
Возвращает URL ссылку заданной страницы.
{{fullurl:Фэндом}}https://community.fandom.com/ru/wiki/%D0%A4%D1%8D%D0%BD%D0%B4%D0%BE%D0%BC
{{#language:}}
Конвертирует языковой код в название языка.
{{#language:es}} → español
{{lc:}}
Переводит все буквы строки в строчные (противоположный эффект у {{uc:}}).
{{lc:ПРИВЕТ}} → привет
{{ns:}}
Определяет название пространства имён по его номеру.
{{ns:4}} → Вики Сообщества
{{plural:}}
Выводит форму множественного числа (исключая первый параметр) в зависимости от числа (первый параметр).
{{PLURAL:3|страница|страницы|страниц}} → страницы
{{PLURAL:5|страница|страницы|страниц}} → страниц

Расширение ParserFunctions

Одним из самых популярных MediaWiki расширений является расширение ParserFunctions, добавляющее новые полезные функции. Оно по умолчанию включено на всём пространстве Фэндома и в нём присутствуют функции устаревшего расширения StringFunctions, в частности значимая функция {{#explode}}.

Расширении ParserFunctions включает в себя функции для математических операций, операций с условиями и операций с временем. Полный список и документацию по данному расширению можно найти на официальной странице расширения.

Другие расширения

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

  • Arrays - добавляет {{#arraydefine}}, {{#arrayprint}}, {{#arraysearcharray}}.
  • Semantic MediaWiki - добавляет {{#ask}}, {{#set}}, {{#show}}.
  • Semantic Forms - добавляет {{#formlink}}, {{#forminput}}, {{#arraymap}}
  • Simple Calendar - добавляет {{#calendar}}
  • Variables - добавляет {{#var}}, {{#vardefine}}, {{#vardefineecho}}.

См. также

Advertisement