Шаблон:Tl: различия между версиями
Перейти к навигации
Перейти к поиску
(+r/raw) |
(принцип "don't worry about performance" себя не оправдал: на странице с сотней включений шаблона эта штука тормозила. оптимизировал до норм. значений) |
||
Строка 1: | Строка 1: | ||
− | + | {{#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: | + | <!-- Оптимизируем выполнение, не вынуждая парсер проходить через катакомбы сложной обработки параметров, |
− | + | если шаблон вызван без дополнительных параметров --> | |
− | + | | <span class="wp-templatelink">{{</span>{{#if: {{{1|}}} | | |
− | + | {{#ifeq: | |
− | + | {{FULLPAGENAME: Шаблон:{{{1}}} }} <!-- {{FULLPAGENAME:}} для преобразования «_» в « » и т. п., --> | |
− | + | | {{FULLPAGENAME}} <!-- а также решения проблемы с именами на «*», «;» и т. п. при вызове ucfirst --> | |
− | + | | {{FULLPAGENAME: {{{1}}} }} | |
− | + | | [[Шаблон:{{{1}}}|{{{1}}}]] | |
− | + | }} | |
− | + | | {{#if: {{#titleparts: {{PAGENAME}} | 1 | 2 }} | |
− | + | | [[Шаблон:{{ROOTPAGENAME}}|{{lcfirst: {{ROOTPAGENAME}} }}]] | |
+ | | {{lcfirst: {{ROOTPAGENAME}} }} | ||
+ | }} | ||
+ | }}<span class="wp-templatelink">}}</span> | ||
+ | | <span {{#if: {{#ifeq:{{{2|}}}|b|x|{{#ifeq:{{{3|}}}|b|x|{{#ifeq:{{{4|}}}|b|x|{{#ifeq:{{{5|}}}|b|x|{{{b|}}}}}}}}}}} | | class="wp-templatelink" }}>{{{#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|{{{nl|{{{nolink|}}}}}}}}}}}}}} | ||
+ | | x | ||
+ | | {{#ifeq: {{lc: {{{lang|ru}}} }} | ru | ||
+ | | {{#if: {{{sister|}}} | ||
+ | | | ||
+ | | {{#ifeq: | ||
+ | {{#if: {{#ifeq:{{{2|}}}|g|x|{{#ifeq:{{{3|}}}|g|x|{{#ifeq:{{{4|}}}|g|x|{{#ifeq:{{{5|}}}|g|x|{{{g|{{#ifeq: {{str left|{{{1}}}|1}} | : | x | }}}}}}}}}}}}} | ||
+ | | {{FULLPAGENAME: {{{1}}} }} <!-- ←↙ Что сравниваем --> | ||
+ | | {{FULLPAGENAME: Шаблон:{{{1}}} }} <!-- {{FULLPAGENAME:}} для преобразования «_» в « » и т. п., --> | ||
+ | }} <!-- а также решения проблемы с именами на «*», «;» и т. п. при вызове ucfirst --> | ||
+ | | {{FULLPAGENAME}} <!-- С чем сравниваем --> | ||
+ | | x | ||
+ | | | ||
}} | }} | ||
− | |||
− | |||
− | |||
}} | }} | ||
+ | | | ||
}} | }} | ||
− | |||
}} | }} | ||
− | + | | {{{#if: {{#ifeq:{{{2|}}}|s|x|{{#ifeq:{{{3|}}}|s|x|{{#ifeq:{{{4|}}}|s|x|{{#ifeq:{{{5|}}}|s|x|{{{s|}}}}}}}}}}} | 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|{{{b|}}}}}}}}}}} | | class="wp-templatelink" }}>} | |
− | + | | {{#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|{{{п|{{{b|}}}}}}}}}}}}}}}}} | |
− | + | }} <!-- Забирать ли в ссылку соседние фигурные скобки --> | |
− | + | | {{{#if: {{#ifeq:{{{2|}}}|s|x|{{#ifeq:{{{3|}}}|s|x|{{#ifeq:{{{4|}}}|s|x|{{#ifeq:{{{5|}}}|s|x|{{{s|}}}}}}}}}}} | 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|{{{g|{{#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|{{{b|}}}}}}}}}}} | | class="wp-templatelink" }}>} | |
− | |||
− | |||
<!-- {{{lang}}} и {{{sister}}} появляются не в начале, а с FULLPAGENAME, | <!-- {{{lang}}} и {{{sister}}} появляются не в начале, а с FULLPAGENAME, | ||
чтобы FULLPAGENAME не менял название пространств имён для других разделов/проектов --> | чтобы FULLPAGENAME не менял название пространств имён для других разделов/проектов --> | ||
+ | | </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|{{{g|{{#ifeq: {{str left|{{{1}}}|1}} | : | x | }}}}}}}}}}}}} | {{FULLPAGENAME: {{{1}}} }} | Template:{{{1}}} }}|<span class="wp-templatelink">{</span>{{{text|{{{1}}}}}}<span class="wp-templatelink">}</span>]]<span class="wp-templatelink"> | ||
+ | }} | ||
}} | }} | ||
− | + | | {{#if: <!-- Без первого параметра. Показывать ли ссылку --> | |
− | | {{#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|{{{nl|{{{nolink|}}}}}}}}}}}}}} |
− | |||
− | |||
− | |||
− | |||
| x | | x | ||
+ | | {{#if: {{#titleparts: {{PAGENAME}} | 1 | 2 }} | ||
+ | | | ||
+ | | x | ||
+ | }} | ||
+ | }} | ||
+ | | {{{#if: {{#ifeq:{{{2|}}}|s|x|{{#ifeq:{{{3|}}}|s|x|{{#ifeq:{{{4|}}}|s|x|{{#ifeq:{{{5|}}}|s|x|{{{s|}}}}}}}}}}} | 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|{{{u|}}}}}}}}}}} | {{ROOTPAGENAME}} | {{lcfirst: {{ROOTPAGENAME}} }} }}}}}<span {{#if: {{#ifeq:{{{2|}}}|b|x|{{#ifeq:{{{3|}}}|b|x|{{#ifeq:{{{4|}}}|b|x|{{#ifeq:{{{5|}}}|b|x|{{{b|}}}}}}}}}}} | | class="wp-templatelink" }}>} | ||
+ | | {{#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|{{{п|{{{b|}}}}}}}}}}}}}}}}} | ||
+ | }} <!-- Забирать ли в ссылку соседние фигурные скобки --> | ||
+ | | {{{#if: {{#ifeq:{{{2|}}}|s|x|{{#ifeq:{{{3|}}}|s|x|{{#ifeq:{{{4|}}}|s|x|{{#ifeq:{{{5|}}}|s|x|{{{s|}}}}}}}}}}} | 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|{{{u|}}}}}}}}}}} | {{ROOTPAGENAME}} | {{lcfirst: {{ROOTPAGENAME}} }} }}}}}]]<span {{#if: {{#ifeq:{{{2|}}}|b|x|{{#ifeq:{{{3|}}}|b|x|{{#ifeq:{{{4|}}}|b|x|{{#ifeq:{{{5|}}}|b|x|{{{b|}}}}}}}}}}} | | class="wp-templatelink" }}>} | ||
+ | | </span>[[Шаблон:{{ROOTPAGENAME}}|<span class="wp-templatelink">{</span>{{{text|{{#if: {{#ifeq:{{{2|}}}|u|x|{{#ifeq:{{{3|}}}|u|x|{{#ifeq:{{{4|}}}|u|x|{{#ifeq:{{{5|}}}|u|x|{{{u|}}}}}}}}}}} | {{ROOTPAGENAME}} | {{lcfirst: {{ROOTPAGENAME}} }} }}}}}<span class="wp-templatelink">}</span>]]<span class="wp-templatelink"> | ||
}} | }} | ||
}} | }} | ||
− | + | }}}</span> | |
− | + | }}<!-- | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
Некоторые детали для понимания (части) логики: | Некоторые детали для понимания (части) логики: | ||
• больше всего места занимает «прочесывание» параметров в поисках допустимых значений; | • больше всего места занимает «прочесывание» параметров в поисках допустимых значений; | ||
− | • если шаблон вызывается без первого параметра, максимум ненумерованных параметров может быть 5, поэтому нужные значения (nl/nolink, u, s | + | • если шаблон вызывается без первого параметра, максимум ненумерованных параметров может быть 5, поэтому нужные значения (nl/nolink, u, s/п, b) ищутся во 2-5 параметрах; |
− | • если шаблон вызывается с первым параметром, максимум ненумерованных параметров может быть 4, поэтому нужные значения (nl/nolink, s | + | • если шаблон вызывается с первым параметром, максимум ненумерованных параметров может быть 4, поэтому нужные значения (nl/nolink, s/п, g, b; но nl несовместимо с g) ищутся... все равно во 2-5 параметрах, мало ли; |
• когда мы находимся в документации (Шаблон:Имя шаблона/doc), ссылка тоже показывается; | • когда мы находимся в документации (Шаблон:Имя шаблона/doc), ссылка тоже показывается; | ||
• x — подобие true или крестика в чекбоксе (со значением 1 получается путаница, ведь противоположность 1 — 0, но 0 тоже обрабатывается как true). | • x — подобие true или крестика в чекбоксе (со значением 1 получается путаница, ведь противоположность 1 — 0, но 0 тоже обрабатывается как true). | ||
--><noinclude>{{doc}}</noinclude> | --><noinclude>{{doc}}</noinclude> |
Версия от 02:23, 24 января 2016
{{tl}}
Документация
![]() | Этому шаблону не хватает документации. |