Баг в парсере MediaWiki с символом «=» в неявно переданном порядковом параметре

Существует интересный баг в парсере CMS MediaWiki, что заключается в пропуске значения неявно переданного порядкового параметра символом "равно" (=). Он есть на офиц. баг-трекере. Что он собой представляет?

В шаблонах MediaWiki есть 2 типа параметров: именованные и порядковые (числовые). Если в значении неявно переданного числового параметра будет символ "=", то параметр этот будет отброшен. В явно переданных параметрах всё нормально, как в именованных, так и в числовых.

Примеры

Есть шаблон "quote":

<span>{{{1|{{{q|{{{text|}}}}}}}}}</span>{{#if:{{{2|{{{cite|{{{source|}}}}}}}}}|<cite>— {{{2|{{{cite|{{{source|}}}}}}}}}</cite>}}

Если вызвать его с неявной передачей числовых параметров так:

{{quote|some text|source from site.loc?id=5}}

2-ой пар-тр будет отброшен т.к. в нём встречается символ "=". Т.е. шаблоном будет возвращено только след.:

<span>some text</span>

URL в пример добавлен для того, чтобы было целесообразно использовать "=", а вообще URL ни при чём.

Однако, если вызвать этот шаблон с явной передачей 2-го проблемного параметра как числового вот так:

{{quote|some text|2=some source from site.loc?id=5}}

или как именованного:

{{quote|some text|cite=some source from site.loc?id=5}}

всё будет работать, как и задумывалось, т.е. шаблон вернёт это:

<span>some text</span><cite>— source from site.loc?id=5</cite>

Проблема со знаком "=" в параметрах шаблонов MediaWiki наблюдается только у неявно переданных порядковых аргументов, а у именованных такого нет, т.к. они всегда передаются явно.

Решение

Для решения проблемы можно:

  • Передавать порядковые параметры явно так же как и именованные.
  • Использ. всевозможные мнемоники символа "=" — &equals;, &#61;, U+003D.

Версии CMS, устранение

Баг был замечен в MediaWiki вер. 1.21.1, но он есть и в более стар. вер., и на более нов. вер. он никуда не пропал.