Help:Extension:ParserFunctions/ru

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

#expr
Эта функция вычисляет математическое выражение и возвращает вычисленное значение. Эта функция также доступна в через функцию.



Basic example

Доступные операторы перечислены справа в порядке очередности. Дополнительные сведения о функции каждого оператора см. в Справка:Вычисления. Точность и формат возвращаемого результата будут варьироваться в зависимости от операционной системы сервера, на котором выполняется вики, и числового формата языка сайта.

При вычислении с помощью булева алгебры ноль вычисляется как, а любое не нулевое значение, положительное или отрицательное, вычисляется как  :

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



Порядок сложения и вычитания операндов до или после числа имеет смысл и может рассматриваться как положительное или отрицательное значение, а не как операнд с ошибочным вводом:



Обратите внимание, что при использовании вывода Волшебных слов, вы должны raw-форматировать их, чтобы удалить запятые и перевести цифры. Например, результаты в, когда мы хотим 0, которые можно получить с помощью. Это особенно важно в некоторых языках, где цифры переводятся. Например, в бенгальском языке производит ৩০,০৬১.



Округление
Округление число слева до кратного 1/10, возведенного в степень, с показателем степени, равным усеченному значению числа, заданного справа.

Для округления увеличением или уменьшением используйте унарные  или   соответственно.

Строки
Выражения работают только с числовыми значениями, они не могут сравнивать строки или символы. Вместо этого можно использовать.



#if
Функция определяет, является тестовая строка пустой или нет. Строка, содержащая только пробелы, считается пустой.





Эта функция сначала проверяет, не пуст ли первый параметр. Если первый параметр не пуст, то функция выводит второй аргумент. Если первый параметр пуст или содержит только пробельные символы (пробелы, новые строки и т. д.) он отображает третий аргумент.



