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

Мягкое перенаправление на:Документация для программистов шаблонов
Эта страница является мягким редиректом .

- [= [TemplatePar 14 февраля 2015 г.Утилита параметров шаблона* утверждать* проверить* считать* countNotEmpty* вниз ()* матч* действительный* проверять()* TemplatePar ()знак равно- Модульные глобалыlocal  TemplatePar  =  {  }local  MessagePrefix  =  "lua-module-TemplatePar-"местный  L10nDef  =  {}L10nDef . en  =  { badPattern  =  "& # 35; invoke: синтаксическая ошибка шаблона TemplatePar" , dupOpt  =  "& # 35; invoke: TemplatePar повторяющийся необязательный параметр" , dupRule  =  "& # 35; invoke: ключ / шаблон конфликта TemplatePar" , empty  =  "Ошибка в шаблоне * неопределенное значение для обязательного" , invalid  =  "Ошибка в шаблоне * недопустимый параметр" , invalidPar  =  "& # 35; invoke: недопустимый параметр TemplatePar" , minmax  =  "& # 35; invoke: TemplatePar min> max" , missing  =  "& # 35; invoke: Отсутствует библиотека TemplatePar" , multiSpell  =  "Ошибка в шаблоне * множественное написание параметра" , noMSGnoCAT  =  "& # 35; invoke: TemplatePar ни сообщение, ни категория" , noname  =  "& # 35; invoke: TemplatePar отсутствует имя параметра" , notFound  =  "Ошибка в шаблоне * отсутствует страница" , tooLong  =  "Ошибка в шаблоне * слишком длинный параметр" , tooShort  =  "Ошибка в шаблоне * слишком короткий параметр" , undefined  =  "Ошибка в шаблоне * отсутствует обязательный параметр" , unknown  =  "Ошибка в шаблоне * неизвестное имя параметра" , unknownRule  =  "& # 35; invoke: Неизвестное правило TemplatePar"}L10nDef . de  =  { badPattern  =  "& # 35; invoke: TemplatePar Syntaxfehler des pattern" , dupOpt  =  "& # 35; invoke: TemplatePar Optionsparameter wiederholt" , dupRule  =  "& # 35; invoke: ключ / шаблон TemplatePar Konflikt" , empty  =  "Fehler bei Vorlage * Pflichtparameter ohne Wert" , invalid  =  "Fehler bei Vorlage * Parameter ungültig" , invalidPar  =  "& # 35; invoke: TemplatePar Ungültiger Parameter" , minmax  =  "& # 35; invoke: TemplatePar min> max" , multiSpell  =  "Fehler bei Vorlage * Mehrere Parameter-Schreibweisen" , noMSGnoCAT  =  "& # 35; invoke: TemplatePar weder Meldung noch Kategorie" , noname  =  "& # 35; invoke: TemplatePar Parameter nicht angegeben" , notFound  =  "Fehler bei Vorlage * Seite fehlt" , tooLong  =  "Fehler bei Vorlage * Parameter zu lang" , tooShort  =  "Fehler bei Vorlage * Parameter zu kurz" , undefined  =  "Fehler bei Vorlage * Pflichtparameter fehlt" , unknown  =  "Fehler bei Vorlage * Parametername unbekannt" , unknownRule  =  "& # 35; invoke: TemplatePar Unbekannte Regel"}local  Patterns  =  { [  "ASCII"  ]  =  "^ [- ~] * $" , [  "ASCII +"  ]  =  "^ [- ~] + $" , [  "ASCII + 1"  ]  =  "^ [! - ~] + $" , [  "n"  ]  =  "^ [% -]? [0-9] * $" , [  "n> 0"  ]  =  "^ [0-9] * [1-9] [0-9] * $" , [  "N +"  ]  =  "^ [% -]? [1-9] [0-9] * $" , [  "N> 0"  ]  =  "^ [1-9] [0-9] * $" , [  "x"  ]  =  "^ [0-9A-Fa-f] * $" , [  "x +"  ]  =  "^ [0-9A-Fa-f] + $" , [  "X"  ]  =  "^ [0-9A-F] * $" , [  "X +"  ]  =  "^ [0-9A-F] + $" , [  "0,0"  ]  =  "^ [% -]? [0-9] * ,? [0-9] * $" , [  "0,0+"  ]  =  "^ [% -]? [0-9] +, [0-9] + $" , [  "0,0+?"  ]  =  "^ [% -]? [0-9] + ,? [0-9] * $" , [  "0.0"  ]  =  "^ [% -]? [0-9] * [%.]? [0-9] * $" , [  "0.0+"  ]  =  "^ [% -]? [0-9] +%. [0-9] + $" , [  "0,0+?"  ]  =  "^ [% -]? [0-9] + [%.]? [0-9] * $" , [  ".0+"  ]  =  "^ [% -]? [0-9] * [%.]? [0-9] + $" , [  "ID"  ]  =  "^ [A-Za-z]? [A-Za-z_0-9] * $" , [  "ID +"  ]  =  "^ [A-Za-z] [A-Za-z_0-9] * $" , [  "ABC"  ]  =  "^ [AZ] * $" , [  "ABC +"  ]  =  "^ [AZ] + $" , [  "Abc"  ]  =  "^ [AZ] * [az] * $" , [  "Abc +"  ]  =  "^ [AZ] [az] + $" , [  "abc"  ]  =  "^ [az] * $" , [  "abc +"  ]  =  "^ [az] + $" , [  "aBc +"  ]  =  "^ [az] + [AZ] [A-Za-z] * $" , [  "w"  ]  =  "^% S * $" , [  "w +"  ]  =  "^% S + $" , [  "base64"  ]  =  "^ [A-Za-z0-9% + /] * $" , [  "base64 +"  ]  =  "^ [A-Za-z0-9% + /] + $" , [  "aa"  ]  =  "[% a% a]. * [% a% a]" , [  "pagename"  ]  =  string.format (  "^ [^ # <> %% [%%] | {}% c-% c% c] + $" , 1 ,  31 ,  127  ), [  "+"  ]  =  "% S"}локальный  шаблон CJK  =  falseлокальная  функция  содержит CJK (  s  ) - Присутствует ли какой-нибудь персонаж CJK? - Предварительное условие: - s - строка - Постусловие: - Вернуть false, если нет CJK - Использует: -> <шаблонCJK - mw.ustring.char () - mw.ustring.match () местный  r  =  false если  не  patternCJK,  то patternCJK  =  mw . ustring . символ (  91 , 13312 ,  45 ,  40959 , 131072 ,  45 ,  178207 , 93  ) конец если  мв . ustring . match (  s ,  patternCJK  ),  затем г  =  правда конец вернуть  гконец  - содержитCJK ()локальная  функция  объекта (  принять ,  попытка  ) - Проверьте строку как возможное имя файла или другую исходную страницу - Предварительное условие: - accept - строка; требование -- файл - файл + -- файл: - файл: + -- изображение - изображение + -- изображение: - изображение: + - попытка - строка; для тестирования - Постусловие: - Вернуть ключевое слово ошибки или false - Использует: - Модуль: FileMedia - FileMedia.isType () местный  р если  попытка  и  попытка  ~ =  ""  тогда местный  повезло ,  FileMedia  =  pcall (  требуется ,  «Модуль: FileMedia»  ) если  type (  FileMedia  )  ==  "table",  то FileMedia  =  FileMedia . FileMedia () local  s ,  live  =  accept : match (  "^ ([az] +) (:?)% +? $"  ) если  жив,  то если  FileMedia . isType (  попытка ,  с  ),  затем если  FileMedia . isFile (  попытка  ),  затем г  =  ложь еще r  =  "notFound" конец еще r  =  "недействительно" конец elseif  FileMedia . isType (  попытка ,  с  ),  затем г  =  ложь еще r  =  "недействительно" конец еще r  =  "отсутствует" конец elseif  accept : match (  "% + $"  )  затем r  =  "пустой" еще г  =  ложь конец вернуть  гконец  - объект ()локальная  фабрика функций  ( скажем )   - Получить локализованную строку сообщения на языке содержимого - Предварительное условие: - говорят - струна; ID сообщения - Постусловие: - Вернуть строку сообщения - Использует: -> MessagePrefix -> L10nDef - mw.language.getContentLanguage () - mw.message.new () местный  c  =  mw . язык . getContentLanguage (): getCode () местный  m  =  mw . сообщение . новый (  MessagePrefix  ..  скажем  ) местный  r  =  false если  m : isBlank (),  то местный  l10n  =  L10nDef [  c  ] если  не  l10n  то l10n  =  L10nDef [  "ru"  ] конец r  =  l10n [  сказать  ] еще m : inLanguage (  c  ) г  =  м : простой () конец если  не  г,  то r  =  string.format (  "((((% s)))" ,  скажем  ) конец вернуть  гконец  - фабрика ()локальная  функция  отказоустойчивости (  рассказ ,  сканирование  ) - Проверка на совпадение (возможно, определенная пользователем с синтаксической ошибкой) - Предварительное условие: - рассказ - струна; значение параметра - скан - строка; шаблон - Постусловие: - Возвращает ноль, если не совпадает, иначе не ноль - Использует: - mw.ustring.match () вернуть  мв . ustring . матч (  рассказ ,  скан  )конец  - отказоустойчивый () сбой локальной функции  ( спецификация , подозрение , опции )     - Отправить локализованное сообщение об ошибке - Предварительное условие: - spec - строка; ID сообщения - подозреваемый - строка или ноль; Дополнительная информация - параметры - таблица или ноль; необязательные детали - options.template - Постусловие: - Строка возврата - Использует: -- фабрика() местный  r  =  завод (  спецификация  ) если  type (  options  )  ==  "table",  то если  type (  options . template  )  ==  "строка",  то если  # опции . template  >  0,  тогда r  =  string.format (  "% s (% s)" ,  r ,  параметры . шаблон  ) конец конец конец если  подозреваешь,  то r  =  string.format (  "% s:% s" ,  r ,  подозрительно  ) конец вернуть  гконец  - отказ ()локальная  функциональная  ошибка (  магазин ,  ключ  ) - Добавить ключ в строку коллекции и вставить разделитель - Предварительное условие: - store - строка или ноль или ложь; строка коллекции - ключ - строка или число; быть добавленным - Постусловие: - строка возврата; расширенный местный  р местные  с если  type (  key  )  ==  "число",  то s  =  tostring (  ключ  ) еще s  =  ключ конец если  хранить  то r  =  string.format (  "% s;% s" ,  store ,  s  ) еще г  =  с конец вернуть  гконец  - ошибка () возможна локальная функция  ( анализ , параметры , сокр. )     - Проверить содержание значения - Предварительное условие: - анализировать - строка для анализа - параметры - таблица или ноль; необязательные детали - options.pattern - options.key - options.say - abbr - true: сокращенное сообщение об ошибке - Постусловие: - Возвращаемая строка с сообщением об ошибке, как настроено; - false, если правильный или ответ не разрешен - Использует: -> Узоры -- отказ() - mw.text.trim () -- средство() - отказоустойчивый () - содержитCJK () местный  r  =  false местный  s  =  false местное  шоу  =  ноль локальное  сканирование  =  ложь если  type (  options . pattern  )  ==  "строка",  то если  варианты . ключ  тогда r  =  сбой (  "dupRule" ,  ложь ,  параметры  ) еще scan  =  параметры . шаблон конец еще если  type (  options . key  )  ==  "строка",  то s  =  mw . текст . обрезать (  опции . ключ  ) еще s  =  "+" конец если  s  ~ =  "*",  то scan  =  Шаблоны [  s  ] конец если  type (  scan  )  ==  "строка",  то если  s  ==  "n"  или  s  ==  "0,0"  или  s  ==  "0,0",  то если  не  анализировать : сопоставить (  "[0-9]"  )  и не  анализировать : сопоставить (  "^% s * $"  )  тогда сканирование  =  ложь если  варианты . скажи  тогда show  =  string.format (  "'% s'" ,  варианты . скажем  ) конец если  аббр,  то r  =  показать еще r  =  сбой (  "недопустимый" ,  показать ,  параметры  ) конец конец конец elseif  s  ~ =  "*"  тогда local  op ,  n ,  plus  =  s : match (  "([<! =>] =?) ([- 0-9] [% S] *) (+?)"  ) если  оп,  то п  =  ToNumber (  п  ) если  п,  то локальный  я  =  ToNumber (  анализ  ) если  я  тогда если  op  ==  "<",  то я  =  (  я  <  п  ) elseif  op  ==  "<="  тогда я  =  (  я  <=  п  ) elseif  op  ==  ">"  тогда я  =  (  я  >  п  ) elseif  op  ==  "> ="  тогда я  =  (  я  > =  п  ) elseif  op  ==  "=="  тогда я  =  (  я  ==  п  ) elseif  op  ==  "! ="  тогда я  =  (  я  ~ =  п  ) еще п  =  ложь конец конец если  не  я,  то r  =  "недействительно" конец иначе если  плюс  то r  =  "undefined" конец elseif  s : match (  "^ image% +?:? $"  )  или s : match (  "^ file% +?:? $"  )  затем r  =  объект (  s ,  анализировать  ) п  =  верно elseif  s : match (  "langW?% +?"  )  тогда п  =  "язык"- lang lang +- langW langW + конец если  не  n  и  не  r,  то r  =  "unknownRule" конец если  г,  то если  варианты . скажи  тогда show  =  string.format (  "'% s'% s" ,  параметры . скажем ,  s  ) еще показать  =  s конец если  аббр,  то r  =  показать еще r  =  сбой (  r ,  показать ,  варианты  ) конец конец конец конец если  сканировать  то местный  юридический ,  got  =  pcall (  отказоустойчивый ,  анализировать ,  сканировать  ) если  законно  то если  не  получил  то если  s  ==  "aa",  то got  =  containsCJK (  анализировать  ) конец если  не  получил  то если  варианты . скажи  тогда show  =  string.format (  "'% s'" ,  варианты . скажем  ) конец если  аббр,  то r  =  показать еще r  =  сбой (  "недопустимый" ,  показать ,  параметры  ) конец конец конец еще r  =  сбой (  "badPattern" , String.Format (  "% s ***% s" ,  сканирование ,  есть  ), варианты  ) конец конец вернуть  гконец  - выполнимо ()местная  функция  подачи (  стог сена ,  иголка  ) - Найдите иголку на карте стога сена - Предварительное условие: - стог сена - стол; карта ключевых значений - игла - любая; идентификатор - Постусловие: - Вернуть истину, если найден местный  k ,  v для  к ,  v  в  парах (  стог  )  делают если  k  ==  игла,  то вернуть  истину конец конец  - для k, v вернуть  ложьконец  - накормил () выборка локальной функции  ( свет , опции )    - Вернуть обычную таблицу со всеми параметрами - Предварительное условие: - светлый - правда: включение шаблона; false: #invoke - варианты - таблица; необязательные детали - options.low - Постусловие: - таблица возврата; только пробельные значения как false - Использует: - TemplatePar.downcase () - mw.getCurrentFrame () - рамка: getParent () местный  g ,  k ,  v местный  r  =  {  } если  варианты . тогда низко  g  =  TemplatePar . вниз (  варианты  ) еще г  =  мвт . getCurrentFrame () если  свет  тогда г  =  г : getParent () конец г  =  г . аргументы конец если  type (  g  )  ==  "table",  то г  =  {  } для  k ,  v  в  парах (  g  )  делаем если  type (  v  )  ==  "строка",  то если  v : match (  "^% s * $"  ),  то v  =  ложь конец еще v  =  ложь конец если  type (  k  )  ==  "число",  то k  =  tostring (  k  ) конец r [  k  ]  =  v конец  - для k, v еще г  =  г конец вернуть  гконец  - fetch () фигура локальной функции  ( добавление , опции )    - Расширить параметры правилом из #invoke strings - Предварительное условие: - append - строка или ноль; запрошенное правило - варианты - таблица; Детали - ++ .key - ++. шаблон - Постусловие: - Таблица последовательности возврата местные  r  =  параметры если  type (  append  )  ==  "строка",  то местная  история  =  мв . текст . обрезать (  добавить  ) local  sub  =  story : match (  "^ / (. *% S) / $"  ) если  type (  sub  )  ==  "строка",  то sub  =  sub : gsub (  "%%!" ,  "|"  ) sub  =  sub : gsub (  "%%% (% (" ,  "{{"  ) sub  =  sub : gsub (  "%%%)%)" ,  "}}"  ) варианты . шаблон  =  суб варианты . ключ  =  ноль еще варианты . ключ  =  история варианты . шаблон  =  ноль конец конец вернуть  гконец  - цифра () заполнение локальной функции  ( указано )   - Разделить строку требований, разделенную знаком '=' - Предварительное условие: - указано - строка или ноль; запрошенный набор параметров - Постусловие: - Таблица последовательности возврата - Использует: - mw.text.split () местный  р если  указано  то местный  я ,  с г  =  мвт . текст . разделить (  указано ,  "% s * =% s *"  ) для  i  =  # r ,  1 ,  - 1  сделать s  =  r [  я  ] если  # s  ==  0,  то table.remove (  г ,  я  ) конец конец  - для i, -1 еще г  =  {  } конец вернуть  гконец  - заполнить () завершение локальной функции  ( отправка , параметры , фрейм )     - Завершить сообщение - Предварительное условие: - submit - строка или false или nil; непустое сообщение об ошибке - параметры - таблица или ноль; необязательные детали - options.format - options.preview - options.cat - options.template - кадр - объект, или ложь - Постусловие: - Возвращает строку или ложь - Использует: -- фабрика() местный  r  =  false если  отправить,  то local  opt ,  s местный  ленивый  =  ложь местное  шоу  =  ложь если  type (  options  )  ==  "table",  то opt  =  параметры show  =  opt . формат ленивый  =  (  показать  ==  ""  или  показать  ==  "0"  или  показать  ==  "-"  ) s  =  опт . предварительный просмотр если  type (  s  )  ==  "строка"  и s  ~ =  ""  и  s  ~ =  "0"  и  s  ~ =  "-",  тогда если  ленив,  то показать  =  "" ленивый  =  ложный конец если  не  кадр,  то frame  =  mw . getCurrentFrame () конец если  frame : preprocess (  "{{REVISIONID}}"  )  ==  "",  то если  s  ==  "1",  то показать  =  "*" еще показать  =  s конец конец конец еще opt  =  {  } конец если  ленив,  то если  не  опт . кот  тогда r  =  string.format (  "% s% s" , отправить ,  фабрика (  "noMSGnoCAT"  )  ) конец еще r  =  отправить конец если  г  и  не  ленив,  то местный  я если  не  показать  или  показать  ==  "*",  то show  =  "<span class = \" error \ " > @@@ </span>" конец i  =  show : find (  "@@@" ,  1 ,  истина  ) если  я  тогда - Нет gsub (), поскольку r может содержать "% 3" (например, URL) r  =  string.format (  "% s% s% s" , показать : sub (  1 ,  i  -  1  ), г , показать : sub (  i  +  3  )  ) еще r  =  показать конец конец s  =  опт . Кот если  type (  s  )  ==  "строка",  то если  опт . errNS  тогда местный  ns  =  mw . название . getCurrentTitle (). пространство имен локальная  й  =  тип (  опт . errNS  ) если  st  ==  "строка",  то local  space  =  string.format (  ". * %% s% d %% s. *" ,  нс  ) локальные  пространства  =  String.Format (  "% s" ,  опт . errNS  ) если  пробелы : совпадение (  пробел  ),  то опт . errNS  =  ложь конец elseif  st  ==  "table"  тогда для  i  =  1 ,  # опт . ошибки  делать если  опт . errNS [  i  ]  ==  ns,  тогда опт . errNS  =  ложь перерыв  - для меня конец конец  - для я конец конец если  опт . errNS  тогда г  =  "" еще если  не  г,  то г  =  "" конец если  s : find (  "@@@"  ),  то если  тип (  опт . шаблон  )  ==  "строка",  то s  =  s : GSUB (  "@@@" ,  опт . шаблон  ) конец конец местный  я местные  кошки  =  mw . текст . split (  s ,  "% s * #% s *"  ) для  i  =  1 ,  # кошки  делают s  =  mw . текст . обрезать (  кошки [  i  ]  ) если  # s  >  0,  то r  =  string.format (  "% s [[Категория:% s]]" ,  r ,  s  ) конец конец  - для я конец конец конец вернуть  гконец  - финализировать ()локальный  поиск функций  ( стог сена , иголка )    - Найдите иголку в последовательности стога сена - Предварительное условие: - стог сена - стол; последовательность ключевых имен, в нижнем регистре, если низкий - игла - любая; ключевое имя - Постусловие: - Вернуть истину, если найден местный  я для  i  =  1 ,  # стог сена  делать если  стог сена [  i  ]  ==  иголка,  то вернуть  истину конец конец  - для я вернуть  ложьконец  - искатель () исправление локальной функции  ( действительно , долг , получено , опции )      - Выполнить анализ параметров - Предварительное условие: - действительный - таблица; уникальная последовательность известных параметров - дежурный - стол; последовательность обязательных параметров - получил - стол; последовательность текущих параметров - параметры - таблица или ноль; необязательные детали - Постусловие: - Вернуть строку в соответствии с настройками; пусто, если допустимо - Использует: - искатель () -- вина() -- отказ() -- кормили() местный  k ,  v местный  r  =  false для  к ,  v  в  парах (  есть  )  сделать если  не  искатель (  действительно ,  k  ),  то r  =  неисправность (  r ,  k  ) конец конец  - для k, v если  г,  то r  =  сбой (  "неизвестно" , string.format (  "'% s'" ,  r  ), варианты  ) else  - все имена действительны местный  я ,  с для  i  =  1 ,  # обязанность  делать s  =  обязанность [  i  ] если  не  накормил (  получил ,  с  )  то r  =  неисправность (  r ,  s  ) конец конец  - для я если  г,  то r  =  сбой (  «не определено» ,  r ,  параметры  ) else  - все обязательный подарок для  i  =  1 ,  # обязанность  делать s  =  обязанность [  i  ] если  не  получил [  s  ]  то r  =  неисправность (  r ,  s  ) конец конец  - для я если  г,  то r  =  сбой (  "пусто" ,  r ,  варианты  ) конец конец конец вернуть  гконец  - исправить ()локальная  функциональная  квартира (  коллекция ,  опции  ) - Вернуть все элементы таблицы с нижней строкой - Предварительное условие: - коллекция - стол; k = v пар - параметры - таблица или ноль; дополнительные сведения об обмене сообщениями - Постусловие: - Таблица возврата, может быть пуста; или строка с сообщением об ошибке. - Использует: - mw.ustring.lower () -- вина() -- отказ() местный  k ,  v местный  r  =  {  } местный  е  =  ложь для  к ,  v  в  парах (  сборник  )  делать если  type  (  k  )  ==  "строка",  то k  =  mw . ustring . нижний (  k  ) если  r [  k  ],  то e  =  неисправность (  e ,  k  ) конец конец r [  k  ]  =  v конец  - для k, v если  е,  то r  =  отказ (  "multiSpell" ,  e ,  варианты  ) конец вернуть  гконец  - плоский ()локальная  функция  сворачивания (  опции  ) - Объедините две таблицы, создайте новую последовательность, если обе не пусты - Предварительное условие: - варианты - таблица; Детали - options. обязательная последовательность оставить без изменений - options.optional последовательность, которую нужно добавить - options.low в нижнем регистре ожидается - Постусловие: - Вернуть объединенную таблицу или строку сообщения в случае ошибки - Использует: - искатель () -- вина() -- отказ() -- плоский() местный  i ,  e ,  r ,  s локальная  база  =  параметры . обязательный локальное  расширение  =  параметры . необязательный если  # base  ==  0,  то if  # extend  ==  0  тогда г  =  {  } еще r  =  продлить конец еще if  # extend  ==  0  тогда r  =  база еще е  =  ложь для  i  =  1 ,  # продлить  do s  =  продлить [  я  ] если  искатель (  база ,  с  ),  то e  =  неисправность (  e ,  s  ) конец конец  - для я если  е,  то r  =  отказ (  "dupOpt" ,  e ,  параметры  ) еще г  =  {  } для  i  =  1 ,  # база  do table.insert (  r ,  base [  i  ]  ) конец  - для я для  i  =  1 ,  # продлить  do table.insert (  r ,  расширить [  i  ]  ) конец  - для я конец конец конец если  варианты . low  и  введите (  r  )  ==  "table",  затем r  =  плоский (  r ,  варианты  ) конец вернуть  гконец  - сложить () форма локальной функции  ( свет , опции , рамка )     - Запустить анализ параметров в текущей среде - Предварительное условие: - светлый - правда: включение шаблона; false: #invoke - параметры - таблица или ноль; необязательные детали - опции. обязательные - options.optional - кадр - объект, или ложь - Постусловие: - Возвращаемая строка с сообщением об ошибке, как настроено; - ложь, если действительна - Использует: -- складывать() -- принести() -- исправить() - финализировать () местная  пошлина ,  r если  type (  options  )  ==  "table",  то если  тип (  параметры . обязательный  )  ~ =  "таблица",  то варианты . обязательный  =  {  } конец пошлина  =  варианты . обязательный если  тип (  параметры . необязательно  )  ~ =  "таблица",  то варианты . необязательный  =  {  } конец r  =  fold (  варианты  ) еще options  =  {  } обязанность  =  {  } г  =  {  } конец если  type (  r  )  ==  "table",  то local  got  =  fetch (  свет ,  параметры  ) если  type (  got  )  ==  "table",  то r  =  fix (  r ,  duty ,  got ,  options  ) еще r  =  получил конец конец вернуть  finalize (  r ,  options ,  frame  )конец  - форма () формат локальной функции  ( анализ , опции )    - Проверить действительность значения - Предварительное условие: - анализировать - строка для анализа - параметры - таблица или ноль; необязательные детали - options.say - options.min - options.max - Постусловие: - Возвращаемая строка с сообщением об ошибке, как настроено; - false, если правильный или ответ не разрешен - Использует: -- достижимый() -- отказ() локальный  r  =  выполнимо (  анализировать ,  варианты ,  ложь  ) местное  шоу если  варианты . min,  а  не  r,  тогда если  type (  options . min  )  ==  "number",  то если  type (  options . max  )  ==  "number",  то если  варианты . max  <  options . мин  тогда r  =  сбой (  "minmax" , string.format (  "% d>% d" , варианты . мин , варианты . макс  ), варианты  ) конец конец if  # анализировать  <  options . min,  а  не  r,  тогда show  =  "<"  ..  options . мин если  варианты . скажи  тогда show  =  string.format (  "% s '% s'" ,  показать ,  параметры . скажем  ) конец r  =  отказ (  "tooShort" ,  показать ,  параметры  ) конец еще r  =  ошибка (  «invalidPar» ,  «min» ,  параметры  ) конец конец если  варианты . макс,  а  не  r  тогда если  type (  options . max  )  ==  "number",  то если  # анализировать  >  параметры . макс  тогда show  =  ">"  ..  options . Максимум если  варианты . скажи  тогда show  =  string.format (  "% s '% s'" ,  показать ,  параметры . скажем  ) конец r  =  отказ (  "слишком долго" ,  показать ,  параметры  ) конец еще r  =  ошибка (  «invalidPar» ,  «max» ,  параметры  ) конец конец вернуть  гконец  - формат ()локальная  функция  отформатирована (  назначение ,  доступ ,  опции  ) - Проверить достоверность одного конкретного параметра в коллекции - Предварительное условие: - задание - сбор - access - id параметра в коллекции - параметры - таблица или ноль; необязательные детали - Постусловие: - Возвращаемая строка с сообщением об ошибке, как настроено; - false, если правильный или ответ не разрешен - Использует: - mw.text.trim ()  - формат () -- отказ() местный  r  =  false если  тип (  назначение  )  ==  "таблица",  то местная  история  =  задание . args [  доступ  ]  или  "" если  type (  access  )  ==  "номер",  то история  =  мв . текст . обрезать (  рассказ  )  конец если  type (  options  )  ~ =  "table",  то options  =  {  } конец варианты . say  =  доступ r  =  формат (  история ,  параметры  ) конец вернуть  гконец  - форматированный ()местная  функциональная  отделка (  рамка ,  действие  ) - Подготовьте оценку #invoke для .assert () или .valid () - Предварительное условие: - рамка - объект; #invoke environment - действие - «утверждать» или «действителен» - Постусловие: - Возвращаемая строка с сообщением об ошибке или "" - Использует: -- форма() -- отказ() - финализировать () - TemplatePar.valid () - TemplatePar.assert () местные  параметры  =  {  обязательный  =  {  "1"  }, необязательный  =  {  "2" , "кот" , "errNS" , "низкий" , "макс" , "мин" , "формат" , "превью" , "template"  }, template  =  string.format (  "& # 35; invoke:% s |% s |" , "TemplatePar" , действие  ) } local  r  =  form (  ложь ,  параметры ,  фрейм  ) если  не  г,  то местные  с options  =  {  cat  =  frame . аргументы . кошка , errNS  =  кадр . аргументы . errNS , низкий  =  рама . аргументы . низкий , формат  =  фрейм . аргументы . формат , предварительный просмотр  =  кадр . аргументы . предварительный просмотр , шаблон  =  рамка . аргументы . шаблон } options  =  figure (  frame . args [  2  ],  options  ) если  type (  frame . args . min  )  ==  "строка",  то s  =  рамка . аргументы . мин : совпадение (  "^% s * ([0-9] +)% s * $"  ) если  s,  то варианты . мин  =  ToNumber (  ы  ) еще r  =  сбой (  "invalidPar" , "min ="  ..  кадр . аргументы . мин , варианты  ) конец конец если  type (  frame . args . max  )  ==  "строка",  то s  =  рамка . аргументы . max : match (  "^% s * ([1-9] [0-9] *)% s * $"  ) если  s,  то варианты . макс  =  ToNumber (  ы  ) еще r  =  сбой (  "invalidPar" , "max ="  ..  кадр . аргументы . макс , варианты  ) конец конец если  г,  то r  =  завершить (  r ,  параметры ,  рамка  ) еще s  =  рамка . args [  1  ]  или  "" г  =  ToNumber (  ы  ) если  (  г  )  то s  =  r конец если  действие  ==  "действителен",  то r  =  TemplatePar . действительный (  s ,  параметры ,  рамка  ) elseif  action  ==  "assert"  тогда r  =  TemplatePar . assert (  s ,  "" ,  параметры  ) конец конец конец вернуть  r  или  ""конец  - отделка ()TemplatePar . assert  =  функция  (  анализировать ,  добавлять ,  параметры  ) - Выполнять анализ параметров одной строки - Предварительное условие: - анализировать - строка для анализа - append - string: добавить сообщение об ошибке с добавлением <br /> - false или nil: вывести ошибку с сообщением - варианты - таблица; необязательные детали - Постусловие: - Возвращаемая строка с сообщением об ошибке, как настроено; - ложь, если действительна - Использует: - формат () локальный  r  =  формат (  анализировать ,  параметры  ) если  (  г  )  то if  (  type (  append  )  ==  "строка"  )  то если  (  добавить  ~ =  ""  ),  то r  =  string.format (  "% s <br />% s" ,  добавить ,  r  ) конец еще ошибка (  г ,  0  ) конец конец вернуть  гконец  - TemplatePar.assert ()TemplatePar . check  =  function  (  параметры  ) - Запустить анализ параметров в текущей среде шаблона - Предварительное условие: - параметры - таблица или ноль; необязательные детали - опции. обязательные - options.optional - Постусловие: - Возвращаемая строка с сообщением об ошибке, как настроено; - ложь, если действительна - Использует: -- форма()  форма возврата (  true ,  options ,  false  )конец  - TemplatePar.check ()TemplatePar . счетчик  =  функция  () - Вернуть количество параметров шаблона - Постусловие: - Возврат числа, начиная с 0 - Использует: - mw.getCurrentFrame () - рамка: getParent () местный  k ,  v местный  r  =  0 местный  t  =  mw . getCurrentFrame (): getParent () местный  o  =  t . аргументы для  к ,  v  в  паре (  о  )  сделать г  =  г  +  1 конец  - для k, v вернуть  гконец  - TemplatePar.count ()TemplatePar . countNotEmpty  =  функция  () - Возвращает количество параметров шаблона с большим количеством пробелов - Постусловие: - Возврат числа, начиная с 0 - Использует: - mw.getCurrentFrame () - рамка: getParent () местный  k ,  v местный  r  =  0 местный  t  =  mw . getCurrentFrame (): getParent () местный  o  =  t . аргументы для  к ,  v  в  паре (  о  )  сделать если  не  v : match (  "^% s * $"  ),  то г  =  г  +  1 конец конец  - для k, v вернуть  гконец  - TemplatePar.countNotEmpty ()TemplatePar . downcase  =  функция  (  параметры  ) - Вернуть все параметры шаблона с именем в нижнем регистре - Предварительное условие: - параметры - таблица или ноль; дополнительные сведения об обмене сообщениями - Постусловие: - Таблица возврата, может быть пуста; или строка с сообщением об ошибке. - Использует: - mw.getCurrentFrame () - рамка: getParent () -- плоский() местный  t  =  mw . getCurrentFrame (): getParent () возврат  квартиры (  т . аргументы ,  варианты  )конец  - TemplatePar.downcase ()TemplatePar . действительный  =  функция  (  доступ ,  параметры ,  фрейм  ) - Проверить валидность одного конкретного параметра шаблона - Предварительное условие: - access - id параметра в включении шаблона - строка или число - параметры - таблица или ноль; необязательные детали - рамка - объект; #invoke environment - Постусловие: - Возвращаемая строка с сообщением об ошибке, как настроено; - false, если правильный или ответ не разрешен - Использует: - mw.text.trim () - TemplatePar.downcase () - рамка: getParent () - форматированный () -- отказ() - финализировать () локальный  r  =  тип (  доступ  ) если  r  ==  "строка",  то г  =  мвт . текст . обрезать (  доступ  ) если  # r  ==  0,  то г  =  ложь конец elseif  r  ==  "число"  тогда r  =  доступ еще г  =  ложь конец если  г,  то местные  параметры если  type (  options  )  ~ =  "table",  то options  =  {  } конец если  варианты . тогда низко  params  =  TemplatePar . вниз (  варианты  ) еще params  =  frame : getParent () конец r  =  форматированный (  параметры ,  доступ ,  параметры  ) еще r  =  отказ (  "без названия" ,  ложь ,  параметры  ) конец вернуть  finalize (  r ,  options ,  frame  )конец  - TemplatePar.valid ()TemplatePar . verify  =  function  (  параметры  ) - Выполните анализ параметров #invoke - Предварительное условие: - параметры - таблица или ноль; необязательные детали - Постусловие: - Возвращаемая строка с сообщением об ошибке, как настроено; - ложь, если действительна - Использует: -- форма()  форма возврата (  false ,  options ,  false  )конец  - TemplatePar.verify ()- Обеспечить внешний доступместный  p  =  {}функция  p . assert (  фрейм  ) - Выполнить анализ параметров для какой-то одной строки - Предварительное условие: - рамка - объект; #invoke environment - Постусловие: - Возвращаемая строка с сообщением об ошибке или "" - Использует: - отделка () вернуть  отделку (  рамка ,  "отстаивать"  )конец  - .assert ()функция  p . чек (  рамка  ) - Проверить правильность параметров шаблона - Предварительное условие: - рамка - объект; #invoke environment - Постусловие: - Возвращаемая строка с сообщением об ошибке или "" - Использует: -- форма() -- наполнять() local  options  =  {  optional  =  {  "все" , "opt" , "кот" , "errNS" , "низкий" , "формат" , "превью" , "template"  }, template  =  "& # 35; invoke: TemplatePar | check |" } local  r  =  form (  ложь ,  параметры ,  фрейм  ) если  не  г,  то options  =  {  обязательный  =  заливка (  фрейм . аргументы . все  ), необязательный  =  заливка (  frame . args . opt  ), кошка  =  рамка . аргументы . кошка , errNS  =  кадр . аргументы . errNS , низкий  =  рама . аргументы . низкий , формат  =  фрейм . аргументы . формат , предварительный просмотр  =  кадр . аргументы . предварительный просмотр , шаблон  =  рамка . аргументы . шаблон } r  =  форма (  истина ,  параметры ,  рамка  ) конец вернуть  r  или  ""конец  - .check ()функция  p . количество (  кадр  ) - Подсчитать количество параметров шаблона - Постусловие: - Возвращает строку с цифрами, включая "0" - Использует: - TemplatePar.count () возврат в  строку (  TemplatePar . count ()  )конец  - .count ()функция  p . countNotEmpty (  кадр  ) - Подсчитать количество параметров шаблона, которые не являются пустыми - Постусловие: - Возвращает строку с цифрами, включая "0" - Использует: - TemplatePar.countNotEmpty () возврат в  строку (  TemplatePar . countNotEmpty ()  )конец  - .countNotEmpty ()функция  p . матч (  кадр  ) - Комбинированный анализ параметров и их значений - Постусловие: - Возвращаемая строка с сообщением об ошибке или "" - Использует: - mw.text.trim () - mw.ustring.lower () -- отказ() -- форма() - TemplatePar.downcase () -- фигура() -- достижимый() -- вина() - финализировать () местный  r  =  false местные  параметры  =  {  cat  =  frame . аргументы . кошка , errNS  =  кадр . аргументы . errNS , низкий  =  рама . аргументы . низкий , формат  =  фрейм . аргументы . формат , предварительный просмотр  =  кадр . аргументы . предварительный просмотр , шаблон  =  рамка . аргументы . шаблон } местный  k ,  v ,  s местные  параметры  =  {  } для  к ,  v  в  парах (  кадр . арг  )  делают если  type (  k  )  ==  "число",  то s ,  v  =  v : match (  "^ * ([^ =] +) * = * (% S. *% S *) * $»  ) если  s,  то s  =  mw . текст . обрезка (  и  ) если  s  ==  ""  тогда s  =  ложь конец конец если  s,  то если  варианты . тогда низко  s  =  mw . ustring . нижний (  и  ) конец если  params [  s  ],  то s  =  params [  s  ] s [  # s  +  1  ]  =  v еще params [  s  ]  =  {  v  } конец еще r  =  ошибка (  "invalidPar" ,  tostring (  k  ),  параметры  ) перерыв  - для k, v конец конец конец  - для k, v если  не  г,  то s  =  {  } для  к ,  V  в  паре (  Params  )  делает s [  # s  +  1  ]  =  k конец  - для k, v варианты . необязательный  =  s r  =  форма (  истина ,  параметры ,  рамка  ) конец если  не  г,  то локальный  errMiss ,  errValues ,  Отсутствие ,  правило локальные  targs  =  frame : getParent (). аргументы варианты . необязательный  =  ноль если  варианты . тогда низко  targs  =  TemplatePar . вниз () еще targs  =  кадр : getParent (). аргументы конец errMiss  =  ложь errValues  =  false для  к ,  V  в  паре (  Params  )  делает варианты . скажи  =  k errValue  =  false s  =  targs [  k  ] если  s,  то если  s  ==  ""  тогда недостаток  =  правда еще Отсутствие  =  ложь конец еще s  =  "" недостаток  =  правда конец для  г ,  правил  в  паре (  v  )  делать options  =  цифра (  правило ,  параметры  ) r  =  выполнимо (  s ,  варианты ,  верно  ) если  г,  то если не  хватает,  то если  errMiss,  то errMiss  =  string.format (  "% s, '% s'" , errMiss ,  k  ) еще errMiss  =  string.format (  "'% s'" ,  k  ) конец ElseIf  не  errMiss  то errValues  =  ошибка (  errValues ,  r  ) конец перерыв  - для r, правило конец конец  - для s, правило конец  - для k, v r  =  (  errMiss  или  errValues  ) если  г,  то если  errMiss,  то r  =  отказ (  "неопределено" ,  errMiss ,  параметры  ) еще r  =  сбой (  "недопустимый" ,  errValues ,  параметры  ) конец r  =  завершить (  r ,  параметры ,  рамка  ) конец конец вернуть  r  или  ""конец  - .match ()функция  p . действительный (  фрейм  ) - Проверить валидность одного конкретного параметра шаблона - Предварительное условие: - рамка - объект; #invoke environment - Постусловие: - Возвращаемая строка с сообщением об ошибке или "" - Использует: - отделка () возвратная  отделка (  рамка ,  "действительна"  )конец  - .valid ()функция  p . TemplatePar () - Получить доступ к функциям для модулей - Постусловие: - Таблица возврата с функциями return  TemplateParконец  - .TemplatePar ()вернуть  p