Этот модуль подсчитывает количество параметров, переданных в шаблон. Например, вы можете поместить код {{#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 )конец}