Тестовая строка всегда интерпретируется как чистый текст, поэтому математические выражения не вычисляются (подробнее см. #ifexpr):



Последний параметр (ложь) может быть опущен:



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

Вы также можете использовать параметр в качестве тестовой строки в операторе. Вам нужно убедиться, что  (символ вертикальной черты) добавлен после имени переменной. (Таким образом, если параметр не имеет значения, он вычисляется в пустую строку вместо строки « ».)



Дополнительные примеры этой функции парсера см. в разделе.

#ifeq
Эта функция парсера сравнивает две входные строки, определяет, идентичны ли они, и возвращает одну из двух строк на основе результата. Если требуется больше сравнений и выходных строк, рассмотрите возможность использования.



Если обе строки являются допустимыми числовыми значениями, то строки сравниваются численно:



В противном случае сравнение производится как текст; это сравнение чувствительно к регистру:


 * →  (сравните с аналогичным примером выше, без кавычек)
 * →  (сравните с аналогичным примером выше, с , возвращающим сначала допустимое число)
 * →  (сравните с аналогичным примером выше, без кавычек)
 * →  (сравните с аналогичным примером выше, с , возвращающим сначала допустимое число)

В качестве практического примера рассмотрим существующий , использующий синтаксический анализатор для выбора между двумя стандартными временами, коротким и длинным. Он принимает параметр в качестве первого входного сигнала для сравнения со строкой «short» – но его проще читать, если параметр идет первым. Код шаблона определяется как:



и работает следующим образом:


 * → 20
 * → 40
 * → 40

#iferror
Эта функция принимает входную строку и возвращает один из двух результатов; функция возвращает значение, если входная строка содержит HTML-объект с  , генерируемый другими функциями синтаксического анализатора, такими как  ,   и  , шаблоны ошибки, такие как циклы и рекурсии, и другие «отказоустойчивые» ошибки парсера.



Одна или обе возвращаемые строки могут быть опущены. Если строка  опущена, то   возвращается, если она не ошибочна. Если строка  также опущена, то при ошибке возвращается пустая строка:


 * → &zwnj;
 * → &zwnj;
 * → &zwnj;
 * → &zwnj;
 * → &zwnj;
 * → &zwnj;

Some errors may cause a tracking category to be added, using  will not suppress the addition of the category.

#ifexpr
Эта функция вычисляет математическое выражение и возвращает одну из двух строк в зависимости от логического значения результата:



Входные данные  вычисляются точно так же, как и для   выше, причем доступны те же операторы. Выходные данные затем вычисляются как логическое выражение.

Пустое входное выражение принимает значение :



Как упоминалось выше, нулевое значение равно, а любое не нулевое значение равно , поэтому эта функция эквивалентна функциям  и  , использующихся одновременно:



за исключением пустого или неправильного входного выражения (сообщение об ошибке обрабатывается как пустая строка; оно не равно нулю, поэтому мы получаем ).



сравнение



Одно или оба возвращаемых значения могут быть опущены; если соответствующая ветвь оставлена пустой, выходные данные не выводятся.:



Boolean operators of equality or inequality operators are supported.



#ifexist
Эта функция принимает входную строку, интерпретирует ее как заголовок страницы и возвращает одно из двух значений в зависимости от того, существует ли страница в локальной Вики.



Функция принимает значение, если страница существует, независимо от того, содержит ли она содержимое, является ли она явно пустой (содержит метаданные, такие как ссылки на категории или , но не содержит видимого содержимого), является пустой или является. Только страницы, имеющие красные ссылки, оцениваются как, в том числе если страница существовала, но была удалена.



Функция возвращает значение  для, которые были настроены, и для , которые определены программным обеспечением.



Если страница проверяет цель с помощью, то эта страница появится в списке  для целевой страницы. Поэтому, если код  был включен на этой странице, /Foo будет содержать.

В вики, использующих общий медиа-репозиторий,  можно использовать для проверки, был ли файл загружен в репозиторий, но не в саму Вики:



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

не работает с интервики-ссылками.



ограничения #ifexist
считается «дорогой функцией парсера»; только ограниченное число может быть включено на каждой отдельной странице (включая функции внутри трансклюзованных шаблонов). При превышении этого предела любые дополнительные функции автоматически возвращают Ложь, независимо от того, существует ли целевая страница или нет, и страница классифицируется в Category:. Название может варьироваться в зависимости от языка содержимого Вики.

В некоторых случаях можно эмулировать эффект #ifexist с помощью css, используя селекторы  (для выбора ссылок на несуществующие страницы) или   (для выбора ссылок на существующие страницы). Кроме того, поскольку количество данных функций парсера, которые могут быть использованы на одной странице, контролируется, можно также увеличить лимит в LocalSettings.php, если нужно.



#ifexist и требуемые страницы
Страница, которая не существует и проверена на использование #ifexist, будет в конечном итоге в списке Требуемых страниц. Смотри причину в, а для обходного пути w:Template:Linkless exists.

#rel2abs
Эта функция преобразует относительный путь к файлу в абсолютный путь к файлу.



Во входных данных  допустим следующий синтаксис:


 * → текущий уровень
 * → подняться на один уровень вверх
 * → опустится на один уровень вниз в подкаталог /foo

Если  не указан, вместо него будет использоваться полное имя страницы:



Недопустимый синтаксис, например  или , игнорируются. Поскольку допускается не более двух последовательных полных остановок, такие последовательности могут использоваться для разделения последовательных операторов:



О схожей группе функций см. также Помощь:Волшебные слова#Получение фрагментов URL. Встроенные функции Парсера включают: 'localurl:', 'fullurl:', 'anchorencode:' и т.д.

#switch
''См. также: w:Help:Switch parser function''

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

Примеры:




 * 1) switch с тегами частичной трансклюзии может создавать конфигурационный файл, который позволяет редактору, незнакомому с шаблонным кодированием, просматривать и редактировать настраиваемые элементы.

По умолчанию
возвращается, если строка  не совпадает с



