Шаблон:Tl: различия между версиями

Материал из Юридический факультет МГУ
Перейти к навигации Перейти к поиску
[[:ru:]]>Jack who built the house
(+флаг nav; возможность использовать флаги как булевы значения удалена для оптимизации, надеюсь, никто не использовал)
м (52 версии импортировано)
 
(не показано 16 промежуточных версий 3 участников)
Строка 1: Строка 1:
{{#if: {{#if: {{{3|}}}{{{4|}}}{{{5|}}}{{{lang|}}}{{{sister|}}}{{{text|}}} | | {{#ifeq: {{{2|nav}}} | nav | {{#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 }} }} | }} }}
+
{{{{{|safesubst:}}}#invoke: Template call code | withoutParams }}<noinclude>{{doc}}</noinclude>
                <!-- Оптимизируем выполнение, не вынуждая парсер проходить через катакомбы сложной обработки параметров,
 
                    если шаблон вызван без дополнительных параметров и то, что дано, не требует особой обработки -->
 
| {{#if: {{{1|}}} |
 
    {{#ifeq:
 
      {{FULLPAGENAME: Шаблон:{{{1}}} }} <!-- {{FULLPAGENAME:}} для преобразования «_» в « » и т. п., -->
 
    | {{FULLPAGENAME}}                  <!-- а также решения проблемы с именами на «*», «;» и т. п. при вызове ucfirst -->
 
    | {{#ifeq: {{{2|}}} | nav | ''' }}<span class="wp-templatelink">&#123;&#123;</span>{{{1}}}<span class="wp-templatelink">&#125;&#125;</span> {{#ifeq: {{{2|}}} | nav | ''' }}
 
    | <span class="wp-templatelink">&#123;&#123;</span>[[Шаблон:{{{1}}}|{{{1}}}]]<span class="wp-templatelink">&#125;&#125;</span>
 
    }}
 
  | <span class="wp-templatelink">&#123;&#123;</span>{{#if: {{#titleparts: {{PAGENAME}} | 1 | 2 }}
 
    | [[Шаблон:{{ROOTPAGENAME}}|{{lcfirst: {{ROOTPAGENAME}} }}]]
 
    | {{lcfirst: {{ROOTPAGENAME}} }}
 
    }}<span class="wp-templatelink">&#125;&#125;</span>
 
  }}
 
| {{#if: {{{1|}}}
 
                <!-- С первым параметром -->
 
  | {{#if:      <!-- Показывать ли ссылку -->
 
      {{#if: {{#switch:{{{2|}}}|nl=x|nolink=x|{{#switch:{{{3|}}}|nl=x|nolink=x|{{#switch:{{{4|}}}|nl=x|nolink=x|{{#switch:{{{5|}}}|nl=x|nolink=x|}}}}}}}}
 
      | x
 
      | {{#if: {{{lang|}}}
 
      |
 
        | {{#if: {{{sister|}}}
 
          |
 
          | {{#ifeq:
 
              {{#if: {{#ifeq:{{{2|}}}|g|x|{{#ifeq:{{{3|}}}|g|x|{{#ifeq:{{{4|}}}|g|x|{{#ifeq:{{{5|}}}|g|x|{{#ifeq: {{str left|{{{1}}}|1}} | : | x | }}}}}}}}}}
 
              | {{FULLPAGENAME: {{{1}}} }}    <!-- ←↙ Что сравниваем -->
 
              | {{FULLPAGENAME: Шаблон:{{{1}}} }} <!-- {{FULLPAGENAME:}} для преобразования «_» в « » и т. п., -->
 
              }}                                  <!-- а также решения проблемы с именами на «*», «;» и т. п. при вызове ucfirst -->
 
            | {{FULLPAGENAME}}                    <!-- С чем сравниваем -->
 
            | x
 
            |
 
            }}
 
          }}
 
        }}
 
      }}
 
    | {{#if: {{#ifeq:{{{2|}}}|nav|x|{{#ifeq:{{{3|}}}|nav|x|{{#ifeq:{{{4|}}}|nav|x|{{#ifeq:{{{5|}}}|nav|x|}}}}}}}} | ''' }}<span {{#if: {{#ifeq:{{{2|}}}|b|x|{{#ifeq:{{{3|}}}|b|x|{{#ifeq:{{{4|}}}|b|x|{{#ifeq:{{{5|}}}|b|x|}}}}}}}} | | class="wp-templatelink" }}>&#123;&#123;{{#if: {{#ifeq:{{{2|}}}|s|x|{{#ifeq:{{{3|}}}|s|x|{{#ifeq:{{{4|}}}|s|x|{{#ifeq:{{{5|}}}|s|x|}}}}}}}} | subst: | {{#if: {{#ifeq:{{{2|}}}|п|x|{{#ifeq:{{{3|}}}|п|x|{{#ifeq:{{{4|}}}|п|x|{{#ifeq:{{{5|}}}|п|x|}}}}}}}} | подст: | }} }}</span>{{{text|{{{1}}}}}}<span {{#if: {{#ifeq:{{{2|}}}|b|x|{{#ifeq:{{{3|}}}|b|x|{{#ifeq:{{{4|}}}|b|x|{{#ifeq:{{{5|}}}|b|x|}}}}}}}} | | class="wp-templatelink" }}>&#125;&#125;</span>{{#if: {{#ifeq:{{{2|}}}|nav|x|{{#ifeq:{{{3|}}}|nav|x|{{#ifeq:{{{4|}}}|nav|x|{{#ifeq:{{{5|}}}|nav|x|}}}}}}}} | ''' }}
 
    | {{#if:
 
        {{#ifexpr: {{str len|{{{text|{{{1}}}}}}}} != 1
 
        | x
 
        | {{#switch:{{{2|}}}|s=x|п=x|b=x|{{#switch:{{{3|}}}|s=x|п=x|b=x|{{#switch:{{{4|}}}|s=x|п=x|b=x|{{#switch:{{{5|}}}|s=x|п=x|b=x|{{{s|{{{п|}}}}}}}}}}}}}}
 
        }}      <!-- Забирать ли в ссылку соседние фигурные скобки -->
 
      | <span {{#if: {{#ifeq:{{{2|}}}|b|x|{{#ifeq:{{{3|}}}|b|x|{{#ifeq:{{{4|}}}|b|x|{{#ifeq:{{{5|}}}|b|x|}}}}}}}} | | class="wp-templatelink" }}>&#123;&#123;{{#if: {{#ifeq:{{{2|}}}|s|x|{{#ifeq:{{{3|}}}|s|x|{{#ifeq:{{{4|}}}|s|x|{{#ifeq:{{{5|}}}|s|x|}}}}}}}} | subst: | {{#if: {{#ifeq:{{{2|}}}|п|x|{{#ifeq:{{{3|}}}|п|x|{{#ifeq:{{{4|}}}|п|x|{{#ifeq:{{{5|}}}|п|x|}}}}}}}} | подст: | }} }}</span>[[:{{#if: {{#ifeq:{{{2|}}}|g|x|{{#ifeq:{{{3|}}}|g|x|{{#ifeq:{{{4|}}}|g|x|{{#ifeq:{{{5|}}}|g|x|{{#ifeq: {{str left|{{{1}}}|1}} | : | x | }}}}}}}}}} | {{FULLPAGENAME: {{#if: {{{lang|}}} | {{{lang}}}: | }}{{#if: {{{sister|}}} | {{{sister}}}: | }}{{{1}}} }} | {{#if: {{{lang|}}} | {{{lang}}}: | }}{{#if: {{{sister|}}} | {{{sister}}}: | }}Template:{{{1}}} }}|{{{text|{{{1}}}}}}]]<span {{#if: {{#ifeq:{{{2|}}}|b|x|{{#ifeq:{{{3|}}}|b|x|{{#ifeq:{{{4|}}}|b|x|{{#ifeq:{{{5|}}}|b|x|}}}}}}}} | | class="wp-templatelink" }}>&#125;&#125;</span>
 
                <!-- {{{lang}}} и {{{sister}}} появляются не в начале, а с FULLPAGENAME,
 
                    чтобы FULLPAGENAME не менял название пространств имён для других разделов/проектов -->
 
      | <span {{#if: {{#ifeq:{{{2|}}}|b|x|{{#ifeq:{{{3|}}}|b|x|{{#ifeq:{{{4|}}}|b|x|{{#ifeq:{{{5|}}}|b|x|}}}}}}}} | | class="wp-templatelink" }}>&#123;</span>[[:{{#ifeq: {{{1}}} | : | <!-- «:» как ссылка на другие разделы работает, а не должно (в случае шаблонов) --> | {{#if: {{{lang|}}} | {{{lang}}}: | }}{{#if: {{{sister|}}} | {{{sister|}}}: | }}}}{{#if: {{#ifeq:{{{2|}}}|g|x|{{#ifeq:{{{3|}}}|g|x|{{#ifeq:{{{4|}}}|g|x|{{#ifeq:{{{5|}}}|g|x|{{#ifeq: {{str left|{{{1}}}|1}} | : | x | }}}}}}}}}} | {{FULLPAGENAME: {{{1}}} }} | Template:{{{1}}} }}|<span class="wp-templatelink">&#123;</span>{{{text|{{{1}}}}}}<span class="wp-templatelink">&#125;</span>]]<span class="wp-templatelink">&#125;</span>
 
      }}
 
    }}
 
  | {{#if:      <!-- Без первого параметра. Показывать ли ссылку -->
 
      {{#if: {{#switch:{{{2|}}}|nl=x|nolink=x|{{#switch:{{{3|}}}|nl=x|nolink=x|{{#switch:{{{4|}}}|nl=x|nolink=x|{{#switch:{{{5|}}}|nl=x|nolink=x|}}}}}}}}
 
      | x
 
      | {{#if: {{#titleparts: {{PAGENAME}} | 1 | 2 }}
 
        |
 
        | x
 
        }}
 
      }}
 
    | {{#if: {{#ifeq:{{{2|}}}|nav|x|{{#ifeq:{{{3|}}}|nav|x|{{#ifeq:{{{4|}}}|nav|x|{{#ifeq:{{{5|}}}|nav|x|}}}}}}}} | ''' }}<span {{#if: {{#ifeq:{{{2|}}}|b|x|{{#ifeq:{{{3|}}}|b|x|{{#ifeq:{{{4|}}}|b|x|{{#ifeq:{{{5|}}}|b|x|}}}}}}}} | | class="wp-templatelink" }}>&#123;&#123;{{#if: {{#ifeq:{{{2|}}}|s|x|{{#ifeq:{{{3|}}}|s|x|{{#ifeq:{{{4|}}}|s|x|{{#ifeq:{{{5|}}}|s|x|}}}}}}}} | subst: | {{#if: {{#ifeq:{{{2|}}}|п|x|{{#ifeq:{{{3|}}}|п|x|{{#ifeq:{{{4|}}}|п|x|{{#ifeq:{{{5|}}}|п|x|}}}}}}}} | подст: | }} }}</span>{{{text|{{#if: {{#ifeq:{{{2|}}}|u|x|{{#ifeq:{{{3|}}}|u|x|{{#ifeq:{{{4|}}}|u|x|{{#ifeq:{{{5|}}}|u|x|}}}}}}}} | {{ROOTPAGENAME}} | {{lcfirst: {{ROOTPAGENAME}} }} }}}}}<span {{#if: {{#ifeq:{{{2|}}}|b|x|{{#ifeq:{{{3|}}}|b|x|{{#ifeq:{{{4|}}}|b|x|{{#ifeq:{{{5|}}}|b|x|}}}}}}}} | | class="wp-templatelink" }}>&#125;&#125;</span>{{#if: {{#ifeq:{{{2|}}}|nav|x|{{#ifeq:{{{3|}}}|nav|x|{{#ifeq:{{{4|}}}|nav|x|{{#ifeq:{{{5|}}}|nav|x|}}}}}}}} | ''' }}
 
    | {{#if:
 
        {{#ifexpr: {{str len|{{{text|{{ROOTPAGENAME}}}}}}} != 1
 
        | x
 
        | {{#switch:{{{2|}}}|s=x|п=x|b=x|{{#switch:{{{3|}}}|s=x|п=x|b=x|{{#switch:{{{4|}}}|s=x|п=x|b=x|{{#switch:{{{5|}}}|s=x|п=x|b=x|{{{s|{{{п|}}}}}}}}}}}}}}
 
        }}      <!-- Забирать ли в ссылку соседние фигурные скобки -->
 
      | <span {{#if: {{#ifeq:{{{2|}}}|b|x|{{#ifeq:{{{3|}}}|b|x|{{#ifeq:{{{4|}}}|b|x|{{#ifeq:{{{5|}}}|b|x|}}}}}}}} | | class="wp-templatelink" }}>&#123;&#123;{{#if: {{#ifeq:{{{2|}}}|s|x|{{#ifeq:{{{3|}}}|s|x|{{#ifeq:{{{4|}}}|s|x|{{#ifeq:{{{5|}}}|s|x|}}}}}}}} | subst: | {{#if: {{#ifeq:{{{2|}}}|п|x|{{#ifeq:{{{3|}}}|п|x|{{#ifeq:{{{4|}}}|п|x|{{#ifeq:{{{5|}}}|п|x|}}}}}}}} | подст: | }} }}</span>[[Шаблон:{{ROOTPAGENAME}}|{{{text|{{#if: {{#ifeq:{{{2|}}}|u|x|{{#ifeq:{{{3|}}}|u|x|{{#ifeq:{{{4|}}}|u|x|{{#ifeq:{{{5|}}}|u|x|}}}}}}}} | {{ROOTPAGENAME}} | {{lcfirst: {{ROOTPAGENAME}} }} }}}}}]]<span {{#if: {{#ifeq:{{{2|}}}|b|x|{{#ifeq:{{{3|}}}|b|x|{{#ifeq:{{{4|}}}|b|x|{{#ifeq:{{{5|}}}|b|x|}}}}}}}} | | class="wp-templatelink" }}>&#125;&#125;</span>
 
      | <span {{#if: {{#ifeq:{{{2|}}}|b|x|{{#ifeq:{{{3|}}}|b|x|{{#ifeq:{{{4|}}}|b|x|{{#ifeq:{{{5|}}}|b|x|}}}}}}}} | | class="wp-templatelink" }}>&#123;</span>[[Шаблон:{{ROOTPAGENAME}}|<span class="wp-templatelink">&#123;</span>{{{text|{{#if: {{#ifeq:{{{2|}}}|u|x|{{#ifeq:{{{3|}}}|u|x|{{#ifeq:{{{4|}}}|u|x|{{#ifeq:{{{5|}}}|u|x|}}}}}}}} | {{ROOTPAGENAME}} | {{lcfirst: {{ROOTPAGENAME}} }} }}}}}<span class="wp-templatelink">&#125;</span>]]<span class="wp-templatelink">&#125;</span>
 
      }}
 
    }}
 
  }}
 
}}<!--
 
 
 
Некоторые детали для понимания (части) логики:
 
• больше всего места занимает «прочесывание» параметров в поисках допустимых значений;
 
• если шаблон вызывается без первого параметра, максимум ненумерованных параметров может быть 5, поэтому нужные значения (nl/nolink, s/п, u, b) ищутся во 2-5 параметрах;
 
• если шаблон вызывается с первым параметром, максимум ненумерованных параметров может быть 4, поэтому нужные значения (nl/nolink, s/п, g, b; но nl несовместимо с g) ищутся... все равно во 2-5 параметрах, мало ли;
 
• когда мы находимся в документации (Шаблон:Имя шаблона/doc), ссылка тоже показывается;
 
• x — подобие true или крестика в чекбоксе (со значением 1 получается путаница, ведь противоположность 1 — 0, но 0 тоже обрабатывается как true).
 
 
 
--><noinclude>{{doc}}</noinclude>
 

Текущая версия на 10:38, 13 февраля 2021

{{tl}}

Документация