Постоянно защищенный модуль
Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску
Документация по модулю [ просмотреть ] [ изменить ] [ историю ] [ очистить ]

Этот модуль подсчитывает количество параметров, переданных в шаблон. Например, вы можете поместить код {{#invoke:ParameterCount|all}}в {{my template}}шаблон. Если вы затем используете {{my template}}вот так:

{{мой шаблон| один| два| три}}

Тогда {{#invoke:ParameterCount|all}}код внутри шаблона даст результат 3.

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

В модуле доступны две функции: allи main.

все

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

использование

{{#invoke: ParameterCount | все}}

Примеры

Если бы код {{#invoke:ParameterCount|all}}был добавлен в {{my example template}}шаблон, код {{my example template|1|2|foo=bar}}заставил бы ParameterCount производить 3.

главный

mainФункция используется для подсчета параметров с конкретными именами. Есть два способа указать параметры: по имени и с помощью шаблонов Lua.

По имени

{{#invoke: ParameterCount | main | 1 | 2 | 3 | abc | def}}

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

По образцу

{{#invoke: ParameterCount | main | pattern1 = ^ param% d + $ | pattern2 = ^ abc}}

Чтобы задать параметры по Lua Ustring шаблон, добавьте шаблон в |pattern1=, и |pattern2=т.д. Для получения информации о построении моделей Lua, см Lua Users' Wiki шаблон учебник , а также ссылку на Lua разделов руководства моделей Lua и шаблонов Ustring .

Примеры

Если бы код {{#invoke:ParameterCount|main|1|2|abc}}был добавлен в {{my example template}}шаблон, код {{my example template|1|2|abc=some value|other=some other value}}заставил бы ParameterCount производить 3.

Если бы код {{#invoke:ParameterCount|main|pattern1=^param%d+$}}был добавлен в {{my example template}}шаблон, код {{my example template|param1=a value|param2=another value|param5=yet another value}}заставил бы ParameterCount производить 3.

Проверка на пробелы

{{#invoke: ParameterCount | all | checkblanks = no}}
{{#invoke: ParameterCount | main | checkblanks = no}}

По умолчанию модуль не считает параметры, значения которых содержат только пробелы, например |abc=   . Если вы хотите подсчитать все параметры, независимо от их значения, используйте |checkblanks=no. Это работает как с функциями, так allи с mainфункциями.

Примеры

Если бы код {{#invoke:ParameterCount|all|checkblanks=no}}был добавлен в {{my example template}}шаблон, код {{my example template|1|2|foo=bar|baz=}}заставил бы ParameterCount производить 4.

- Этот модуль производит подсчет всех переданных ему аргументов.local  yesno  =  require ( 'Модуль: Да нет' )- Обрезать строкулокальная  функция  обрезки ( ы )return  s : match ( '^% s * (.-)% s * $' )конец- Проверить, пуста ли строкалокальная  функция  isBlank ( s )return  not  s : find ( '% S' )конец- Проверяет, является ли строка допустимым позиционным ключом, и, если да, возвращает его. Если- ключ недействителен, возвращает ноль.локальная  функция  isPositionalKey ( s )s  =  обрезка ( и )если  s : find ( '^ [1-9] [0-9] * $' ),  тоВозвращение  ToNumber ( ы )конецконец- Вернуть количество всех аргументов, для которых testFunc возвращает истинное значение.локальная  функция  подсчета ( арг ,  testFunc )местный  ret  =  0для  ключа ,  вал  в  паре ( арг )  делатьесли  testFunc ( ключ ,  val ),  тоret  =  ret  +  1конецконецвозвращение в  отставкеконец- Проверьте общие аргументы и получите количество родительских аргументов.локальная  функция  main ( frame ,  testFunc )местный  blankifiedTestFuncесли  да, то нет ( frame . args . checkblanks )  ~ =  false,  то- Расширьте функцию тестирования, чтобы также проверить наличие пробелов.blankifiedTestFunc  =  функция  ( ключ ,  Val )если  не  isBlank ( val ),  тоВозвращение  testFunc ( ключ ,  вал )конецконецещеblankifiedTestFunc  =  testFuncконец счетчик возврата ( кадр : getParent (). args ,  blankifiedTestFunc )конецreturn  {- Вызывается с помощью {{#invoke: ParameterCount | all}}- Учитываются все указанные параметры, даже те, которые не поддерживаются-- шаблон.все  =  функция  ( фрейм )return  main ( кадр ,  функция  ()  return  true  end )конец ,- Вызывается с помощью {{#invoke: ParameterCount | main}}- Пользователи могут указать список параметров для проверки и список Lua- Шаблоны Ustring для проверки каждого параметра.main  =  функция  ( фрейм )локальные  аргументы  =  фрейм . аргументылокальные  ключи ,  patterns  =  {},  {}- Получить список ключейдля  I ,  ключ  в  ipairs ( арг )  делатьlocal  positionalKey  =  isPositionalKey ( ключ )если  positionalKey,  тоключи [ positionalKey ]  =  trueещеkeys [ trim ( key )]  =  trueконецконец- Получите выкройкиделатьлокальная  функция  getPattern ( i )локальный  шаблон  =  аргументы [ 'шаблон'  ..  tostring ( i )]если  узор  и  узор  ~ =  '',  то образец возвратаконецконецместный  я  =  1локальный  шаблон  =  getPattern ( i )пока  узор  делатьшаблоны [ i ]  =  узоря  =  я  +  1шаблон  =  getPattern ( я )конецконец- Построить тестовую функциюлокальная  testFunc  =  функция  ( ключ ,  вал )если  ключи [ ключ ]  товернуть  истинуконецдля  I ,  узор  в  ipairs ( узоров )  делаютесли  мв . ustring . найти ( tostring ( ключ ),  шаблон ),  затемвернуть  истинуконецконецвернуть  ложьконецвернуть  main ( frame ,  testFunc )конец}