Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску
Документация по модулю [ создать ]
require ( 'Модуль: без глобальных переменных' )местный  p  =  {}местное  название  =  mw . название . getCurrentTitle ()локальное  пространство имен  =  заголовок . пространство именlocal  testcases  =  ( string.sub ( title . subpageText , 1 , 9 )  ==  'testcases' )- [[============================================== ============================]]- [[Функции категории]]- [[============================================== ============================]]функция  p . getCatForId (  идентификатор  )местное  catName  =  ''если  пространство имен  ==  0,  тоcatName  =  'Статьи Википедии с идентификаторами ' .. id .. 'elseif  namespace  ==  2,  а  не  title . isSubpage  тогдаcatName  =  'Страницы пользователей с идентификаторами ' .. id .. 'ещеcatName  =  'Разные страницы с идентификаторами ' .. id .. 'конецreturn  '[[Категория:' .. catName .. ']]' .. p . redCatLink ( catName )конецфункция  p . redCatLink (  catName  )  --catName == 'Blah' (не 'Category: Blah', а не '[[Category: Blah]]')если  catName  и  catName  ~ =  ''  и testcases  ==  false  и мв . название . новый ( catName ,  14 ). существует  ==  ложьтогдаreturn  '[[Категория: страницы с красными ссылками на категории контроля доступа]]'конецвернуться  ''конецфункция  p . createRow (  идентификатор ,  метка ,  rawValue ,  ссылка ,  withUid ,  specialCat  )если  ссылка  тоесли  withUid  тоreturn  '* <span class = "nowrap">' .. label .. '<span class = "uid">' .. link .. '</span> </span> \ n 'конецreturn  '* <span class = "nowrap">' .. label .. '' .. link .. '</span> \ n 'конецlocal  catName  =  'Статьи Википедии с ошибочными' .. ( specialCat  или  id ) .. 'идентификаторами'return  '* <span class = "error">' .. id .. 'id' .. rawValue .. 'недействительно. </span> [[Категория:' .. catName .. ']]' . . p . redCatLink ( catName ) .. ' \ n 'конец- [[============================================== ============================]]- [[Функции форматирования свойств]]- [[============================================== ============================]]- Если ссылка имеет подходящую запись в глобальной таблице префиксов между вики в [[: m: Interwiki_map]], рассмотрите возможность маршрутизации через этот префикс, а не как URL внешней ссылки. Это упростит обслуживание в будущем, поскольку необходимые обновления ссылки можно будет выполнять централизованно, а не путем обновления этого модуля. Значок «внешняя ссылка» исчезнет для таких записей.функция  p . aagLink (  идентификатор  )- Регулярное выражение формата P3372: \ d + (например, 1)если  не  id : match (  '^% d + $'  ),  товернуть  ложьконецreturn  '[https://www.aucklandartgallery.com/explore-art-and-ideas/artist/' .. id .. '/ Художественная галерея Окленда]' .. стр . getCatForId (  'AAG'  )конецфункция  p . adbLink (  идентификатор  )Регулярное выражение формата --P1907: [az] [- az] + - ([1-2] \ d | [1-9]) \ d {0,3} (например, barton-sir-edmund-toby-71)если  не  id : match (  '^ [az] [- az] + - [1-2]% d% d?% d?% d? $'  )  и not  id : match (  '^ [az] [- az] + - [1-9]% d?% d?% d? $'  )  тогдавернуть  ложьконецreturn  '[http://adb.anu.edu.au/biography/' .. id .. '' .. id .. ']' .. p . getCatForId (  'ADB'  )конецфункция  p . agsaLink (  идентификатор  )- Регулярное выражение формата P6804: [1-9] \ d * (например, 3625)если  не  id : match (  '^ [1-9]% d * $'  ),  товернуть  ложьконецreturn  '[https://www.agsa.sa.gov.au/collection-publications/collection/creators/_/' .. id .. '/' .. id .. ']' .. p . getCatForId (  'AGSA'  )конецфункция  p . awrLink (  идентификатор  )- Регулярное выражение формата P4186: (([AZ] {3} \ d {4}) | ([AZ] {2} \ d {5})) [az] (например, PR00768b)если  не  идентификатор : совпадение (  '^ [AZ] [AZ] [AZ]% d% d% d% d [az] $'  )  и not  id : match (  '^ [AZ] [AZ]% d% d% d% d% d [az] $'  ),  затемвернуть  ложьконецreturn  '[http://www.womenustralia.info/biogs/' .. id .. '.htm' .. id .. ']' .. p . getCatForId (  'AWR'  )конецфункция  p . balatLink (  id  )- Регулярное выражение формата P3293: \ d + (например, 1)если  не  id : match (  '^% d + $'  ),  товернуть  ложьконецreturn  '[http://balat.kikirpa.be/object/104257' .. id .. '' .. id .. ']' .. p . getCatForId (  'BALaT'  ) - нет  https по состоянию на 9/2019конецфункция  p . bnfLink (  идентификатор  )- Регулярное выражение формата P268: \ d {8} [0-9bcdfghjkmnpqrstvwxz] (например, 123456789)если  не  id : match (  '^ c? b?% d% d% d% d% d% d% d% d [0-9bcdfghjkmnpqrstvwxz] $'  ),  товернуть  ложьконец- Добавить префикс cb, если он был удаленесли  не  id : match (  '^ cb. + $'  ),  тоid  =  'cb' .. idконецreturn  '[https://catalogue.bnf.fr/ark:/12148/' .. id .. '' .. id .. '] [https://data.bnf.fr/ark:/12148/' .. id .. '(данные)]' .. p . getCatForId (  'BNF'  )конецфункция  p . bpnLink (  идентификатор  )- Регулярное выражение формата P651: \ d {6,8} (например, 00123456)если  не  id : match (  '^% d% d% d% d% d% d% d% d $'  )  и  регулярное выражение --original format, изменено 8/2019 на not  id : match (  '^ 0?% d% d% d% d% d% d% d $'  )  и  --allow 1-2 ведущих 0, разрешенных веб-сайтом not  id : match (  '^ 0? 0?% d% d% d% d% d% d $'  )  тогдавернуть  ложьконецreturn  '[http://www.biografischportaal.nl/en/persoon/' .. id .. '' .. id .. ']' .. p . getCatForId (  'BPN'  ) - нет  https по состоянию на 9/2019конецфункция  p . fnzaLink (  идентификатор  )- Регулярное выражение формата P6792: [1-9] \ d * (например, 9785)если  не  id : match (  '^ [1-9]% d * $'  ),  товернуть  ложьконецreturn  '[https://findnzartists.org.nz/artist/' .. id .. '/' .. id .. ']' .. p . getCatForId (  'FNZA'  )конецфункция  p . gndLink (  идентификатор  )- Регулярное выражение формата P227: 1 [012]? \ D {7} [0-9X] | [47] \ d {6} - \ d | [1-9] \ d {0,7} - [0- 9X] | 3 \ d {7} [0-9X] (например, 4079154-3)если  не  id : match (  '^ 1 [012]?% d% d% d% d% d% d% d [0-9X] $'  )  и not  id : match (  '^ [47]% d% d% d% d% d% d% -% d $'  )  и не  id : match (  '^ [1-9]% d?% d?% d?% d?% d?% d?% d?% - [0-9X] $'  )  и not  id : match (  '^ 3% d% d% d% d% d% d% d [0-9X] $'  ),  затемвернуть  ложьконецreturn  '[https://d-nb.info/gnd/' .. id .. '' .. id .. ']' .. p . getCatForId (  'GND'  )конецфункция  p . iciaLink (  идентификатор  )- Регулярное выражение формата P1736: \ d + (например, 1)если  не  id : match (  '^% d + $'  ),  товернуть  ложьконецreturn  '[https://www.imj.org.il/artcenter/newsite/en/?artist=' .. id .. '' .. id .. ']' .. стр . getCatForId (  'ICIA'  )конецфункция  p . isniLink (  идентификатор  )id  =  p . validateIsni (  id  ) -  например, 0000-0000-6653-4145если  не  идентификатор,  товернуть  ложьконецreturn  '[https://isni.org/isni/' .. id .. '' .. id : sub (  1 ,  4  ) .. '' .. id : sub (  5 ,  8  ) .. '' . . id : sub (  9 ,  12  ) .. '' .. id : sub (  13 ,  16  ) .. ']' .. p . getCatForId ( 'ISNI'  ) - нет  https по состоянию на 9/2019.конецфункция  p . jocondeLink (  id  )Регулярное выражение формата --P347: [\ -0-9A-Za-z] {11} (например, 12345678901)локальное  регулярное выражение  =  '^' .. string.rep ( '[% -0-9A-Za-z]' ,  11 ) .. '$'если  не  id : match (  regex  ),  товернуть  ложьконецreturn  '[https://www.pop.culture.gouv.fr/notice/joconde/' .. id .. '' .. id .. ']' .. p . getCatForId (  'Joconde'  )конецфункция  p . kulturnavLink (  id  )- Регулярное выражение формата P1248: [0-9a-f] {8} \ - [0-9a-f] {4} \ - [0-9a-f] {4} \ - [0-9a-f] { 4} \ - [0-9a-f] {12} (например, 12345678-1234-1234-1234-1234567890AB)если  не  id : match (  '^% x% x% x% x% x% x% x% x% -% x% x% x% x% -% x% x% x% x% -% x% x % x% x% -% x% x% x% x% x% x% x% x% x% x% x% x $ '  )  затемвернуть  ложьконецreturn  '[http://kulturnav.org/' .. id .. '' .. id .. ']' .. p . getCatForId (  'KULTURNAV'  ) - нет  https по состоянию на 9/2019конецфункция  p . lccnLink (  идентификатор  )местные  части  =  п . splitLccn (  id  ) -  например, n78039510если  не  части,  товернуть  ложьконецlocal  lccnType  =  parts [ 1 ]  ~ =  'sh'  и  'имена'  или  'темы'id  =  parts [ 1 ]  ..  parts [ 2 ]  ..  p . добавить (  части [ 3 ],  '0' ,  6  )return  '[https://id.loc.gov/authorities/' .. lccnType .. '/' .. id .. '' .. id .. ']' .. p . getCatForId (  'LCCN'  )конецфункция  p . leonoreLink (  id  )- Регулярное выражение формата P640: LH / \ d {1,4} / \ d {1,3} | 19800035 / \ d {1,4} / \ d {1,5} (Bis)? | C / 0 / \ d {1,2} (например, LH / 2064/18)если  не  id : match (  '^ LH /% d% d?% d?% d? /% d% d?% d? $'  )  и  --ID от LH / 1/1 до LH / 2794/54 ( легионеры) not  id : match (  '^ 19800035 /% d% d?% d?% d? /% d% d?% d?% d?% d? $'  )  и  --ID от 19800035/1/1 до 19800035 / 385/51670 (легионеры, умершие в 1954-1977 гг. И некоторые умершие <1954 г.) не  id : match (  '^ C / 0 /% d% d? $'  )  затем  --ID от C / 0/1 до C / 0/84 (84 известных легионера)вернуть  ложьконецreturn  '[http://www.culture.gouv.fr/public/mistral/leonore_fr?ACTION=CHERCHER&FIELD_1=COTE&VALUE_1=' .. id .. '' .. id .. ']' .. стр . getCatForId (  'Léonore'  ) - нет  https по состоянию на 9/2019конецфункция  p . naraLink (  идентификатор  )- Регулярное выражение формата P1225: ^ ([1-9] \ d {0,8}) $ (например, 123456789)если  не  id : match (  '^ [1-9]% d?% d?% d?% d?% d?% d?% d?% d? $'  ),  товернуть  ложьконецreturn  '[https://catalog.archives.gov/id/' .. id .. '' .. id .. ']' .. стр . getCatForId (  'НАРА'  )конецфункция  p . ngvLink (  идентификатор  )- Регулярное выражение формата P2041: \ d + (например, 12354)если  не  id : match (  '^% d + $'  ),  товернуть  ложьконецreturn  '[https://www.ngv.vic.gov.au/explore/collection/artist/' .. id .. '/' .. id .. ']' .. p . getCatForId (  'NGV'  )конецфункция  p . nlaLink (  идентификатор  )- Регулярное выражение формата P409: [1-9] [0-9] {0,11} (например, 123456789012)если  не  id : match (  '^ [1-9]% d?% d?% d?% d?% d?% d?% d?% d?% d?% d?% d? $'  ),  товернуть  ложьконецreturn  '[https://nla.gov.au/anbd.aut-an' .. id .. '' .. id .. ']' .. p . getCatForId (  'NLA'  )конецфункция  p . orcidLink (  идентификатор  )id  =  p . validateIsni (  id  ) -  например, 0000-0002-7398-5483если  не  идентификатор,  товернуть  ложьконецid  =  id : sub (  1 ,  4  ) .. '-' .. id : sub (  5 ,  8  ) .. '-' .. id : sub (  9 ,  12  ) .. '-' .. id : sub (  13 ,  16  )return  '[https://orcid.org/' .. id .. '' .. id .. ']' .. p . getCatForId (  'ORCID'  )конецфункция  p . rkdartistsLink (  идентификатор  )- Регулярное выражение формата P650: [1-9] \ d {0,5} (например, 123456)если  не  id : match (  '^ [1-9]% d?% d?% d?% d?% d? $'  ),  товернуть  ложьконецreturn  '[https://rkd.nl/en/explore/artists/' .. id .. '' .. id .. ']' .. p . getCatForId (  'RKDartists'  )конецфункция  p . rkdidLink (  идентификатор  )- Регулярное выражение формата P350: [1-9] \ d {0,5} (например, 123456)если  не  id : match (  '^ [1-9]% d?% d?% d?% d?% d? $'  ),  товернуть  ложьконецreturn  '[https://rkd.nl/nl/explore/images/' .. id .. '' .. id .. ']' .. стр . getCatForId (  'RKDID'  )конецфункция  p . sikartLink (  id  )- Регулярное выражение формата P781: \ d {7,9} (например, 123456789)если  не  id : match (  '^% d% d% d% d% d% d% d% d?% d? $'  ),  товернуть  ложьконецreturn  '[http://www.sikart.ch/KuenstlerInnen.aspx?id=' .. id .. '& lng = en' .. id .. ']' .. p . getCatForId (  'SIKART'  ) - нет  https по состоянию на 9/2019конецфункция  p . snacLink (  идентификатор  )Регулярное выражение формата --P3430: \ d * [A-Za-z] [0-9A-Za-z] * (например, A)если  не  id : match (  '^% d * [A-Za-z] [0-9A-Za-z] * $'  ),  товернуть  ложьконецreturn  '[https://snaccooperative.org/ark:/99166/' .. id .. '' .. id .. ']' .. стр . getCatForId (  'SNAC-ID'  )конецфункция  p . SudocLink (  идентификатор  )- Регулярное выражение формата P269: (\ d {8} [\ dX] |) (например, 026927608)если  не  id : match (  '^% d% d% d% d% d% d% d% d [% dxX] $'  ),  то  --legacy: разрешить строчную букву 'x'вернуть  ложьконецreturn  '[https://www.idref.fr/' .. id .. '' .. id .. ']' .. p . getCatForId (  'СУДОК'  )конецфункция  p . tepapaLink (  id  )- Регулярное выражение формата P3544: \ d + (например, 1)если  не  id : match (  '^% d + $'  ),  товернуть  ложьконецreturn  '[https://collections.tepapa.govt.nz/agent/' .. id .. '' .. id .. ']' .. p . getCatForId (  'TePapa'  )конецфункция  p . ulanLink (  идентификатор  )- Регулярное выражение формата P245: 500 \ d {6} (например, 500123456)если  не  id : match (  '^ 500% d% d% d% d% d% d $'  ),  товернуть  ложьконецreturn  '[https://www.getty.edu/vow/ULANFullDisplay?find=&role=&nation=&subjectid=' .. id .. '' .. id .. ']' .. стр . getCatForId (  'ULAN'  )конецфункция  p . viafLink (  идентификатор  )- Регулярное выражение формата P214: [1-9] \ d (\ d {0,7} | \ d {17,20}) (например, 123456789, 1234567890123456789012)если  не  id : match (  '^ [1-9]% d% d?% d?% d?% d?% d?% d?% d? $'  )  и not  id : match (  '^ [1-9]% d% d% d% d% d% d% d% d% d% d% d% d% d% d% d% d% d% d% d ?% d?% d? $ '  )  тогдавернуть  ложьконец- Если запись «VIAF» на [[: m: Interwiki map]] будет преобразована в «https://viaf.org/viaf/$1» (вместо «http://viaf.org/viaf/$1» , как и в настоящее время), приведенный ниже код может измениться с '[https://viaf.org/viaf/'..id ..' '..id ..'] 'на' [[: VIAF: ' ..id .. '|' .. id .. ']]'.return  '[https://viaf.org/viaf/' .. id .. '' .. id .. ']' .. p . getCatForId (  'VIAF'  )конец- [[=========================== Вспомогательные функции ================= ============]]функция  p . добавить ( str ,  c ,  length )в то время как  str : len ()  <  длина  делатьstr  =  c  ..  strконецreturn  strконец- Возвращает контрольную цифру ISNI. Isni должна быть строкой, в которой первые 15 элементов являются цифрами, например 0000000066534145.функция  p . getIsniCheckDigit (  исни  )местный  итог  =  0для  i  =  1 ,  15  сделатьlocal  digit  =  isni : byte (  i  )  -  48  - получить целочисленное значениеитого  =  ( итого  +  цифра )  *  2конецлокальный  остаток  =  всего  %  11локальный  результат  =  ( 12  -  остаток )  %  11если  результат  ==  10,  товернуть  "X"конецвозврат в  строку (  результат  )конец--Проверить ISNI (и ORCID) и преобразовать его как строку из 16 символов или вернуть false, если он недействителен- См. Http://support.orcid.org/knowledgebase/articles/116780-structure-of-the-orcid-identifierфункция  p . validateIsni (  идентификатор  )--P213 (ISNI) регулярное выражение формата: [0-9] {4} [0-9] {4} [0-9] {4} [0-9] {3} [0-9X] (например, 0000- 0000-6653-4145)- Регулярное выражение формата P496 (ORCID): 0000-000 (1- [5-9] | 2- [0-9] | 3- [0-4]) \ d {3} - \ d {3} [\ dX] (например, 0000-0002-7398-5483)id  =  id : gsub (  '[% -]' ,  ''  ): upper ()если  не  id : match (  '^% d% d% d% d% d% d% d% d% d% d% d% d% d% d% d [% dX] $'  ),  товернуть  ложьконецесли  п . getIsniCheckDigit (  id  )  ~ =  string.char (  id : byte (  16  )  ),  затемвернуть  ложьконецвернуть  идентификаторконецфункция  p . splitLccn (  идентификатор  )- Регулярное выражение формата P244: (n | nb | nr | no | ns | sh) ([4-9] [0-9] | 00 | 20 [0-1] [0-9]) [0-9] {6} (например, n78039510)если  id : match (  '^% l% l?% l?% d% d% d% d% d% d% d% d% d?% d? $'  ),  тоid  =  id : gsub (  '^ (% l +) (% d +) (% d% d% d% d% d% d) $' ,  '% 1 /% 2 /% 3'  )конецесли  id : match (  '^% l% l?% l? /% d% d% d?% d? /% d + $'  ),  товернуть  мв . текст . разделить (  идентификатор ,  '/'  )конецвернуть  ложьконец- [[============================================== ============================]]- [[Функции Викиданных и документации]]- [[============================================== ============================]]функция  p . getIdsFromWikidata (  itemId ,  свойство  )местные  идентификаторы  =  {}локальные  операторы  =  mw . викибаза . getBestStatements (  itemId ,  свойство  )если  утверждения,  тоfor  _ ,  оператор  в  ipairs (  операторы  )  doесли  заявление . mainsnak . DataValue  затемtable.insert (  идентификаторы ,  утверждение . mainsnak . DataValue . значение  )конецконецконецвернуть  идентификаторыконецфункция  p . matchWikidataRequirements (  itemId ,  reqs  )для  _ ,  группа  в  ipairs (  reqs  )  делатьlocal  property  =  'P' .. group [ 1 ]местный  qid  =  группа [ 2 ]локальные  операторы  =  mw . викибаза . getBestStatements (  itemId ,  свойство  )если  утверждения,  тоfor  _ ,  оператор  в  ipairs (  операторы  )  doесли  заявление . mainsnak . DataValue  затемесли  заявление . mainsnak . значение данных . value [ 'numeric-id' ]  ==  qid,  затемвернуть  истинуконец конец конец конец конецвернуть  ложьконец- Создает удобочитаемую автономную версию p.conf, доступную для вики, и отслеживает категории с подсчетом страниц для использования в документации.функция  p . docConfTable (  фрейм  )local  wikiTable  =  '{| class = "wikitable sortable" \ n ' .. '! rowspan = 2 | Параметр \ n ' .. '! rowspan = 2 | Ярлык \ n ' .. '! rowspan = 2; data-sort-type = число | Свойство Викиданных \ n ' .. '! colspan = 4 | Категории отслеживания и количество страниц \ n ' .. '| - \ n ' .. '! [[: Категория: статьи в Википедии с информацией о полномочиях | ' ..  'Статьи]] \ n ' .. '! [[: Категория: Пользовательские страницы с информацией для управления правами | ' ..  'Страницы пользователей]] \ n ' .. '! [[: Категория: Разные страницы с информацией о полномочиях | ' ..  'Разное. страницы]] \ n ' .. '! [[: Категория: статьи в Википедии с неверной информацией о полномочиях | ' .. 'Неверные идентификаторы]] \ n ' .. '| - \ n 'местные  языки  =  мвт . getContentLanguage ()для  _ ,  конф  в  паре (  стр . конф  )  делатьлокальный  параметр ,  ссылка ,  pid  =  conf [ 1 ],  conf [ 2 ],  conf [ 3 ]местная  категория  =  конф . категория  или  параметрлокальные  аргументы  =  {  id  =  'f' ,  pid  }local  wpl  =  frame : expandTemplate {  title  =  'Ссылка на свойство Викиданных' ,  args  =  args  }- кошкиlocal  articleCat  =  'Статьи Википедии с идентификаторами' .. category .. 'local  userCat  =  'Страницы пользователей с идентификаторами' .. category .. 'local  miscCat  =  'Разные страницы с идентификаторами' .. category .. 'local  faultyCat  =  'Статьи Википедии с ошибочными' .. category .. 'идентификаторами'--счетовместный  articleCount  =  языки : formatNum (  мвт . сайт . Статистика . PAGESINCATEGORY ( articleCat ,  'страница' )  )local  userCount  =  lang : formatNum (  mw . site . stats . pagesInCategory ( userCat ,  'страницы' )  )local  miscCount  =  lang : formatNum (  mw . site . stats . pagesInCategory ( miscCat ,  'страницы' )  )local  faultyCount  =  lang : formatNum (  mw . site . stats . pagesInCategory ( faultyCat ,  'страницы' )  )--конкатwikiTable  =  wikiTable .. ' \ n ' ..'| - \ n ' ..'||' .. параметр ..'||' .. ссылка ..'|| data-sort-value =' .. pid .. '|' .. wpl ..'|| style = "text-align: right;" | [[: Категория:' .. articleCat .. '|' .. articleCount .. ']]' ..'|| style = "text-align: right;" | [[: Категория:' ..  userCat .. '|' ..  userCount .. ']]' ..'|| style = "text-align: right;" | [[: Категория:' ..  miscCat .. '|' ..  miscCount .. ']]' ..'|| style = "text-align: right;" | [[: Категория:' ..  faultyCat .. '|' ..  faultyCount .. ']]'конецвернуть  wikiTable .. ' \ n |}'конец- [[============================================== ============================]]- [[Конфигурация]]- [[============================================== ============================]]- Если для идентификатора существует конкретное «(идентификатор) перенаправление», выполните маршрутизацию через это конкретное перенаправление, а не напрямую на целевую страницу. Это уменьшает беспорядок в разделе «Какие ссылки здесь» и улучшает обратный поиск статей, в которых используется проявление этого конкретного идентификатора.- Убедитесь, что элемент Викиданных имеет это свойство -> значение, прежде чем добавлять егоместные  запросы  =  {}- Формат параметра: {'имя параметра', 'метка', propertyId # в Викиданных, функция форматирования / проверки}стр . conf  =  {{  'AAG' ,  '°' ,  3372 ,  стр . aagLink  },{  'ACM-DL' ,  '[[ACM DL (идентификатор) | ACM DL]]' ,  864 ,  стр . acmLink  },{  'ADB' ,  '[[ADB (идентификатор) | ADB]]' ,  1907 ,  стр . adbLink  },{  'AGSA' ,  '[[AGSA (идентификатор) | AGSA]]' ,  6804 ,  стр . agsaLink  },{  'autores.uy' ,  '[[autores.uy (идентификатор) | autores.uy]]' ,  2558 ,  стр . autoresuyLink  },{  'AWR' ,  '[[AWR (идентификатор) | AWR]]' ,  4186 ,  стр . awrLink  },{  'BALaT' ,  '[[BALaT (идентификатор) | BALaT]]' ,  3293 ,  стр . balatLink  },{  'BIBSYS' ,  '[[BIBSYS (идентификатор) | BIBSYS]]' ,  1015 ,  стр . bibsysLink  },{  'Bildindex' ,  '[[Bildindex (идентификатор) | Bildindex]]' ,  2092 ,  стр . bildLink  },{  'BNC' ,  '[[BNC (идентификатор) | BNC]]' ,  1890 ,  стр . bncLink  },{  'BNE' ,  '[[BNE (идентификатор) | BNE]]' ,  950 ,  стр . bneLink  },{  'BNF' ,  '[[BNF (идентификатор) | BNF]]' ,  268 ,  с . bnfLink  },{  'Ботаник' ,  '[[Ботаник (идентификатор) | Ботаник]]' ,  428 ,  стр . botanistLink  },{  'BPN' ,  '[[BPN (идентификатор) | BPN]]' ,  651 ,  стр . bpnLink  },{  'CANTIC' ,  '[[CANTIC (идентификатор) | CANTIC]]' ,  1273 ,  стр . canticLink  },{  'CINII' ,  '[[CiNii (идентификатор) | CiNii]]' ,  271 ,  стр . ciniiLink  },{  'CWGC' ,  '[[CWGC (идентификатор) | CWGC]]' ,  1908 ,  стр . cwgcLink  },{  'DAAO' ,  '[[DAAO (идентификатор) | DAAO]]' ,  1707 ,  стр . daaoLink  },{  'DBLP' ,  '[[DBLP (идентификатор) | DBLP]]' ,  2456 ,  стр . dblpLink  },{  'DSI' ,  '[[DSI (идентификатор) | DSI]]' ,  2349 ,  стр . dsiLink  },{  'FNZA' ,  '[[: d: Property: P6792 | FNZA]]' ,  6792 ,  стр . fnzaLink  },{  'GND' ,  '[[GND (идентификатор) | GND]]' ,  227 ,  стр . gndLink  },{  'HDS' ,  '[[HDS (идентификатор) | HDS]]' ,  902 ,  стр . hdsLink  },{  'ИААФ' ,  '[[ИААФ (идентификатор) | ИААФ]]' ,  1146 ,  стр . iaafLink  },{  'ICCU' ,  '[[ICCU (идентификатор) | ICCU]]' ,  396 ,  стр . iccuLink  }, -  ранее SBN{  'ICIA' ,  '[[ICIA (идентификатор) | ICIA]]' ,  1736 ,  стр . iciaLink  },{  'ISNI' ,  '[[ISNI (идентификатор) | ISNI]]' ,  213 ,  с . isniLink  },{  'Joconde' ,  '[[Joconde (идентификатор) | Joconde]]'  ,  347 ,  стр . jocondeLink  },{  'KULTURNAV' ,  '[[KulturNav (идентификатор) | KulturNav]]' ,  1248 ,  с . kulturnavLink  },{  'LCCN' ,  '[[LCCN (идентификатор) | LCCN]]' ,  244 ,  стр . lccnLink  },{  'LIR' ,  '[[LIR (идентификатор) | LIR]]' ,  886 ,  стр . lirLink  },{  'LNB' ,  '[[LNB (идентификатор) | LNB]]' ,  1368 ,  стр . lnbLink  },{  'Léonore' ,  '[[Léonore (идентификатор) | Léonore]]' ,  640 ,  p . leonoreLink  },{  'MGP' ,  '[[MGP (идентификатор) | MGP]]' ,  549 ,  стр . mgpLink  },{  'NARA' ,  '[[NARA (идентификатор) | NARA]]' ,  1225 ,  стр . naraLink  },{  'NCL' ,  '[[NCL (идентификатор) | NBL]]' ,  1048 ,  стр . nclLink  },{  'NDL' ,  '[[NDL (идентификатор) | NDL]]' ,  349 ,  стр . ndlLink  },{  'NGV' ,  '[[NGV (идентификатор) | NGV]]' ,  2041 ,  стр . ngvLink  },{  'NKC' ,  '[[NKC (идентификатор) | NKC]]' ,  691 ,  стр . nkcLink  },{  'NLA' ,  '[[NLA (идентификатор) | NLA]]' ,  409 ,  стр . nlaLink  },{  'NLG' ,  '[[NLG (идентификатор) | NLG]]' ,  3348 ,  стр . nlgLink  },{  'NLI' ,  '[[NLI (идентификатор) | NLI]]' ,  949 ,  стр . nliLink  },{  'NLK' ,  '[[NLK (идентификатор) | NLK]]' ,  5034 ,  стр . nlkLink  },{  'НЛП' ,  '[[НЛП (идентификатор) | НЛП]]' ,  1695 ,  стр . nlpLink  },{  'NLR' ,  '[[NLR (идентификатор) | NLR]]' ,  1003 ,  стр . nlrLink  },{  'NSK' ,  '[[NSK (идентификатор) | NSK]]' ,  1375 ,  стр . nskLink  },{  'NTA' ,  '[[NTA (идентификатор) | NTA]]' ,  1006 ,  стр . ntaLink  },{  'ORCID' ,  '[[ORCID (идентификатор) | ORCID]]' ,  496 ,  стр . orcidLink  },{  'PIC' ,  '[[: d: Q23892012 | PIC]]' ,  2750 ,  стр . picLink  },{  'PLWABN' ,  '[[PLWABN (идентификатор) | PLWABN]]' ,  7293 ,  стр . plwabnLink  },{  'RID' ,  '[[RID (идентификатор) | ResearcherID]]' ,  1053 ,  стр . ridLink  },{  'RERO' ,  '[[RERO (идентификатор) | RERO]]' ,  3065 ,  стр . reroLink  },{  'RKDartists' ,  '[[RKDartists (идентификатор) | RKD]]' ,  650 ,  с . rkdartistsLink  },{  'RKDID' ,  '[[RKDID (идентификатор) | RKDimages ID]]' ,  350 ,  с . rkdidLink  },{  'RSL' ,  '[[RSL (идентификатор) | RSL]]' ,  947 ,  стр . rslLink  },{  'SELIBR' ,  '[[SELIBR (идентификатор) | SELIBR]]' ,  906 ,  стр . selibrLink  },{  'СИКАРТ' ,  '[[СИКАРТ (идентификатор) | СИКАРТ]]' ,  781 ,  стр . sikartLink  },{  'SNAC-ID' ,  '[[SNAC-ID (идентификатор) | SNAC]]' ,  3430 ,  стр . snacLink  },{  'SUDOC' ,  '[[SUDOC (идентификатор) | SUDOC]]' ,  269 ,  стр . sudocLink  },{  'S2AuthorId' ,  '[[S2AuthorId (идентификатор) | S2AuthorId]]' ,  4012 ,  стр . s2authoridLink ,  category  =  'Semantic Scholar author'  },  --special category name{  'TA98' ,  '[[TA98 (идентификатор) | TA98]]' ,  1323 ,  стр . ta98Link  },{  'TDVİA' ,  '[[TDVİA (идентификатор) | TDVİA]]' ,  7314 ,  стр . tdviaLink  },{  'TE' ,  '[[TE (идентификатор) | TE]]' ,  1693 ,  стр . teLink  },{  'TePapa' ,  '[[TePapa (идентификатор) | TePapa]]' ,  3544 ,  стр . tepapaLink  },{  'TH' ,  '[[TH (идентификатор) | TH]]' ,  1694 ,  стр . thLink  },{  'TLS' ,  '[[TLS (идентификатор) | TLS]]' ,  1362 ,  стр . tlsLink  },{  'Trove' ,  '[[Trove (идентификатор) | Trove]]' ,  1315 ,  стр . troveLink  }, -  ранее NLA-person{  'UKPARL' ,  '[[UKPARL (идентификатор) | UKPARL]]' ,  6213 ,  стр . ukparlLink  },{  'ULAN' ,  '[[ULAN (идентификатор) | ULAN]]' ,  245 ,  стр . ulanLink  },{  'Конгресс США' ,  '[[Конгресс США (идентификатор) | Конгресс США]]' ,  1157 ,  стр . uscongressLink  },{  'VcBA' ,  '[[VcBA (идентификатор) | VcBA]]' ,  8034 ,  стр . vcbaLink  },{  'VIAF' ,  '[[VIAF (идентификатор) | VIAF]]' ,  214 ,  стр . viafLink  },{  'WORLDCATID' ,  '[[WorldCat Identities (идентификатор) | WorldCat Identities]]' ,  7859 ,  ноль  },}- Допустимые псевдонимы для p.conf, для удобства- Формат: {'псевдоним', 'имя параметра в p.conf'}стр . aliases  =  {{  «Леонора» ,  «Леонора»  },  --alias имя без диакритики{  'leonore' ,  'Léonore'  },  - вариант нижнего регистра без диакритических знаков{  'SBN' ,  'ICCU'  },  - псевдонимSBN будет исключен на более позднем этапе{  'TDVIA' ,  'TDVİA'  },  - псевдоним без диакритических знаков{  'tdvia' ,  'TDVİA'  },  --низкий вариант без диакритических знаков}- Устаревшие псевдонимы для p.conf; отслеживается в [[Категория: статьи Википедии с устаревшими идентификаторами контроля доступа]]- Формат: {'устаревшее имя параметра', 'замещающее имя параметра в p.conf'}стр . устаревший  =  {{  'GKD' ,  'GND'  },{  'PND' ,  'GND'  },{  'RLS' ,  'RSL'  },{  'SWD' ,  'GND'  },{  'НАРА-организация' ,  'НАРА'  },{  'НАРА-человек' ,  'НАРА'  },}- [[============================================== ============================]]--[[ Главный ]]- [[============================================== ============================]]функция  p . AuthorityControl (  кадр  )local  resolveEntity  =  require (  "Модуль: ResolveEntityId"  )локальный  parentArgs  =  кадр : getParent (). аргументыlocal  elements  =  {} -  создать / вставить строки позжелокальный  мирcatCat  =  ''местный  suppressedIdCat  =  ''local  deprecatedIdCat  =  ''--Перенаправить псевдонимы на правильные имена параметровдля  _ ,  в парах ( стр . псевдонимы ) делать     локальный  псевдоним ,  param  =  a [ 1 ],  a [ 2 ]если  ( parentArgs [ param ]  ==  nil  или  parentArgs [ param ]  ==  '' )  и  parentArgs [ псевдоним ],  тогдаparentArgs [ параметр ]  =  parentArgs [ псевдоним ]конецконец- Перенаправить устаревшие параметры на правильные имена параметров и назначить отслеживающую кошкудля  _ ,  д  в  паре (  р . устаревший  )  делатьлокальный  dep ,  param  =  d [ 1 ],  d [ 2 ]если  ( parentArgs [ пары ]  ==  ноль  или  parentArgs [ пары ]  ==  '' )  и  parentArgs [ DEP ] ,  тоparentArgs [ пары ]  =  parentArgs [ DEP ]если  пространство имен  ==  0,  тоdeprecatedIdCat  =  '[[Категория: статьи Википедии с устаревшими идентификаторами контроля доступа |' .. деп .. ']]'конецконецконец- Используйте параметр QID = только для целей тестирования / примераlocal  itemId  =  нольесли  пространство имен  ~ =  0,  тоlocal  qid  =  parentArgs [ 'qid' ]  или  parentArgs [ 'QID' ]если  qid,  тоitemId  =  'Q' .. mw . ustring . gsub ( qid ,  '^ [Qq]' ,  '' )itemId  =  resolveEntity . _id ( ItemId )  --nil , если неразрешимымиконецещеitemId  =  mw . викибаза . getEntityIdForCurrentPage ()конец- Резервный вариант Викиданных, если требуетсяесли  itemId,  тодля  _ ,  параметры  в  ipairs (  стр . conf  )  делаютесли  params [ 3 ]  >  0,  тоlocal  val  =  parentArgs [ mw . ustring . lower ( params [ 1 ])]  или  parentArgs [ params [ 1 ]]если  val  ==  nil  или  val  ==  ''  тоlocal  canUseWikidata  =  nilесли  reqs [ params [ 1 ]],  тоcanUseWikidata  =  p . matchWikidataRequirements (  itemId ,  reqs [ params [ 1 ]]  )ещеcanUseWikidata  =  trueконецесли можно использовать  Wikidata,  тоlocal  wikidataIds  =  p . getIdsFromWikidata (  itemId ,  'P' .. params [ 3 ]  )если  wikidataIds [ 1 ],  тоесли  val  ==  ''  и  ( пространство имен  ==  0  или  тестовые наборы ),  тоsuppressedIdCat  =  '[[Категория: статьи Википедии с подавленными идентификаторами контроля доступа |' .. params [ 1 ] .. ']]'ещеparentArgs [ params [ 1 ]]  =  wikidataIds [ 1 ]конец конец конец конец конец конец конец конец- Настроенные строкиместный  rct  =  0для  _ ,  параметры  в  ipairs (  стр . conf  )  делаютlocal  val  =  parentArgs [ mw . ustring . lower ( params [ 1 ])]  или  parentArgs [ params [ 1 ]]если  val  и  val  ~ =  ''  и  введите ( params [ 4 ])  ==  'function',  тогдаtable.insert (  elements ,  p . createRow (  params [ 1 ],  params [ 2 ] .. ':' ,  val ,  params [ 4 ] (  val  ),  true ,  params . category  )  )rct  =  rct  +  1конецконец--WorldCatlocal  worldcatId  =  parentArgs [ 'worldcatid' ]  или  parentArgs [ 'WORLDCATID' ]if  worldcatId  и  worldcatId  ~ =  '',  то  --if WORLDCATID присутствует и не подавленtable.insert (  elements ,  p . createRow (  'WORLDCATID' ,  '' ,  worldcatId ,  '[[WorldCat Identities (идентификатор) | WorldCat Identities]]: [https://www.worldcat.org/identities/' .. mw . URI . закодировать ( worldcatId ,  'PATH' ) .. '' .. worldcatId .. ']' ,  ложно  )  )  --Validation?worldcatCat  =  p . getCatForId (  'WORLDCATID'  )elseif  worldcatId  ==  nil,  затем  --if WORLDCATID отсутствует, но не подавленlocal  viafId  =  parentArgs [ 'viaf' ]  или  parentArgs [ 'VIAF' ]local  lccnId  =  parentArgs [ 'lccn' ]  или  parentArgs [ 'LCCN' ]если  viafId  и  viafId  ~ =  ''  и  p . viafLink (  viafId  ),  тогда  --VIAF должен присутствовать, не подавляться и подтверждатьсяtable.insert (  elements ,  p . createRow (  'VIAF' ,  '' ,  viafId ,  '[[WorldCat Identities (идентификатор) | WorldCat Identities]] (через VIAF): [https://www.worldcat.org/identities/ containsVIAFID / ' .. viafId .. ' ' .. viafId .. '] ' ,  false  )  )если  пространство имен  ==  0,  то worldcatCat  =  '[[Категория: статьи Википедии с идентификаторами WorldCat-VIAF]]'конецelseif  lccnId  и  lccnId  ~ =  ''  и  p . lccnLink (  lccnId  ),  затем  --LCCN должен присутствовать, не подавлен и подтвержденлокальный  lccnParts  =  p . splitLccn (  lccnId  )если  lccnParts  и  lccnParts [ 1 ]  ~ =  'sh',  тоlocal  lccnIdFmtd  =  lccnParts [ 1 ] .. lccnParts [ 2 ] .. '-' .. lccnParts [ 3 ]table.insert (  elements ,  p . createRow (  'LCCN' ,  '' ,  lccnId ,  '[[WorldCat Identities (идентификатор) | WorldCat Identities]] (через LCCN): [https://www.worldcat.org/identities/ lccn- ' .. lccnIdFmtd .. ' ' .. lccnIdFmtd .. '] ' ,  false  )  )если  пространство имен  ==  0,  тоworldcatCat  =  '[[Категория: статьи Википедии с идентификаторами WorldCat-LCCN]]'конецконецконецelseif  worldcatId  ==  ''  затем  --if WORLDCATID подавленsuppressedIdCat  =  '[[Категория: статьи Википедии с подавленными идентификаторами контроля доступа | WORLDCATID]]'конецlocal  Navbox  =  require ( 'Модуль: Navbox' )локальные  элементыCat  =  ''если  rct  ==  0  или  rct  > =  25,  тоlocal  eCat  =  'AC с элементами' .. rct .. 'elementsCat  =  '[[Категория:' .. eCat .. ']]' .. стр . redCatLink ( eCat )конецлокальный  outString  =  ''если  # элементов  >  0,  тоlocal  args  =  {  pid  =  'identifiers'  }  - #target список идентификаторовесли  testcases  и  ItemId  затем  Args  =  {  PID  =  'идентификаторы' ,  QID  =  ItemId  }  конец  --expensiveлокальный  карандаш  =  frame : expandTemplate {  title  =  'EditAtWikidata' ,  args  =  args }outString  =  НавБокс . _navbox (  {name  =  'Авторитетный контроль' ,navboxclass  =  'авторитет-контроль' ,bodyclass  =  'hlist' ,group1  =  '[[Help: Авторитетный контроль | Авторитетный контроль]]' .. карандаш ,песни1  =  table.concat (  элементы  )}  )конецlocal  auxCats  =  worldcatCat  ..  elementsCat  ..  suppressedIdCat  ..  deprecatedIdCatесли  тесты,  тоauxCats  =  мвт . ustring . gsub ( auxCats ,  '(% [% [) (Category)' ,  '% 1:% 2' )  - для упрощения проверкиконецoutString  =  outString  ..  auxCatsесли  пространство имен  ~ =  0,  тоoutString  =  mw . ustring . gsub ( outString ,  '(% [% [) (Категория: статьи Википедии)' ,  '% 1:% 2' )  - по определениюконецвернуть  outStringконецвернуть  p