В этом синтаксисе результат по умолчанию должен быть последним параметром и не должен содержать обычный (необработанный) знак равенства (знак равенства без ). Если это так, он будет рассматриваться как сравнение случаев, и текст не будет отображаться, если ни один случай не совпадает. Это потому, что значение по умолчанию не было определено (является пустым). Однако, если регистр совпадает, будет возвращена связанная с ним строка.



Кроме того, результат по умолчанию может быть явно объявлен с  строкой « ».

Результаты по умолчанию, объявленные таким образом, могут быть размещены в любом месте функции:



Если параметр  опущен и не выполняется сопоставление, то   не возвращается:





Группировка результатов
Возможен «провал» значения, где  строки возвращают одинаковые   строки. Это сводит к минимуму дублирование.

Здесь случаи 2, 3 и 4 возвращают ; случаи 6 и 7 оба возвращают. « » в последнем параметре может быть опущено в вышеупомянутом случае.



Использование с параметрами
Функция может использоваться с параметрами в виде тестовой строки. В этом случае нет необходимости помещать вертикальную черту после имени параметра, потому что очень маловероятно, что вы выберете регистр для строки « ». (Это значение, которое параметр будет использовать по умолчанию, если черта отсутствует, а параметр не существует или не имеет значения. См. )



В приведенном выше случае, если  равен , функция вернет. Если оно равно, функция вернет. Если параметр пуст или не существует, функция вернет.

Как и в предыдущем разделе, кейсы можно комбинировать для получения единого результата.



Здесь, если  равен ,   или  , функция вернет. Если оно равно, функция вернет. Если параметр пуст или не существует, функция вернет.

Кроме того, результат по умолчанию может быть опущен, если вы не хотите ничего возвращать, если значение параметра теста не соответствует ни одному из вариантов.



В этом случае функция возвращает пустую строку, если   не существует и не равен   или , и в этом случае она возвращает   или   соответственно.

Это имеет тот же эффект, что и объявление результата по умолчанию как пустого.



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


 * (когда  не существует или пуст):
 * →  Foo 
 * (когда  имеет значение « »):
 * →  Bar 
 * (когда  имеет значение « »):
 * →  Foo 

В этом гипотетическом случае к параметру надо будет добавить вертикальную черту.



Поведение сравнения
Как и в случае с, сравнение производится численно, если и строка сравнения, и проверяемая строка регистра являются числовыми; или как чувствительная к регистру строка в противном случае:





Строка  может быть пустой:



Как только совпадение найдено, последующие  игнорируются:





Необработанные знаки равенства
Строки «Случай» не могут содержать необработанные знаки равенства. Чтобы обойти это, используйте магическое слово = или замените знак равенства HTML-кодом.

Пример:



Замена #ifeq
не может быть использован, чтобы уменьшить глубину расширения.

Например:



эквивалентно



т.е. глубокая вложенность, линейная:

С другой стороны, замена переключателя может быть сложной/непрактичной для #if, вложенных в обе ветви (показано с альтернативами отступа, отступами с обеих сторон), что делает полное симметричное дерево:

#time
Эта функция парсера берет дату и/или время (по Григорианскому календарю) и форматирует ее в соответствии с заданным синтаксисом. Можно задать объект даты/времени; для этого, по умолчанию используется значение волшебного слова  – то есть время, когда страница была в последний раз отображена в HTML.



Список принятых кодов форматирования приведен в таблице справа. Любой не распознаваемый символ в строке форматирования передается как неизменённый; это относится также к пустым местам (система не нуждается в них для интерпретации кодов). Существует также два способа экранирования символов в строке форматирования:


 * 1) Обратная косая черта, за которой следует символ форматирования, интерпретируется как один литеральный символ
 * 2) Символы, заключенные в двойные кавычки, считаются литеральными символами, и кавычки удаляются.

Кроме того, орграф  интерпретируется как один литерал x.

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

