Перейти к навигации Перейти к поиску
Документация по модулю [ создать ]
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