Изменения
fix, оптимизация
{{#if: {{#if: {{{2|}}}{{{3|}}}{{{4|}}}{{{5|}}}{{{nl|}}}{{{nolink|}}}{{{u|}}}{{{s|}}}{{{п|}}}{{{g|}}}{{{b|}}}{{{lang|}}}{{{sister|}}}{{{text|}}} | | {{#if: {{{1|}}} | {{#ifexpr: {{str len|{{{1}}}}} = 1 | | {{#ifeq: {{str left|{{{1}}}|1}} | : | | x }} }} | {{#ifexpr: {{str len|{{ROOTPAGENAME}}}} = 1 | | x }} }} }}
{{#if: {{#if: {{{2|}}}{{{3|}}}{{{4|}}}{{{5|}}}{{{nl|}}}{{{nolink|}}}{{{s|}}}{{{п|}}}{{{g|}}}{{{u|}}}{{{b|}}}{{{lang|}}}{{{sister|}}}{{{text|}}} | | {{#if: {{{1|}}} | {{#ifexpr: {{str len|{{{1}}}}} = 1 | | {{#ifeq: {{str left|{{{1}}}|1}} | : | | x }} }} | {{#ifexpr: {{str len|{{ROOTPAGENAME}}}} = 1 | {{#if: {{#titleparts: {{PAGENAME}} | 1 | 2 }} | | x }} | x }} }} }}
<!-- Оптимизируем выполнение, не вынуждая парсер проходить через катакомбы сложной обработки параметров,
<!-- Оптимизируем выполнение, не вынуждая парсер проходить через катакомбы сложной обработки параметров,
если шаблон вызван без дополнительных параметров -->
если шаблон вызван без дополнительных параметров и то, что дано, не требует особой обработки -->
| <span class="wp-templatelink">{{</span>{{#if: {{{1|}}} |
| <span class="wp-templatelink">{{</span>{{#if: {{{1|}}} |
{{#ifeq:
{{#ifeq:
{{FULLPAGENAME: Шаблон:{{{1}}} }} <!-- {{FULLPAGENAME:}} для преобразования «_» в « » и т. п., -->
{{FULLPAGENAME: Шаблон:{{{1}}} }} <!-- {{FULLPAGENAME:}} для преобразования «_» в « » и т. п., -->
| {{FULLPAGENAME}} <!-- а также решения проблемы с именами на «*», «;» и т. п. при вызове ucfirst -->
| {{FULLPAGENAME}} <!-- а также решения проблемы с именами на «*», «;» и т. п. при вызове ucfirst -->
| {{FULLPAGENAME: {{{1}}} }}
| <nowiki/><!-- фикс для имён на «*», «;» и т. п. -->{{{1}}}
| [[Шаблон:{{{1}}}|{{{1}}}]]
| [[Шаблон:{{{1}}}|{{{1}}}]]
}}
}}
Некоторые детали для понимания (части) логики:
Некоторые детали для понимания (части) логики:
• больше всего места занимает «прочесывание» параметров в поисках допустимых значений;
• больше всего места занимает «прочесывание» параметров в поисках допустимых значений;
• если шаблон вызывается без первого параметра, максимум ненумерованных параметров может быть 5, поэтому нужные значения (nl/nolink, u, s/п, b) ищутся во 2-5 параметрах;
• если шаблон вызывается без первого параметра, максимум ненумерованных параметров может быть 5, поэтому нужные значения (nl/nolink, s/п, u, b) ищутся во 2-5 параметрах;
• если шаблон вызывается с первым параметром, максимум ненумерованных параметров может быть 4, поэтому нужные значения (nl/nolink, s/п, g, b; но nl несовместимо с g) ищутся... все равно во 2-5 параметрах, мало ли;
• если шаблон вызывается с первым параметром, максимум ненумерованных параметров может быть 4, поэтому нужные значения (nl/nolink, s/п, g, b; но nl несовместимо с g) ищутся... все равно во 2-5 параметрах, мало ли;
• когда мы находимся в документации (Шаблон:Имя шаблона/doc), ссылка тоже показывается;
• когда мы находимся в документации (Шаблон:Имя шаблона/doc), ссылка тоже показывается;