К сожалению, сейчас одинарная кавычка ASCII все ещё не поддерживается в качестве простой альтернативы для экранирования текста, для этого следует использовать двойные кавычки-лапки (например, двойные кавычки используются в других целях вроде разделения строковых значений в JSON, C, C++...) и обратную косую черту (которая в свою очередь часто должна экранироваться в строковых константах во многих языках программирования и разметки, включая JSON, C, C++, PHP, JavaScript и Lua). Поэтому нельзя встраивать парные двойные кавычки без экранирования их обратной косой чертой (но можно использовать другие символы кавычек).



может иметь любой формат, принятый функцией PHP strtotime. Допустимы, абсолютное (например ), относительное (например  ), и комбинированное время (например  ).


 * &rarr; 
 * &rarr; 
 * &rarr; 
 * &rarr; 
 * &rarr; 
 * &rarr; 
 * &rarr; 

в ISO 639-3 позволяет отображать строку на выбранном языке



Параметр  указывает, относится ли «объект даты / времени» к местному часовому поясу или к UTC.

Это логические параметры: его значение определяется преобразованием значения аргумента (подробности о том, как преобразовать строку в логические значения, см. В official PHP documentation).

См. подробности в следующих примерах:





Если вы рассчитали временную метку Unix, вы можете использовать ее при вычислении даты, предварительно поставив символ.



Могут указываться как частичные, так и полные абсолютные даты; функция будет «заполнять» неуказанные части даты с использованием текущих значений:



Четырёхзначное число всегда интерпретируется как год, и никогда как часы и минуты:



Шестизначные числа пытаются интерпретироваться как часы, минуты и секунды, а если значения некорректны, то возвращается ошибка (не предусмотрена интерпретация, например, как года и месяца):


 * →  Входная строка рассматривается как время, а не как год+месяц.
 * →  Несмотря на то, что не может быть времени 19:60:09, 196009 не рассматривается как сентябрь 1960.

Функция может выполнять некоторые математические преобразования над датами:



Общая длина форматной строки для вызовов функции  ограничена 6000 символами.



Вопрос часового пояса
В функции #time parser существует ошибка(более конкретно в PHP DateTime), которая не позволяет передавать нецелые числа в качестве относительных смещений часовых поясов. Эта проблема не касается использования часового пояса, например EDT. Например:


 * &rarr;

Однако, Индия находится на смещении времени +5,5 часа от UTC, и поэтому использование ее часового пояса обычно не позволяет правильно рассчитать относительное смещение часового пояса. Вот что происходит:


 * &rarr;

Чтобы обойти эту проблему, просто преобразуйте время в минуты или секунды, например:


 * &rarr;
 * &rarr;

(Тим Старлинг, разработчик этой функции, предоставил точный синтаксис для его решения.)

#timel
Эта функция полностью идентична функции  в том случае, если параметр   настроен как. При этом всегда используется местное время, установленное в вашей вики при настройке.

Синтаксис функции следующий:





Например, смотрите следующие образцы:





#titleparts
Эта функция разделяет заголовок страницы на сегменты, разделённые слэшем («/»), и затем на выходе возвращает некоторые из этих сегментов.



Если параметр количество выводимых сегментов не определён, он принимается равным нулю («0»), и выводятся все сегменты, начиная с номера первого выводимого сегмента (включительно). Если номер первого выводимого сегмента не определён или равен «0», то он принимает значение по умолчанию «1»:


 * →  See also.
 * →  See also.

Negative values are accepted for both values. Negative values for the number of segments to return parameter effectively 'strips' segments from the end of the string. Negative values for the first segment to return translates to "start with this segment counting from the right":


 * →  Отделяет один сегмент с конца строки. См. также.
 * →   Отделяет все 4 сегмента с конца строки.
 * →   Отделяет 5 сегментов с конца строки (больше, чем существует).
 * →   Возвращает последний сегмент. См. также.
 * →   Отделяет один сегмент с конца строки и возвращает значение со второго сегмента.
 * →   Начинает копирование со второго с конца элемента, обрезает один сегмент с конца строки.

