Википедия:Функции парсера: различия между версиями

Содержимое удалено Содержимое добавлено
м откат правок 31.181.13.218 (обс.) к версии Загребин Илья
Метки: откат отменено
Возвращена правка u:Iniquity: всё это и так есть на mediawiki.org, нет смысла копипастить оттуда сюда
Метки: замена ручная отмена отменено
Строка 1:
{{shortcut|ВП:ПАРС|ВП:Парсер}}
{{ombox|text='''Более подробная информация находится на [[mw:Help:Extension:ParserFunctions/ru|странице MediaWiki]].}}
{{о|расширении для MediaWiki|базовых функциях парсера|mw:Help:Magic words/ru#Функции парсера}}
Расширение [[mw:Special:MyLanguage/Extension:ParserFunctions|Extension:ParserFunctions]] предоставляет одиннадцать дополнительных функций парсера в дополнение к «[[mw:Special:MyLanguage/Help:Magic words#Parser functions|волшебным словам]]», которые уже присутствуют в МедиаВики.
{{ombox|type=content|text='''Информация о расширениях на данной странице могла устареть.''' Обновленная и более подробная информация находится на [[mw:Help:Extension:ParserFunctions/ru|странице MediaWiki]].}}
 
''Может'' быть сконфигурировано для предоставления дополнительных функций синтаксического анализа при обработке строк; эти строковые функции задокументированы [[mw:Special:MyLanguage/Extension:StringFunctions#Functions|в другом месте]].
Базовый набор функций парсера известен под названием ''[[mw:Help:Magic words/ru|magic words]]'' («волшебные слова», «магические слова»). См. также [[mw:Help:Extension:ParserFunctions/ru]] и [[mw:Extension:StringFunctions]]. Общий синтаксис функций парсера таков:
{{''#функция'': ''аргумент 1'' | ''аргумент 2'' | ''аргумент 3'' ... }}
 
Все функции парсера, предоставляемые этим расширением, имеют вид:
Если необходимо, чтобы значение, выдаваемое парсером, было частью таблицы, необходимо вместо символа вертикальной черты использовать шаблоны-подстановки — {{t|!-}}, {{t|!}}, {{t|!!}}, — которые адекватно воспринимается функциями парсера, и при формировании страницы движком MediaWiki раскрываются в символы, формирующие таблицу — <code>|-</code>, <code>|</code>, <code>||</code>.
: <code><nowiki>{{</nowiki>'''#имя_функции''': ''аргумент 1'' | ''аргумент 2'' | ''аргумент 3'' … <nowiki>}}</nowiki></code>
 
Вся информация находится на основной странице расширения — [[mw:Special:MyLanguage/Extension:ParserFunctions|Extension:ParserFunctions]].
Для формирования таблицы можно также использовать язык [[HTML]]:
* <code><nowiki><table></table></nowiki></code> — аналогично <code>{|-</code> и <code>-|}</code>;
* <code><nowiki><tr></nowiki></code> — начинает строку;
* <code><nowiki><td></nowiki></code> — создает ячейку в строке…
{{^v}}
 
== Функции ==
 
=== #expr ===
{{см. также|mw:Help:Extension:ParserFunctions/ru##expr}}
Функция <tt>#expr</tt> производит математические вычисления над числами или переменными/параметрами, приводимыми к числам. Синтаксис:
 
<nowiki>{{</nowiki>#expr: ''выражение'' <nowiki>}}</nowiki>
 
Поддерживаются следующие операторы (перечислены в порядке, примерно соответствующем их приоритету):
 
{| cellpadding="6" class="standard"
! Оператор
! Действие
! Пример
|-
!
|align="center"| —
||<tt><nowiki>{{#expr: 123456789012345 }}</nowiki></tt> = {{#expr: 123456789012345 }}<br>
<tt><nowiki>{{#expr: 0.000001 }}</nowiki></tt> = {{#expr: 0.000001 }}
|-
! ()
| Операторы группирования
| <tt><nowiki>{{#expr: (30 + 7) * 7 }}</nowiki></tt> = {{#expr: (30 + 7) * 7 }}
|-
! +
| Унарный знак '''+'''
| <tt><nowiki>{{#expr: +30 * +7 }}</nowiki></tt> = {{#expr: +30 * +7 }}
|-
! -
| Унарный знак '''-''' (инвертирование знака)
| <tt><nowiki>{{#expr: -30 * -7 }}</nowiki></tt> = {{#expr: -30 * -7 }}
|-
! not
| Унарное либо логическое НЕ
| <tt><nowiki>{{#expr: not 0 * 7 }}</nowiki></tt> = {{#expr: not 0 * 7 }}<br><tt><nowiki>{{#expr: not 30+7 }}</nowiki></tt> = {{#expr: not 30+7 }}
|-
! *
| Умножение
| <tt><nowiki>{{#expr: 30 * 7 }}</nowiki></tt> = {{#expr: 30 * 7 }}
|-
! /
| Деление, эквивалент '''div'''
| <tt><nowiki>{{#expr: 30 / 7 }}</nowiki></tt> = {{#expr: 30 / 7 }}
|-
! ^
| Возведение в степень
| <tt><nowiki>{{#expr: 3 ^ 2 }}</nowiki></tt> = {{#expr: 3 ^ 2 }}
|-
! div
| Деление, эквивалент '''/''' ''(целочисленного деления нет)''
| <tt><nowiki>{{#expr: 30 div 7 }}</nowiki></tt> = {{#expr: 30 div 7 }}<br><tt><nowiki>{{#expr: 5 div 2 * 2 + 5 mod 2 }}</nowiki></tt> = {{#expr: 5 div 2 * 2 + 5 mod 2 }}
|-
! mod
| Остаток от деления, получается делением операндов, у которых отброшены дробные части<br>''(обратите внимание, что '''div''' и '''mod''' работают не как в обычных языках программирования)''
| <tt><nowiki>{{#expr: 30 mod 7 }}</nowiki></tt> = {{#expr: 30 mod 7 }}<br>
<tt><nowiki>{{#expr: -8 mod -3 }}</nowiki></tt> = {{#expr: -8 mod -3 }}<br>
<tt><nowiki>{{#expr: -8 mod +3 }}</nowiki></tt> = {{#expr: -8 mod +3 }}<br>
<tt><nowiki>{{#expr: 8 mod 2.7 }}</nowiki></tt> = {{#expr: 8 mod 2.7 }}<br>
<tt><nowiki>{{#expr: 8 mod 3.2 }}</nowiki></tt> = {{#expr: 8 mod 3.2 }}<br>
<tt><nowiki>{{#expr: 8.9 mod 3 }}</nowiki></tt> = {{#expr: 8.9 mod 3 }}<br>
|-
! <tt>+</tt>
| Сложение
| <tt><nowiki>{{#expr: 30 + 7 }}</nowiki></tt> = {{#expr: 30 + 7 }}
|-
! <tt>-</tt>
| Вычитание
| <tt><nowiki>{{#expr: 30 - 7 }}</nowiki></tt> = {{#expr: 30 - 7 }}
|-
! round
| Округляет левый операнд до указанного числа цифр после запятой
| <tt><nowiki>{{#expr: 30 / 7 round 3 }}</nowiki></tt> = {{#expr: 30 / 7 round 3 }}<br>
<tt><nowiki>{{#expr: 30 / 7 round 0 }}</nowiki></tt> = {{#expr: 30 / 7 round 0 }}<br>
<tt><nowiki>{{#expr: 3456 round -2 }}</nowiki></tt> = {{#expr: 3456 round -2 }}<br>
|-
! =
| Равенство (численное и булево сравнение)
| <tt><nowiki>{{#expr: 30 = 7 }}</nowiki></tt> = {{#expr: 30 = 7 }}
|-
! <>
| Неравенство, эквивалент '''!='''
| <tt><nowiki>{{#expr: 30 &lt;&gt; 7 }}</nowiki></tt> = {{#expr: 30 <> 7 }}
|-
! !=
| Неравенство, эквивалент '''&lt;&gt;''' и логического ''xor''
| <tt><nowiki>{{#expr: 1 != 0 }}</nowiki></tt> = {{#expr: 1 != 0 }}
|-
! <
| Меньше
| <tt><nowiki>{{#expr: 30 &lt; 7 }}</nowiki></tt> = {{#expr: 30 < 7 }}
|-
! >
| Больше
| <tt><nowiki>{{#expr: 30 &gt; 7 }}</nowiki></tt> = {{#expr: 30 > 7 }}
|-
! <=
| Меньше или равно
| <tt><nowiki>{{#expr: 30 &lt;= 7 }}</nowiki></tt> = {{#expr: 30 <= 7 }}
|-
! >=
| Больше или равно
| <tt><nowiki>{{#expr: 30 &gt;= 7 }}</nowiki></tt> = {{#expr: 30 >= 7 }}
|-
! and
| Логическое И
| <tt><nowiki>{{#expr: 4 &lt; 5 and 4 mod 2 }}</nowiki></tt> = {{#expr: 4 < 5 and 4 mod 2 }}
|-
! or
| Логическое ИЛИ
| <tt><nowiki>{{#expr: 4 &lt; 5 or 4 mod 2 }}</nowiki></tt> = {{#expr: 4 < 5 or 4 mod 2 }}
|-
! sin
| Синус
| <tt><nowiki>{{#expr: sin(1.57) }}</nowiki></tt> = {{#expr: sin(1.57) }}
|-
! cos
| Косинус
| <tt><nowiki>{{#expr: cos(1.57) }}</nowiki></tt> = {{#expr: cos(1.57) }}
|-
! tan
| Тангенс
| <tt><nowiki>{{#expr: tan(0) }}</nowiki></tt> = {{#expr: tan(0) }}
|}
 
'''Это не все имеющиеся операторы.''' Более подробная документация по операторам функции — [[:m:Help:Calculation]].
 
Как всегда, лучше поставить лишние скобки, чем ломать голову с порядком вычисления.
 
На выводе логических переменных 0 означает ложь, а 1 — истину.
 
Например:
 
<nowiki>{{#expr: (100 - 32) / 9 * 5 round 0 }}</nowiki>
 
выдаёт: {{#expr: (100 - 32) / 9 * 5 round 0 }}.
 
Произведено преобразование 100° по Фаренгейту в градусы по Цельсию с округлением до ближайшего целого числа.
 
=== #if ===
{{см. также|mw:Help:Extension:ParserFunctions/ru##if}}
Функция <tt>#if</tt> («если») служит для создания конструкций вида if-then-else. Её синтаксис таков:
 
<nowiki>{{</nowiki>#if: ''тестовая строка'' | ''текст, если непуста'' | ''текст, если пуста'' <nowiki>}}</nowiki>
 
Если ''тестовая строка'' пуста или состоит только из пробелов, то возвращается ''«текст, если пуста»''; в обратном случае возвращается ''«текст, если непуста»''. Последний параметр может быть опущен — в этом случае при пустой строке будет возвращена пустая строка.
 
Обратите внимание, что <tt>#if</tt> не поддерживает сравнение при помощи «=» и прочие математические операции. Так, <code><nowiki>{{#if: 1 = 2 | да | нет }}</nowiki></code> вернёт «{{#if: 1 = 2 | да | нет }}», так как строка <code>1 = 2</code> непуста. Для сравнения строк используйте <tt>#ifeq</tt>. Для сравнения чисел используйте <tt>#ifexpr</tt>.
 
Содержимое после вертикальных черт воспринимается как написанное с начала строки, поэтому символы <code>*</code>, <code>#</code>, <code>:</code>, <code>;</code> и прочие на первой позиции преобразуются в соответствующие элементы вёрстки. Чтобы этого избежать, ставьте перед ними тег {{tago|nowiki/}} или заменяйте на HTML-сущности {{amp|#42}}, {{amp|#35}}, {{amp|#58}} и {{amp|#59}} соответственно.
 
=== #ifeq ===
{{см. также|mw:Help:Extension:ParserFunctions/ru##ifeq}}
Функция <tt>#ifeq</tt> («if equal», «если равны») сравнивает две строки, возвращая ещё одну строку в зависимости от результата сравнения. Её синтаксис таков:
 
<nowiki>{{</nowiki>#ifeq: ''строка для сравнения 1'' | ''строка для сравнения 2'' | ''текст, если равны'' | ''текст, если не равны'' <nowiki>}}</nowiki>
 
=== #ifexist ===
{{см. также|mw:Help:Extension:ParserFunctions/ru##ifexist}}
Функция <tt>#ifexist</tt> («if exist», «если существует») похожа по синтаксису на <tt>#if</tt>, только вместо условия проверяется существование статьи с указанным заголовком. Проверка выполняется с учётом регистра после приведения проверяемого заголовка к каноническому виду (если в начале стоит строчная буква, то она преобразуется в прописную). Например:
: <tt><nowiki>{{#ifexist: User:Js | Участник есть | Участника нет }}</nowiki></tt> вернёт <tt>{{#ifexist: User:Js | Участник есть | Участника нет }}</tt>, поскольку страница [[User:Js]] существует.
: <tt><nowiki>{{#ifexist: user:js | Участник есть | Участника нет }}</nowiki></tt> вернёт <tt>{{#ifexist: user:js | Участник есть | Участника нет }}</tt>, поскольку [[user:js]] при приведении к канонической форме даст [[User:Js]].
: <tt><nowiki>{{#ifexist: User:JS | Участник есть | Участника нет }}</nowiki></tt> вернёт <tt>{{#ifexist: User:JS | Участник есть | Участника нет }}</tt>, поскольку страница [[User:JS]] не существует.
 
<nowiki>{{#ifexist}}</nowiki> не работает с относительными путями типа [[/подстраница]].
 
Для пространства имён «Файл» (оно же «File», «Изображение») проверяется наличие только локального файла, но не файла на [[Викисклад]]е. Для проверки наличия доступного файла также и на Викискладе, нужно использовать префикс <nowiki>«Media:»</nowiki>.
 
Пример (файл [[:Файл:Example.png|Example.png]] загружен только на Викисклад):
: <tt><nowiki>{{#ifexist: Файл:Example.png | есть | нет }}</nowiki></tt> вернёт <tt>{{#ifexist: Файл:Example.png | есть | нет }}</tt>
: <tt><nowiki>{{#ifexist: Изображение:Example.png | есть | нет }}</nowiki></tt> вернёт <tt>{{#ifexist: Изображение:Example.png | есть | нет }}</tt>
: <tt><nowiki>{{#ifexist: Media:Example.png | есть | нет }}</nowiki></tt> вернёт <tt>{{#ifexist: Media:Example.png | есть | нет }}</tt>
 
Если была создана локальная страница описания файла с Викисклада, все 3 варианта вернут «есть».
 
Также работает с параметрами шаблонов.
 
Количество вызовов этой функции на одной странице ограничено. Если оно превышено, страница попадает в категорию {{cl|Википедия:Страницы со слишком большим количеством вызовов ресурсоёмких функций}}. Количество вызовов функции на странице необходимо снизить.
 
=== #ifexpr ===
{{см. также|mw:Help:Extension:ParserFunctions/ru##ifexpr}}
<tt>#ifexpr</tt> вычисляет математическое выражение и возвращает одну из двух строк в зависимости от результата.
 
<nowiki>{{</nowiki>#ifexpr: ''выражение'' | ''текст, если истина'' | ''текст в противном случае'' <nowiki>}}</nowiki>
 
Математический синтаксис такой же, как у <tt>#expr</tt>.
 
=== #switch ===
{{см. также|mw:Help:Extension:ParserFunctions/ru##switch}}
<tt>#switch</tt> сравнивает одно значение со многими, возвращая результат, если найдено совпадение. Если совпадение не найдено, то возвращается указанный в конце записи результат по умолчанию (он обязательно должен быть последним). Наличие этого результата необязательно, и в случае отсутствия его и совпадений ничего возвращено не будет.
 
<nowiki>{{</nowiki>#switch: <span style="color: green;">''сравниваемая величина''</span>
| ''значение<sub>1</sub>'' = ''результат<sub>1</sub>''
| ''значение<sub>2</sub>'' = ''результат<sub>2</sub>''
| ''...''
| ''значение<sub>n</sub>'' = ''результат<sub>n</sub>''
| <span style="color: blue;">''результат по умолчанию''</span>
<nowiki>}}</nowiki>
 
Если для нескольких значений должен быть одинаковый результат, то запись можно сократить:
 
<nowiki>{{</nowiki>#switch: <span style="color: green;">''сравниваемая величина''</span>
| ''значение<sub>1a</sub>'' | ''значение<sub>1b</sub>'' | ... | ''значение<sub>1x</sub>'' = ''результат<sub>1</sub>''
| ''значение<sub>2a</sub>'' | ''значение<sub>2b</sub>'' | ... | ''значение<sub>2y</sub>'' = ''результат<sub>2</sub>''
| ''...''
| ''значение<sub>Na</sub>'' | ''значение<sub>Nb</sub>'' | ... | ''значение<sub>Nz</sub>'' = ''результат<sub>N</sub>''
| <span style="color: blue;">''результат по умолчанию''</span>
<nowiki>}}</nowiki>
 
[[##switch|#switch]] может использоваться вместо одного или нескольких [[##ifeq|#ifeq]]:
: <tt><nowiki>{{#switch: a | a = true | false }}</nowiki></tt> даёт {{#switch: a | a = true | false }}
: <tt><nowiki>{{#ifeq: a | a | true | false }}</nowiki></tt> даёт {{#ifeq: a | a | true | false }}
 
Если сравниваемая величина или значения содержит знак равенства (<tt>=</tt>), то <tt>#switch</tt> не сможет правильно сравнить её и значения. Для этого нужно обязательно в значениях (но необязательно в сравниваемой величине) использовать шаблон {{t|{{=}}}}, который содержит знак равенства, или код {{amp|#61}}:
 
: <tt><nowiki>{{#switch: 1=2</nowiki></tt>
: <tt><nowiki>&nbsp;| 1=2 = raw</nowiki></tt>
: <tt><nowiki>&nbsp;| 1&lt;nowiki>=&lt;/nowiki>2 = nowiki</nowiki></tt>
: <tt><nowiki>&nbsp;| 1&amp;#61;2 = html</nowiki></tt>
: <tt><nowiki>&nbsp;| 1{{=}}2 = template</nowiki></tt>
: <tt><nowiki>&nbsp;| default</nowiki></tt>
: <tt><nowiki>}}</nowiki></tt> → '''{{#switch: 1=2 | 1=2 = raw | 1<nowiki>=</nowiki>2 = nowiki | 1&#61;2 = html | 1{{=}}2 = template | default }}'''
 
Если ''результат по умолчанию'' содержит знаки «=», перед ним можно написать <code>#default ={{nbsp}}</code>.
 
=== #time ===
{{см. также|mw:Help:Extension:ParserFunctions/ru##time}}
<tt>#time</tt> — функция, позволяющая выводить время и дату в заданном формате. Синтаксис:
<nowiki>{{</nowiki>#time: ''формат'' <nowiki>}}</nowiki>
<nowiki>{{</nowiki>#time: ''формат'' | ''время'' <nowiki>}}</nowiki>
<nowiki>{{</nowiki>#time: ''формат'' | ''время'' | ''язык'' <nowiki>}}</nowiki>
 
Параметр ''время'' принимает дату в формате <tt>гггг-мм-чч</tt>, где <tt>гггг</tt> — год, <tt>мм</tt> — номер месяца, <tt>чч</tt> — число месяца. Если параметр не задан, то используется текущее время и дата.
 
Параметр ''язык'' принимает [[Коды языков|код языка]] по [[ISO 639]]-1. Если параметр не задан, то время и дата выводятся на русском языке.
 
Из-за кэширования возможно различие между реальным временем и отображаемым. Для ручного обновления сохраните страницу, не делая никаких изменений, или перейдите по адресу <nowiki>http://ru.wikipedia.org/wiki/</nowiki>''Имя_страницы''?action=purge (подробнее см. [[Википедия:Кэш#Чистить/актуализировать кэш сервера]]).
 
Параметр ''формат'' подобен используемому в [[PHP]]-функции [http://ru2.php.net/date date()]:
 
{{очищать кэш}}
{| cellpadding="6" class="standard"
! Символ
! Описание
! Пример
! Текущее значение
|--------------
| d
| День месяца с нулём
| 04
| {{#time: d }}
|--------------
| D
| Краткое название дня недели
| Пн
| {{#time: D }}
|--------------
| j
| День месяца без нуля
| 4
| {{#time: j }}
|--------------
| l
| Полное название дня недели
| понедельник
| {{#time: l }}
|--------------
| N
| Номер дня недели [[ISO 8601]]
| 1 (понедельник) — 7 (воскресенье)
| {{#time: N }}
|--------------
| w
| Номер дня недели
| 0 (воскресенье) — 6 (суббота)
| {{#time: w }}
|--------------
| z
| Номер дня года (начиная с 0)
| 0—365
| {{#time: z }}
|--------------
| W
| Номер недели [[ISO 8601]]
|
| {{#time: W }}
|--------------
| F
| Полное название месяца в [[Именительный падеж|именительном падеже]]
| январь
| {{#time: F }}
|--------------
| xg
| Полное название месяца в [[Родительный падеж|родительном падеже]]
| января
| {{#time: xg }}
|--------------
| m
| Номер месяца с нулём
| 01—12
| {{#time: m }}
|--------------
| M
| Краткое название месяца
| сен
| {{#time: M }}
|--------------
| n
| Номер месяца без нуля
| 1—12
| {{#time: n }}
|--------------
| t
| Количество дней в месяце
| 28—31
| {{#time: t }}
|--------------
| L
| Проверка, является ли год високосным
| 1, если год високосный, иначе 0
| {{#time: L }}
|--------------
| Y
| Год с 4 цифрами
| 2006
| {{#time: Y }}
|--------------
| y
| Год с 2 цифрами
| 06
| {{#time: y }}
|--------------
| a
| am или pm
|
| {{#time: a }}
|--------------
| A
| AM или PM
|
| {{#time: A }}
|--------------
| g
| 12-часовой формат без 0
| 1—12
| {{#time: g }}
|--------------
| G
| 24-часовой формат без 0
| 0—23
| {{#time: G }}
|--------------
| h
| 12-часовой формат с 0
| 01—12
| {{#time: h }}
|--------------
| H
| 24-часовой формат c 0
| 00—23
| {{#time: H }}
|--------------
| i
| Минута с нулём
| 00—59
| {{#time: i }}
|--------------
| s
| Секунда с нулём
| 00—59
| {{#time: s }}
|--------------
| c
| [[ISO 8601]]
|
| {{#time: c }}
|--------------
| r
| [http://tools.ietf.org/html/2822 RFC 2822]
|
| {{#time: r }}
|--------------
| U
| [[UNIX-время]]
|
| {{#time: U }}
|}
Расширение PHP синтаксиса:
{| cellpadding="6" class="standard"
! Символ
! Описание
|--------------
| xn
| Выводит следующий числовой код в ASCII число. Например, на языке [[хинди]] <tt><nowiki>{{#time: «H, xnH» }}</nowiki></tt> выведет «०६, 06».
|--------------
| xr
| Выводит следующий числовой код [[Римские цифры|римскими цифрами]] (только для чисел <3000). Например, <tt><nowiki>{{#time: «Y, xrY» }}</nowiki></tt> выведет {{#time: «Y, xrY» }}.
|--------------
| xx
| Буква «x»
|}
Все другие символы будут выведены без изменений.
* Фраза, заключённая в двойные кавычки, будет выведена без изменений и кавычек. Незакрытые кавычки считаются символами.
** <tt><nowiki>{{#time: "Сегодня" l }}</nowiki></tt></tt> → {{#time: "Сегодня" l }}
** <tt><nowiki>{{#time: i's" }}</nowiki></tt> → {{#time: i's" }}
* Наклонная черта влево работает так же, как и в PHP-функции [http://ru2.php.net/date date()]. <tt>\H</tt> выводит <tt>H</tt>, <tt>\<nowiki>"</nowiki></tt> выводит <tt><nowiki>"</nowiki></tt>{{прояснить}}.
 
Формат параметра ''время'' идентичен используемому в PHP-функции [http://ru2.php.net/strtotime strtotime()]. Это могут быть абсолютные и относительные даты, например «December 11»<ref group=t>Русские даты типа «11 декабря» на данный момент не работают, если очень нужно их обработать, попробуйте шаблон {{tl|Date Converter}}.</ref> и/или «+10 hours», что может использоваться для перевода временных зон. Если вам нужно перевести в дату метку времени UNIX, поставьте перед ней <tt>@</tt>.
 
* <tt><nowiki>{{#time: j xg Y | -14 days }}</nowiki></tt> → {{#time: j xg Y | -14 days }} ''(14 дней назад)''
* <tt><nowiki>{{#time: H:i | +4 hours }}</nowiki></tt> → {{#time: H:i | +4 hours }} ''(UTC+4)''
* <tt><nowiki>{{#time: H:i | 8:15 +6 hours }}</nowiki></tt> → {{#time: H:i | 8:15 +6 hours }}
* <tt><nowiki>{{#time: r | @1483057398 }}</nowiki></tt> → {{#time: r | @1483057398 }}
Число римскими цифрами
* <tt><nowiki>{{#time: xrU | 1970-1-1 + 61 second}}</nowiki></tt> → {{#time: xrU | 1970-1-1 + 61 second}}
* <tt><nowiki>{{#time: xrU | @62}}</nowiki></tt> → {{#time: xrU | @62}}
 
==== Примечания ====
<div style="padding-left:1em;"><references group=t/></div>
 
=== #rel2abs ===
{{см. также|mw:Help:Extension:ParserFunctions/ru##rel2abs}}
Функция <tt>#rel2abs</tt> преобразует относительный путь ссылки в абсолютный.
 
<nowiki>{{</nowiki>#rel2abs: ''путь'' <nowiki>}}</nowiki>
<nowiki>{{</nowiki>#rel2abs: ''путь'' | ''базовый путь'' <nowiki>}}</nowiki>
 
Под относительным путём принимается такой, который начинается с символов <code>/</code>, <code>./</code> или <code>../</code>, а также пути <code>..</code> и <code>.</code>
* <code>.</code> — текущий уровень
* <code>..</code> — «перейти вверх на один уровень»
* <code>/foo</code> — «перейти вниз на один уровень в поддиректорию „foo“»
 
Если ''базовый путь'' не указан, будет использован текущий.
 
* <code><nowiki>{{#rel2abs: ../baz | Обсуждение:Foo/bar }}</nowiki></code> → {{#rel2abs: ../baz | Обсуждение:Foo/bar }}
* Если, находясь на странице «<nowiki>Обсуждение:Foo/bar</nowiki>», вызвать <code><nowiki>{{#rel2abs: ../baz }}</nowiki></code>, результат будет «{{#rel2abs: ../baz | Обсуждение:Foo/bar }}».
* Если, находясь на странице «<nowiki>Обсуждение:Foo</nowiki>», вызвать <code><nowiki>{{#rel2abs: ../baz }}</nowiki></code>, результат будет «{{#rel2abs: ../baz | Обсуждение:Foo }}».
* Если, находясь на странице «<nowiki>Обсуждение:Foo</nowiki>», вызвать <code><nowiki>{{#rel2abs: ../../baz }}</nowiki></code>, результат будет «{{#rel2abs: ../../baz | Обсуждение:Foo }}».
 
Чтобы не проверять, существует ли искомый путь, можно использовать эту функцию в комбинации с <code>#ifexist</code>:
: <code><nowiki>{{#ifexist: {{#rel2abs: .. }} | «..» существует | «..» не существует }}</nowiki></code>
 
Если путь, передаваемый функции в качестве параметра, не идентифицирован как относительный путь, функция вернёт в качестве результата его. Например:
: <code><nowiki>{{#rel2abs: Help:Help }}</nowiki></code> возвращает «{{#rel2abs: Help:Help }}».
 
=== #titleparts ===
{{см. также|mw:Help:Extension:ParserFunctions/ru##titleparts}}
Функция <tt>#titleparts</tt> возвращает подстроку до нужного слэша. Основной целью является возможность получения страниц всех уровней, для которых данная является подстраницей.
 
<nowiki>{{</nowiki>#titleparts: ''название страницы'' | ''количество сегментов'' | ''начиная с (по умолчанию 1)'' <nowiki>}}</nowiki>
 
В случае, когда ''количество сегментов'' равно нулю, больше количества уровней статьи или его невозможно преобразовать в число, возвращается ''название страницы'' целиком (или с сегмента ''начиная с'' до конца, если он указан). '''Внимание:''' всегда, когда возвращается первый сегмент строки, он начинается с Заглавной буквы.
: <code><nowiki>{{#titleparts:</nowiki> <span style="color: blue;">{{ns:1}}:Foo/bar/baz/quok</span> <nowiki>}}</nowiki></code> → '''{{#titleparts: {{ns:1}}:Foo/bar/baz/quok }}'''
: <code><nowiki>{{#titleparts:</nowiki> <span style="color: blue;">{{ns:1}}:Foo</span>/bar/baz/quok <nowiki>| 1 }}</nowiki></code> → '''{{#titleparts: {{ns:1}}:Foo/bar/baz/quok | 1 }}''' {{nbsp}}<small>См. также {{mwmw|ROOTPAGENAME}}.</small>
: <code><nowiki>{{#titleparts:</nowiki> <span style="color: blue;">{{ns:1}}:Foo/bar</span>/baz/quok <nowiki>| 2 }}</nowiki></code> → '''{{#titleparts: {{ns:1}}:Foo/bar/baz/quok | 2 }}'''
: <code><nowiki>{{#titleparts:</nowiki> {{ns:1}}:Foo/<span style="color: blue;">bar/baz</span>/quok <nowiki>| 2 | 2 }}</nowiki></code> → '''{{#titleparts: {{ns:1}}:Foo/bar/baz/quok | 2 | 2 }}'''
: <code><nowiki>{{#titleparts:</nowiki> {{ns:1}}:Foo/<span style="color: blue;">bar/baz/quok</span> <nowiki>| | 2 }}</nowiki></code> → '''{{#titleparts: {{ns:1}}:Foo/bar/baz/quok | | 2 }}'''
 
Можно указывать отрицательные значения параметров: для ''количества сегментов'' это обозначает исключение из результата ''количества сегментов'' последних частей (всех, если больше их количества), для ''начиная с'' обозначает начало вывода с −''начиная с'' сегмента справа.
: <code><nowiki>{{#titleparts:</nowiki> <span style="color: blue;">{{ns:1}}:Foo/bar/baz</span>/quok <nowiki>| -1 }}</nowiki></code> → '''{{#titleparts: {{ns:1}}:Foo/bar/baz/quok | -1 }}''' {{nbsp}}<small>Опускает один сегмент с конца строки. См. также {{mwmw|BASEPAGENAME}}.</small>
: <code><nowiki>{{#titleparts:</nowiki> {{ns:1}}:Foo/bar/baz/quok <nowiki>| -4 }}</nowiki></code> → '''{{#titleparts: {{ns:1}}:Foo/bar/baz/quok | -4 }} ''' <small>Опускает все 4 сегмента с конца строки.</small>
: <code><nowiki>{{#titleparts:</nowiki> {{ns:1}}:Foo/bar/baz/quok <nowiki>| -5 }}</nowiki></code> → '''{{#titleparts: {{ns:1}}:Foo/bar/baz/quok | -5 }} ''' <small>Опускает 5 сегментов с конца строки (больше, чем существует).</small>
: <code><nowiki>{{#titleparts:</nowiki> {{ns:1}}:Foo/bar/baz/<span style="color: blue;">quok</span> <nowiki>| | -1 }}</nowiki></code> → ''' {{#titleparts: {{ns:1}}:Foo/bar/baz/quok | | -1 }}''' {{nbsp}}<small>Возвращает последний сегмент. См. также {{mwmw|SUBPAGENAME}}.</small>
: <code><nowiki>{{#titleparts:</nowiki> {{ns:1}}:Foo/<span style="color: blue;">bar/baz</span>/quok <nowiki>| -1 | 2 }}</nowiki></code> → ''' {{#titleparts: {{ns:1}}:Foo/bar/baz/quok | -1 | 2 }}''' {{nbsp}}<small>Опускает последний сегмент с конца строки и возвращает второй сегмент и следующий.</small>
: <code><nowiki>{{#titleparts:</nowiki> {{ns:1}}:Foo/bar/<span style="color: blue;">baz</span>/quok <nowiki>| -1 | -2 }}</nowiki></code> → ''' {{#titleparts: {{ns:1}}:Foo/bar/baz/quok | -1 | -2 }}''' {{nbsp}}<small>Начинает копирование с второго сегмента с конца строки и опускает один сегмент с конца строки.</small>
 
----
* Если, находясь на странице «Участник: Foo/bar», вызвать <code><nowiki>{{#titleparts: {{FULLPAGENAME}} | 1 }}</nowiki></code>, результат будет «{{#titleparts: {{FULLPAGENAME:Участник: Foo/bar}} | 1 }}».
* Если, находясь на странице «Участник: Foo/bar», вызвать <code><nowiki>{{#titleparts: {{PAGENAME}} | 1 }}</nowiki></code>, результат будет «{{#titleparts: {{PAGENAME:Участник: Foo/bar}} | 1 }}».
 
Строки более 255 символов всегда возвращаются как переданы.
 
=== #iferror ===
{{см. также|mw:Help:Extension:ParserFunctions/ru##iferror}}
<nowiki>{{</nowiki>#iferror: ''выражение'' | ''ошибка'' | ''удачно'' <nowiki>}}</nowiki>
Возвращает ''ошибку'', если ''выражение'' содержит строку <tt><nowiki><strong class="error"></nowiki></tt>, которая генерируется функциями <tt>#expr</tt>, <tt>#ifexpr</tt>, <tt>#time</tt>, <tt>#rel2abs</tt> и в некоторых других ситуациях в MediaWiki (такими как глубокая рекурсия). Это самый удобный способ отлавливать неправильный ввод, который должен быть передан некоторым другим функциям парсера. Например:
 
* <tt><nowiki>{{#iferror: {{#expr: 1+1 }} | неверный ввод | правильное выражение }}</nowiki></tt> → <tt>{{#iferror: {{#expr: 1+1 }} | неверный ввод | правильное выражение }}</tt>
* <tt><nowiki>{{#iferror: {{#expr: 1+Z }} | неверный ввод | правильное выражение }}</nowiki></tt> → <tt>{{#iferror: {{#expr: 1+Z }} | неверный ввод | правильное выражение }}</tt>
 
Последние два параметра необязательны. Если параметр ''удачно'' опущен, тогда в случае удачи будет возвращено ''выражение''. Если параметр ''ошибка'' также опущен, тогда в случае ошибки не будет выведено ничего, а в случае удачного выполнения будет возвращено ''выражение''.
* <tt><nowiki>{{#iferror: {{#expr: 1+1 }} | неверный ввод}}</nowiki></tt> → <tt>{{#iferror: {{#expr: 1+1 }} | неверный ввод }}</tt>
* <tt><nowiki>{{#iferror: {{#expr: 1+Z }} | неверный ввод}}</nowiki></tt> → <tt>{{#iferror: {{#expr: 1+Z }} | неверный ввод }}</tt>
* <tt><nowiki>{{#iferror: {{#expr: 1+1 }} }}</nowiki></tt> → <tt>{{#iferror: {{#expr: 1+1 }} }}</tt>
* <tt><nowiki>{{#iferror: {{#expr: 1+Z }} }}</nowiki></tt> → <tt>{{#iferror: {{#expr: 1+Z }} }}</tt>
 
Таким образом:
* <tt><nowiki>{{#iferror:</nowiki> ''викитекст'' | ''альтернатива'' }}</tt> значит «вывести ''викитекст'', если он верный, иначе ''альтернативу''».
* <tt><nowiki>{{#iferror:</nowiki> ''викитекст'' }}</tt> значит «вывести ''викитекст'', если он верный».
 
: ''Примечание: эта функциональность замещает баг в старом препроцессоре, позволявший использовать #switch для отлова ошибок в выражениях.''
 
См. также: [[rev:29774|r29774]], [[rev:29775|r29775]], [[rev:29877|r29877]].
 
=== #lst ===
{{main|:en:Help:Labeled section transclusion}}
Если вы хотите включить часть страницы <tt>pagename</tt> в другую, то механизм включения отдельных секций позволяет более гибко включать содержимое одних страниц в другие, чем полное включение страниц при помощи <tt><nowiki>{{:pagename}}</nowiki></tt> и {{xtag|noinclude}}. На странице, содержимое которой планируется включить в другую, начало секции помечается {{xtag|section|single|params=begin=''label''}}, а конец секции помечается {{xtag|section|single|params=end=''label''}}. На странице, куда включается секция ставится <tt><nowiki>{{#lst:pagename|label}}</nowiki></tt>.
 
Данный механизм позволяет отметить на включаемой странице несколько секций, причём они могут перекрываться.
<!--== Установка ==
Скачайте указанные ниже файлы и установите их в новую директорию ''ParserFunctions'' в [[m:Mediawiki extensions|директории расширений MediaWiki]].
 
* [http://svn.wikimedia.org/svnroot/mediawiki/trunk/extensions/ParserFunctions/Expr.php Expr.php]
* [http://svn.wikimedia.org/svnroot/mediawiki/trunk/extensions/ParserFunctions/ParserFunctions.php ParserFunctions.php]
* [http://svn.wikimedia.org/svnroot/mediawiki/trunk/extensions/ParserFunctions/ParserFunctions.i18n.php ParserFunctions.i18n.php]
* [http://svn.wikimedia.org/svnroot/mediawiki/trunk/extensions/ParserFunctions/ParserFunctions.i18n.magic.php ParserFunctions.i18n.magic.php]
* [http://svn.wikimedia.org/svnroot/mediawiki/trunk/extensions/ParserFunctions/SprintfDateCompat.php SprintfDateCompat.php]
 
Если не установлен PHP5, то используйте следующие файлы:
* [http://svn.wikimedia.org/viewvc/mediawiki/trunk/extensions/ParserFunctions/Expr.php?revision=16633 Expr.php]
* [http://svn.wikimedia.org/viewvc/mediawiki/trunk/extensions/ParserFunctions/ParserFunctions.php?revision=16633 ParserFunctions.php]
 
Затем добавьте в конец файла [[m:LocalSettings.php|LocalSettings.php]] строку
 
require_once( "$IP/extensions/ParserFunctions/ParserFunctions.php" );
 
Если не работает или работает с ошибками, то исправьте на:
 
require_once( 'extensions/ParserFunctions/ParserFunctions.php' );-->
 
== См. также ==