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

Этот модуль может быть добавлен к шаблону для проверки использования неизвестных параметров.

Применение

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

{{#invoke: проверить неизвестные параметры | проверить| unknown = [[Категория: Некоторая категория отслеживания]]| arg1 | arg2 | arg3 | argN}}

или отсортировать записи в категории отслеживания по параметру с сообщением об ошибке предварительного просмотра

{{#invoke: проверить неизвестные параметры | проверить| unknown = [[Категория: Некоторая категория отслеживания | _VALUE_]]| preview = неизвестный параметр "_VALUE_"| arg1 | arg2 | ... | argN}}

или для явного красного сообщения об ошибке

{{#invoke: проверить неизвестные параметры | проверить| unknown = <span class = "error"> Извините, я не узнаю _VALUE_ </span>| arg1 | arg2 | ... | argN}}

Здесь arg1, arg2, ..., argN, являются известными параметрами. Без имени (позиционные) параметры могут быть добавлены также: |1|2|argname1|argname2|.... Любой параметр, который используется, но не в этом списке, заставит модуль вернуть все, что было передано с unknownпараметром. _VALUE_Ключевое слово, если оно используется, будет изменено на имя параметра. Это полезно либо для сортировки записей в категории отслеживания, либо для предоставления более подробной информации.

По умолчанию модуль не делает различий между определенным, но пустым параметром и непустым параметром. То есть как не внесенные в список, так |foo=xи |foo=сообщенные. Чтобы отслеживать только непустые параметры, используйте |ignoreblank=1.

По умолчанию модуль игнорирует пустые позиционные параметры. То есть, не внесенные в список |2=игнорируются. Для включения пустых позиционных параметров в отслеживание используйте |showblankpositional=1.

Шаблоны Lua

Этот модуль поддерживает шаблоны Lua (аналогичные регулярным выражениям ), которые полезны, когда есть много известных параметров, использующих систематический шаблон. Например, template: infobox3cols использует

| regexp1 = заголовок [% d] [% d] *| regexp2 = метка [% d] [% d] *| regexp3 = данные [% d] [% d] * [abc]?| regexp4 = класс [% d] [% d] * [abc]?| regexp5 = rowclass [% d] [% d] *| regexp6 = стиль строки [% d] [% d] *| regexp7 = rowcellstyle [% d] [% d] *

чтобы соответствовать всем параметрам формы headerNUM, labelNUM, dataNUM, dataNUMa, dataNUMb, dataNUMc, ..., rowcellstyleNUM, где NUM это строка цифр.

Пример

{{Инфобокс| выше = {{{name |}}}| label1 = Высота| data1 = {{{высота |}}}| label2 = Вес| data2 = {{{вес |}}}| label3 = Веб-сайт| data3 = {{{веб-сайт |}}}}} <! -  конец информационного окна, начать отслеживание-> {{# invoke: Проверить неизвестные параметры | проверить| unknown = {{main other | [[Категория: Некоторая категория отслеживания | _VALUE_]]}}| предварительный просмотр = неизвестный параметр "_VALUE_"| название| высота | масса| Веб-сайт}}

Смотрите также

- Этот модуль можно использовать для сравнения аргументов, переданных родителю- со списком аргументов, возвращая указанный результат, если аргумент- нет в спискеместный  p  =  {}локальная  функция  обрезки ( ы )return  s : match ( '^% s * (.-)% s * $' )конецлокальная  функция  isnotempty ( s )вернуть  s  и  s : match ( '% S' )конецлокальная  функция  clean ( текст )- Возвращаемый текст очищен для отображения и усечен, если он слишком длинный.- Маркеры полосы заменяются фиктивным текстом, представляющим исходный викитекст.местная  позиция ,  усеченная усечение локальной функции  ( текст )если  усечено,  товернуться  ''конецесли  мв . ustring . len ( текст )  >  25,  тогдаtruncated  =  trueтекст  =  mw . ustring . sub ( текст ,  1 ,  25 )  ..  '...'конецвернуть  мв . текст . nowiki ( текст )конецместные  части  =  {}для  перед ,  тег ,  остаток  в  тексте : gmatch ( '([^ \ 127 ] *) \ 127 [^ \ 127 ] *% - (% l +)% - [^ \ 127 ] * \ 127 ()' )  dopos  =  остатокtable.insert ( parts ,  truncate ( before )  ..  '& lt;'  ..  tag  ..  '& gt; ... & lt; /'  ..  tag  ..  '& gt;' )конецtable.insert ( parts ,  truncate ( текст : sub ( pos  или  1 )))return  table.concat ( части )конецфункция  p . _check ( аргументы ,  параметры )если  type ( args )  ~ =  "table"  или  type ( pargs )  ~ =  "table",  то- TODO: обработка ошибоквозвращатьсяконецlocal  ignoreblank  =  isnotempty ( args [ 'ignoreblank' ])local  showblankpos  =  isnotempty ( args [ 'showblankpositional' ])local  knownargs  =  {}local  unknown  =  args [ 'unknown' ]  или  'Найдено _VALUE_,'local  preview  =  args [ 'preview' ]местные  значения  =  {}местный  res  =  {}локальное  регулярное выражение  =  {}- создать список известных аргументов, регулярных выражений и возвращаемой строкидля  k ,  v  в  парах ( args )  делаемесли  type ( k )  ==  'number',  тоv  =  обрезать ( v )knownargs [ v ]  =  1elseif  k : find ( '^ regexp [1-9] [0-9] * $' )  тогдаtable.insert ( регэкспы ,  '^'  ..  v  ..  '$' )конецконецесли  isnotempty ( предварительный просмотр ),  тоpreview  =  '<div class = "hatnote" style = "color: red"> <strong> Предупреждение: </strong>'  ..  preview  ..  '(это сообщение отображается только в режиме предварительного просмотра). </div>'elseif  preview  ==  nil  тогдапредварительный просмотр  =  неизвестноконец- перебрать родительские аргументы и убедиться, что они есть в спискедля  k ,  v  в  парах ( pargs )  делаемесли  type ( k )  ==  'string'  и  knownargs [ k ]  ==  nil,  томестный известный  флаг  =  ложьдля  _ ,  regexp  в  ipairs ( regexps )  делатьесли  мв . ustring . match ( k ,  regexp ),  затемknownflag  =  trueперерывконецконецесли  не  известен флаг  и  (  не  ignoreblank  или  isnotempty ( v )  ),  тоtable.insert ( значения ,  чистый ( k ))конецelseif  type ( k )  ==  'number'  иknownargs [ tostring ( k )]  ==  nil  и(  showblankpos  или  isnotempty ( v )  )тогдаtable.insert ( значения ,  k  ..  '='  ..  clean ( v ))конецконец- добавить результаты в выходные таблицыесли  # значений  >  0,  тоесли  мв . getCurrentFrame (): preprocess (  "{{REVISIONID}}"  )  ==  ""  затемunknown  =  предварительный просмотрконецдля  _ ,  v  в  парах ( значениях )  делаемесли  v  ==  '',  то- Исправить странную ошибку для | = который удаляется до пустой строки и- разрывает ссылки на категорииv  =  ''конец- избегайте ошибки с v = 'example% 2' ("неверный индекс захвата")local  r  =  unknown : gsub ( '_VALUE_' ,  { _VALUE_  =  v })table.insert ( res ,  r )конецконецвернуть  table.concat ( res )конецфункция  p . чек ( рамка )локальные  аргументы  =  фрейм . аргументылокальные  pargs  =  frame : getParent (). аргументывозврат  п . _check ( аргументы ,  параметры )конецвернуть  p