Before processing, the pagename parameter is HTML-decoded: if it contains some standard HTML character entities, they will be converted to plain characters (internally encoded with UTF-8, i.e. the same encoding as in the MediaWiki source page using this parser function).


 * For example, any occurrence of,  , or   in pagename will be replaced by.
 * No other conversion from HTML to plain text is performed, so HTML tags are left intact at this initial step even if they are invalid in page titles.

Then the decoded pagename is canonicalized into a standard page title supported by MediaWiki, as much as possible:


 * 1) All underscores are automatically replaced with spaces:
 * →  Not bah_boo, despite the underscore in the original.
 * 1) The string is split a maximum of 25 times; further slashes are ignored and the 25th element will contain the rest of the string. Длина строки также ограничена 255 символами, так как она рассматривается как заголовок страницы:
 * Если по какой-либо причине вам нужно было довести эту функцию до ее предела, хотя это маловероятно, можно обойти ограничение в 25 разбиений, вложив вызовы функций:
 * 1) Наконец, первая подстрока пишется с заглавной буквы в соответствии с настройками заглавных букв локальной вики (если эта подстрока также начинается с имени локального пространства имен, это имя пространства имен также нормализуется).
 * 1) Наконец, первая подстрока пишется с заглавной буквы в соответствии с настройками заглавных букв локальной вики (если эта подстрока также начинается с имени локального пространства имен, это имя пространства имен также нормализуется).
 * 1) Наконец, первая подстрока пишется с заглавной буквы в соответствии с настройками заглавных букв локальной вики (если эта подстрока также начинается с имени локального пространства имен, это имя пространства имен также нормализуется).

{{Warning|1= Certain characters that are illegal in a page title will cause #titleparts to not parse the string:


 * → {{#titleparts: {one/two} | 1 | 1 }}. Does not produce the expected: {one
 * → {{#titleparts: page/123 | 1 | 2 }}. Does not work because brackets are illegal in page titles and this parser function does not process links embedded in its input pagename parameter, even when they use the MediaWiki syntax, or any other HTML or MediaWiki tags.
 * → "{{#titleparts: red/#00FF00/blue| 1 | 3 }}". Does not work because "#" is also illegal in page titles.

}}

Строковые функции
Все эти функции были перенесены в ParserFunctions из расширения StringFunctions. Но они будут доступны только в том случае, если администратор настроит  в файле.

Все эти функции работают в O(n) time complexity, что делает их безопасными от DoS-атак.

#len
Функция #len возвращает длину заданной строки. Её синтаксис имеет следующий вид:

Возвращаемое значение всегда представляет собой количество символов в исходной строке string (после раскрытия вызовов шаблонов, но перед преобразованием в HTML). Если строка пуста (в ней нет ни одного символа), то возвращаемое значение равно нулю.

#pos
Функция #pos возвращает позицию искомой подстроки в строке. Её синтаксис имеет следующий вид:

Параметр offset (если он указан) определяет начальную позицию, с которой эта функция должна начать поиск.

Если подстрока найдена, возвращаемое значение представляет собой целое число, обозначающее первую позицию подстроки внутри string. Счёт при этом начинается с нуля.

Если подстрока не найдена, функция возвращает пустую строку.

#rpos
Функция #rpos возвращает последнюю позицию подстроки в строке. Её синтаксис имеет следующий вид:

Если подстрока найдена, возвращаемое значение представляет собой целое число, обозначающее её последнюю позицию в строке string. При этом отсчёт символов идёт начиная с нуля.

Если подстрока не найдена, функция возвращает значение -1.

#sub
Функция #sub возвращает подстроку из заданной строки string. Её синтаксис имеет следующий вид:

Параметр start, если он положительный или равен нулю, указывает отсчитываемый от нуля (с начала строки string) индекс первого возвращаемого символа.

Пример: возвращает значение.

возвращает значение.

Если параметр start отрицательный, он указывает, сколько символов должно быть возвращено начиная с конца строки string.

Пример: возвращает значение.

Параметр length, если он указан и является положительным, указывает максимальную длину возвращаемой подстроки.

Пример: возвращает.

Если параметр length отрицательный, он указывает, сколько символов будет пропущено в конце строки.

Пример: возвращает.

Если параметр start отрицательный, он указывает, сколько символов от конца строки должно быть возвращено. Параметр length, если он указан и является положительным, указывает максимальную длину возвращаемой строки от начальной точки отсчёта.

Пример: возвращает.

#count
Функция #count возвращает количество появлений заданной подстроки в заданном тексте.

#replace
Функция #replace возвращает заданную строку, в которой все вхождения поискового термина заменены на термин-заменитель.

Если search term не указан или пуст, будет выполняться поиск и замена единичного пробела.

Если replacement term не указан или пуст, все вхождения search term будут удалены из строки string.

Сейчас синтаксис не предоставляет переключатель для переключения настройки чувствительности к регистру. Но вы можете использовать magic words of formatting как обходной путь (например ) Например, если вы хотите удалить слово «Category:» из строки независимо от его регистра, вы можете ввести:
 * Регистронезависимая замена:

Но недостатком является то, что на выходе всё будет в нижнем регистре. Если вы хотите сохранить регистр после замены, вы должны использовать несколько уровней вложенности (т. е. вызовы множественной замены), чтобы добиться того же.

#explode
Функция #explode разбивает входную строку на части, а затем возвращает одну из этих частей. Её синтаксис имеет следующий вид:

Параметр delimiter указывает строку или символ, который будет использован для разделения string на части. Строка или символ delimiter при этом не включены в получаемые части, и когда две строки delimiter находятся рядом одна с другой, они образуют пустую часть между ними. Если этот параметр не указан, используется единичный пробел. Параметр limit доступен только в ParserFunctions и отсутствует в отдельных версиях StringFunctions. Он позволяет ограничить количество возвращаемых частей. При этом весь оставшийся текст включается в последнюю часть.

Параметр position указывает, какая часть должна быть возвращена. Отсчёт частей начинается с 0. Если этот параметр не указан, используется первая часть (часть с номером 0). Когда в position указано отрицательное значение, отсчёт частей происходит с конца. В этом случае цифра -1 означает последнюю часть. Примеры:


 * возвращает
 * возвращает
 * возвращает
 * возвращает

Возвращаемое значение - это часть по указанной её позиции в ряду частей. Если частей меньше, чем указано в position, возвращается пустая строка.

#urldecode
преобразует escape-символы из строки 'URL encoded' обратно в читаемый текст. Синтаксис:

Замечания:
 * Эта функция работает путем прямого доступа к функции PHP urldecode.
 * Ссылку на код символа можно найти на сайте «www.w3schools.com».
 * Напротив, функция  была интегрирована в MediaWiki начиная с версии 1.18; примеры см. в разделе.
 * Функция urldecode была интегрирована в ParserFunctions из Stringfunctions в 2010 году путём фиксации 1b75afd18d3695bdb6ffbfccd0e4aec064785363.

Ограничения
Этот модуль определяет три глобальных настройки:


 * $wgStringFunctionsLimitSearch
 * $wgStringFunctionsLimitReplace
 * $wgStringFunctionsLimitPad

Они используются для ограничения ряда параметров некоторых функций, чтобы гарантировать, что функции работают в O(n) time complexity, и, следовательно, защищены от DoS-атак.

$wgStringFunctionsLimitSearch
Этот параметр используется для #pos, #rpos, #replace и #explode. Все эти функции ищут подстроку в более крупной строке и могут выполняться за O(n*m), что, следовательно, делает программное обеспечение более уязвимым для DoS-атак. Но установка значения этого параметра в виде определенного небольшого числа приводит к уменьшению time complexity до O(n).

Этот параметр ограничивает максимально допустимую длину искомой строки.

Значение по умолчанию — 30 мультибайтовых символов.

$wgStringFunctionsLimitReplace
Этот параметр используется #replace. Эта функция заменяет все вхождения подстроки в одной строке на другие, что может быть использовано для быстрого создания очень больших объемов данных и, следовательно, делает программное обеспечение более уязвимым для DoS-атак. Этот параметр ограничивает максимально допустимую длину заменяющей строки.

Значение по умолчанию — 30 мультибайтовых символов.



Подстановка
Функции парсера можно подставить с помощью префикса  перед символом решетки:


 * → код   будет вставлен как викитекст, поскольку страница уже существует.

Подстановка не работает внутри ; для этой цели вы можете использовать &hellip;.

Перенаправления
Особенно   может быть полезен в  для страниц, содержащих даты, но это не всегда работает.



Экранирование символа &#124; в таблицах
Функции парсера искажают синтаксис и символы вертикальной черты, рассматривая все необработанные символы вертикальной черты как разделители параметров. Чтобы избежать этого, большинство вики использовали шаблон    :! с содержимым, состоящим только из необработанного символа вертикальной черты, начиная с MW 1.24  заменило этот костыль. Это "скрывает" вертикальные черты от синтаксического анализатора MediaWiki, гарантируя, что он не будет рассматриваться до тех пор, пока все шаблоны и переменные на странице не будут развернуты. Затем он будет интерпретироваться как разделитель строк или столбцов таблицы. В качестве альтернативы можно использовать необработанный синтаксис таблицы HTML, хотя это менее интуитивно понятно и более подвержено ошибкам.

Вы также можете экранировать символ вертикальной черты для отображения в виде простого неинтерпретируемого символа, используя объект HTML:.



Зачистка пробелов
Пробелы, включая новые строки, табуляции и пробелы, удаляются из начала и конца всех параметров функций парсера. Если это нежелательно, то сравнение строк может быть сделано после того, как они будут заключены в кавычки.



Чтобы предотвратить обрезку деталей then и else, см. раздел m:Template:If. Некоторые люди достигают этого с помощью &lt; &gt;  &lt; /nowiki &gt; вместо пробелов


 * → foofoo
 * → foofoo

Однако, этот метод можно использовать только для отображения одного символа пробела, так как синтаксический анализатор сжимает несколько символов пробела в строке в один.




 * || → || foofoo 
 * }

Например,  используется для принудительного сохранения белого пространства браузером, но даже при этом пробелы не отображаются. Это происходит потому, что пробелы очищаются программным обеспечением, прежде чем быть отправленными в браузер.

Можно обойти это поведение, заменив пробелы на  (breakable space) или   (non-breakable space), поскольку они не изменяются программным обеспечением:


 * →  foofoo 
 * → foofoo

Beware that not all parameters are created equal. In ParserFunctions, whitespace at the beginning and end is always stripped. In, whitespace at the beginning and end is stripped for named parameters and named unnamed parameters but not from unnamed parameters:


 * → foofoo
 * → foofoo
 * → foofoo



См. также

 * m:Help:Calculation
 * m:Help:Newlines and spaces
 * m:Help:Comparison between ParserFunctions syntax and TeX syntax
 * , an (incomplete) list of parser functions added by core and extensions.
 * Module:String или устаревшее
 * Parser functions for Wikibase (the extensions that enables Wikidata): d:Wikidata:How to use data on Wikimedia projects#Parser function
 * Module:String или устаревшее
 * Parser functions for Wikibase (the extensions that enables Wikidata): d:Wikidata:How to use data on Wikimedia projects#Parser function
 * Parser functions for Wikibase (the extensions that enables Wikidata): d:Wikidata:How to use data on Wikimedia projects#Parser function