Modul:Authority control
Ta modul/a je trenutno zaščiten/a pred urejanjem. Glej politiko zaščite in dnevnik zaščite za več informacij. O morebitnih spremembah lahko razpravljate na pogovorni strani, oddate zahtevo za urejanje, ali zaprosite administratorja ali urejevalca predlog za dovoljenje za urejanje, če je nekontroverzno in podprto s soglasjem. Zaprosite lahko tudi za odstranjenje zaščite. |
Predloga se uporablja na številnih straneh. Z urejanjem te predloge lahko zelo obremenite strežnike, zato pred uvedbo vse spremembe, ki jih želite uvesti, preizkusite na njenih podstraneh (/peskovnik oziroma /testniprimeri) ali na svojih lastnih podstraneh. Preizkusite jih lahko tudi v posebnem peskovniku za predloge. Preizkušene spremembe se lahko v predlogo dodajo z enim samim urejanjem. Preden predlogo spremenite, se o spremembah rajši pogovorite na njeni pogovorni strani. |
Ta modul je odvisen od zaščite strani. Je zelo viden modul, ki ga uporabljajo številne strani, ali pa je pogosto substituiran. Ker bi vandalizem ali napake vplivale na številne strani in bi lahko celo trivialno urejanje povzročilo veliko obremenitev strežnikov, je zaščiten pred urejanjem. |
Povezane strani |
---|
Uporablja Lua: |
Ta modul vsebuje kodo za predlogo {{Normativna kontrola}}. Glej njeno dokumentacijo.
Parametri, lastnosti Wikipodatkov in sledilne kategorije
Dodatne sledilne kategorije
Ta modul polni sledeče skrite sledilne kategorije:
- Kategorija:Strani z rdeče-povezanimi kategorijami normativne kontrole (3) – error category to identify missing categories
- Kategorija:Wikipedijini članki z nezaželenimi identifikatorji normativne kontrole (0) – fix/migrate/remove deprecated IDs
- Kategorija:Wikipedijini članki z onemogočenimi identifikatorji normativne kontrole (0) – tracking only (no error)
- Kategorija:Wikipedijini članki z identifikatorji - večkratni (7.281) – tracking only (no error)
- Kategorija:Strani z normativno kontrolo s parametri (17) – migrate IDs to Wikidata, if possible (no error)
- Kategorija:Strani z normativno kontrolo s parametri različnimi od Wikipodatkov (1) – determine/remove incorrect IDs & migrate to Wikidata
- Kategorija:Strani z normativno kontrolo s parametri enakimi z Wikipodatki (9) – template parameters may safely be removed
Število identifikatorjev
- Kategorija:0 elementov normativne kontrole (3.947)
- Kategorija:25 elementov normativne kontrole (352)
- Kategorija:26 elementov normativne kontrole (306)
- Kategorija:27 elementov normativne kontrole (330)
- Kategorija:28 elementov normativne kontrole (287)
- Kategorija:29 elementov normativne kontrole (315)
- Kategorija:30 elementov normativne kontrole (260)
- Kategorija:31 elementov normativne kontrole (283)
- Kategorija:32 elementov normativne kontrole (255)
- Kategorija:33 elementov normativne kontrole (205)
- Kategorija:34 elementov normativne kontrole (211)
- Kategorija:35 elementov normativne kontrole (171)
- Kategorija:36 elementov normativne kontrole (146)
- Kategorija:37 elementov normativne kontrole (87)
- Kategorija:38 elementov normativne kontrole (78)
- Kategorija:39 elementov normativne kontrole (57)
- Kategorija:40 elementov normativne kontrole (26)
- Kategorija:41 elementov normativne kontrole (18)
- Kategorija:42 elementov normativne kontrole (21)
- Kategorija:43 elementov normativne kontrole (5)
- Kategorija:44 elementov normativne kontrole (3)
- Kategorija:45 elementov normativne kontrole (2)
Glej tudi
- m:Interwiki map – definition of global custom interwiki prefixes
Zgornja dokumentacija je vključena iz Modul:Authority control/dok. (uredi | zgodovina) Urejevalci lahko preizkušate ta modul v peskovniku (uredi | primerjava) in testnihprimerih (ustvari). Prosimo, da dodate kategorije v /dok podstran. Podstrani te predloge. |
require('Modul:No globals')local p = {}local title = mw.title.getCurrentTitle()local namespace = title.namespacelocal testcases = (string.sub(title.subpageText,1,13) == 'testniprimeri')--[[==========================================================================]]--[[ Category functions ]]--[[==========================================================================]]local function addCat( cat )if cat and cat ~= '' then return '[[Kategorija:'..cat..']]'..p.redCatLink(cat) endreturn ''endfunction p.getCatForId( id )local cat = ''if namespace == 0 thencat = 'Wikipedijini članki z identifikatorji '..id..''endreturn addCat(cat)endfunction p.redCatLink( cat ) --cat == 'Blah' (not 'Kategorija:Blah', not '[[Kategorija:Blah]]')if cat and cat ~= '' and testcases == false and mw.title.new(cat, 14).exists == false thenreturn '[[Kategorija:Strani z rdeče-povezanimi kategorijami normativne kontrole]]'endreturn ''endfunction p.createRow( id, rawValues, link, links, withUid, specialCat, prefix)local faultyCat = 'Wikipedijini članki z okvarjenimi identifikatorji '..(specialCat or id)..''if links then -- all links[] use withUid = false; no check neededlocal row = ''if prefix thenrow = row..'*'..prefixendfor i, l in ipairs( links ) doif i == 1 and not prefix then row = row..'*'else row = row..'\n**' endif l thenrow = row..'<span class="uid">'..l..'</span>'elserow = row..'<span class="error">'..id..' id '..rawValues[i]..' ni veljaven.</span>'..addCat(faultyCat)endendreturn row..'\n'elseif link then -- All IDs that have a prefix support multiple identifiers, so prefix is not neededif withUid thenreturn '*<span class="nowrap"><span class="uid">'..link..'</span></span>\n'endreturn '*<span class="nowrap">'..link..'</span>\n'endreturn '* <span class="error">'..id..' id '..rawValues..' ni veljaven.</span>'..addCat(faultyCat)..'\n'end--[[==========================================================================]]--[[ Property formatting functions ]]--[[==========================================================================]]-- If a link has a suitable entry in the global inter-wiki prefix table at [[:m:Interwiki_map]],-- please consider routing through this prefix rather than as external link URL.-- This will ease future maintenance as necessary updates to the link can be centrally carried out there rather than by updating this module.-- The "external link" icon would disappear for such entries.function p.aagLink( id, label)--P3372's format regex: \d+ (e.g. 1)if not id:match( '^%d+$' ) thenreturn falseendreturn '[https://www.aucklandartgallery.com/explore-art-and-ideas/artist/'..id..'/ '..(label or 'Auckland')..']'..p.getCatForId( 'AAG' )endfunction p.acmLink( id, label )--P864's format regex: \d{11} (e.g. 12345678901)if not id:match( '^%d%d%d%d%d%d%d%d%d%d%d$' ) thenreturn falseendreturn '[https://dl.acm.org/profile/'..id..' '..(label or 'Association for Computing Machinery')..']'..p.getCatForId( 'ACM-DL' )endfunction p.adbLink( id, label )--P1907's format regex: [a-z][-a-z]+-([1-3]\d|[1-9])\d{0,3} (e.g. barton-sir-edmund-toby-71)if not id:match( '^[a-z][-a-z]+-[1-3]%d%d?%d?%d?$' ) and not id:match( '^[a-z][-a-z]+-[1-9]%d?%d?%d?$' ) thenreturn falseendreturn '[http://adb.anu.edu.au/biography/'..id..' '..(label or 'Avstralija')..']'..p.getCatForId( 'ADB' )endfunction p.admiraltyLink(id,label)--P3562's format regex: [A-Q]\d{4}(\.\d+)? (e.g. D1204.1)if not id:match('^[A-Q]%d%d%d%d$') and not id:match('^[A-Q]%d%d%d%d%.%d+$') thenreturn falseendreturn id..p.getCatForId( 'admiralty' )endfunction p.agsaLink( id, label )--P6804's format regex: [1-9]\d* (e.g. 3625)if not id:match( '^[1-9]%d*$' ) thenreturn falseendreturn '[https://www.agsa.sa.gov.au/collection-publications/collection/creators/_/'..id..'/ '..(label or 'Južna Avstralija')..']'..p.getCatForId( 'AGSA' )endfunction p.ARLHSLink(id,label)--P2980's format regex: [A-Z]{3}\d{3,4}[A-Z]?| e.g. LAT023if not id:match('^[A-Z][A-Z][A-Z]%d%d%d%d?[A-Z]?$') thenreturn falseendreturn '[http://wlol.arlhs.com/lighthouse/'..id..'.html '..(label or 'ARLHS')..']'..p.getCatForId( 'ARLHS' )endfunction p.autoresuyLink( id, label )--P2558's format regex: [1-9]\d{0,4} (e.g. 12345)if not id:match( '^[1-9]%d?%d?%d?%d?$' ) thenreturn falseendreturn '[https://autores.uy/autor/'..id..' '..(label or 'Uruguay')..']'..p.getCatForId( 'autores.uy' )endfunction p.awrLink( id, label )--P4186's format regex: (([A-Z]{3}\d{4})|([A-Z]{2}\d{5}))[a-z] (e.g. PR00768b)if not id:match( '^[A-Z][A-Z][A-Z]%d%d%d%d[a-z]$' ) and not id:match( '^[A-Z][A-Z]%d%d%d%d%d[a-z]$' ) thenreturn falseendreturn '[http://www.womenaustralia.info/biogs/'..id..'.htm '..(label or 'Australian Women\'s Register')..']'..p.getCatForId( 'AWR' )endfunction p.bibsysLink( id, label )--P1015's format regex: [1-9]\d* or [1-9](\d{0,8}|\d{12}) (e.g. 1234567890123)--TODO: follow up @ [[d:Property talk:P1015#Discrepancy between the 2 regex constraints]] or escalate/investigateif not id:match( '^[1-9]%d?%d?%d?%d?%d?%d?%d?%d?$' ) and not id:match( '^[1-9]%d%d%d%d%d%d%d%d%d%d%d%d$' ) thenreturn falseendreturn '[https://authority.bibsys.no/authority/rest/authorities/html/'..id..' '..(label or 'Norveška')..']'..p.getCatForId( 'BIBSYS' )endfunction p.bildLink( id, label )--P2092's format regex: \d+ (e.g. 1)if not id:match( '^%d+$' ) thenreturn falseendreturn '[https://www.bildindex.de/document/obj'..id..' '..(label or 'Bildindex (Nemčija)')..']'..p.getCatForId( 'Bildindex' )endfunction p.bncLink( id, label )--P1890's format regex: \d{9} (e.g. 123456789)if not id:match( '^%d%d%d%d%d%d%d%d%d$' ) thenreturn falseendreturn '[http://www.bncatalogo.cl/F?func=direct&local_base=red10&doc_number='..id..' '..(label or 'Čile')..']'..p.getCatForId( 'BNC' )endfunction p.bneLink( id, label )--P950's format regex: (XX|FF|a)\d{4,7}|(bima|bimo|bica|bis[eo]|bivi|Mise|Mimo|Mima)\d{10} (e.g. XX1234567)if not id:match( '^[XF][XF]%d%d%d%d%d?%d?%d?$' ) and not id:match( '^a%d%d%d%d%d?%d?%d?$' ) and not id:match( '^bi[mcsv][aoei]%d%d%d%d%d%d%d%d%d%d$' ) and not id:match( '^Mi[sm][eoa]%d%d%d%d%d%d%d%d%d%d$' ) thenreturn falseendreturn '[http://catalogo.bne.es/uhtbin/authoritybrowse.cgi?action=display&authority_id='..id..' '..(label or 'Španija')..']'..p.getCatForId( 'BNE' ) --no https as of 9/2019endfunction p.bnfLink( id, label )--P268's format regex: \d{8}[0-9bcdfghjkmnpqrstvwxz] (e.g. 123456789)if not id:match( '^c?b?%d%d%d%d%d%d%d%d[0-9bcdfghjkmnpqrstvwxz]$' ) thenreturn falseend--Add cb prefix if it has been removedif not id:match( '^cb.+$' ) thenid = 'cb'..idendreturn '[https://catalogue.bnf.fr/ark:/12148/'..id..' '..(label or 'Francija')..'] [https://data.bnf.fr/ark:/12148/'..id..' (data)]'..p.getCatForId( 'BNF' )endfunction p.bnmmLink( id, label )--P3788's format regex: \d{9} (e.g. 000024044)if id:match( '^%d%d%d%d%d%d%d%d%d$' ) thenreturn '[https://catalogo.bn.gov.ar/F/?func=direct&local_base=BNA10&doc_number='..id..' '..(label or 'Argentina')..']'..p.getCatForId( 'BNMM' )elsereturn falseendendfunction p.botanistLink( id, label )--P428's format regex: ('t )?(d')?(de )?(la )?(van (der )?)?(Ma?c)?(De)?(Di)?\p{Lu}?C?['\p{Ll}]*([-'. ]*(van )?(y )?(d[ae][nr]?[- ])?(Ma?c)?[\p{Lu}bht]?C?['\p{Ll}]*)*\.? ?f?\.? (e.g. L.)--not easily/meaningfully implementable in Lua's regex since "(this)?" is not allowed...if not mw.ustring.match( id, "^[%u%l%d%. '-]+$" ) then --better than nothingreturn falseendid = id:gsub(' +', '%%20')return '[https://www.ipni.org/ipni/advAuthorSearch.do?find_abbreviation='..id..' '..(label or 'International Plant Names Index')..']'..p.getCatForId( 'Botanist' )endfunction p.bpnLink( id, label )--P651's format regex: \d{6,8} (e.g. 00123456)if not id:match( '^%d%d%d%d%d%d%d%d$' ) and --original format regex, changed 8/2019 to not id:match( '^0?%d%d%d%d%d%d%d$' ) and --allow 1-2 leading 0s, allowed by the website not id:match( '^0?0?%d%d%d%d%d%d$' ) thenreturn falseendreturn '[http://www.biografischportaal.nl/en/persoon/'..id..' '..(label or 'Nizozemska')..']'..p.getCatForId( 'BPN' ) --no https as of 9/2019endfunction p.canticLink( id, label )--P1273's format regex: a\d{7}[0-9x] (e.g. a10640745)if not id:match( '^a%d%d%d%d%d%d%d[%dx]$' ) thenreturn falseendreturn '[http://cantic.bnc.cat/registres/CUCId/'..id..' '..(label or 'Katalonija')..']'..p.getCatForId( 'CANTIC' ) --no https as of 10/2019endfunction p.canticnLink( id, label )--P9984's format regex: 981(0|1)\d{9}06706 (e.g. 981058515460906706)if not id:match( '^981[0-1]%d%d%d%d%d%d%d%d%d06706$' ) thenreturn falseendreturn '[https://cantic.bnc.cat/registre/'..id..' '..(label or 'Katalonija')..']'..p.getCatForId( 'CANTICN' )endfunction p.ccgLink( id, label )--P3920's format regex: ([NAIP])?[1-9]\d*(\.\d+)? (e.g. A1761)if not id:match( '^[NAIP]?[1-9]%d*$' ) and not id:match( '^[NAIP]?[1-9]%d*%.%d+$' ) thenreturn falseendreturn id..p.getCatForId( 'CCG' )endfunction p.ciniiLink( id, label )--P271's format regex: DA\d{7}[\dX] (e.g. DA12345678)if not id:match( '^DA%d%d%d%d%d%d%d[%dX]$' ) thenreturn falseendreturn '[https://ci.nii.ac.jp/author/'..id..'?l=en '..(label or 'CiNii (Japonska)')..']'..p.getCatForId( 'CINII' )endfunction p.cwgcLink( id, label )--P1908's format regex: [1-9]\d* (e.g. 75228351)if not id:match( '^[1-9]%d*$' ) thenreturn falseendreturn '[https://www.cwgc.org/find-war-dead/casualty/'..id..'/ '..(label or 'Commonwealth War Graves Commission')..']'..p.getCatForId( 'CWGC' )endfunction p.emuLink( id, label )--P4613's format regex: \d{1,6} (e.g. 15409 (or 015409))if not id:match( '^%d%d?%d?%d?%d?%d?$' ) thenreturn falseendreturn '[http://esu.com.ua/search_articles.php?id='..id..' '..(label or 'Ukrajina')..']'..p.getCatForId( 'EMU' )endfunction p.daaoLink( id, label )--P1707's format regex: [a-z\-]+\d* (e.g. rolf-harris)if not id:match( '^[a-z%-]+%d*$' ) thenreturn falseendreturn '[https://www.daao.org.au/bio/'..id..' '..(label or 'Australian Artists')..']'..p.getCatForId( 'DAAO' )endfunction p.dblpLink( id, label )--P2456's format regex: \d{2,3} /\d+(-\d+)?|[a-z] /[a-zA-Z][0-9A-Za-z]*(-\d+)? (e.g. 123/123)if not id:match( '^%d%d%d?/%d+$' ) and not id:match( '^%d%d%d?/%d+%-%d+$' ) and not id:match( '^[a-z]/[a-zA-Z][0-9A-Za-z]*$' ) and not id:match( '^[a-z]/[a-zA-Z][0-9A-Za-z]*%-%d+$' ) thenreturn falseendreturn '[https://dblp.org/pid/'..id..' '..(label or 'DBLP (computer science)')..']'..p.getCatForId( 'DBLP' )endfunction p.dibLink( id, label )--P6829's format regex: 0[01]\d{4}(\.[A-D])? (e.g. 001953)if not id:match( '^0[01]%d%d%d%d%.?[A-D]?$' ) thenreturn falseendreturn '[https://dib.cambridge.org/viewReadPage.do?articleId='..id..' '..(label or 'Irska')..']'..p.getCatForId( 'DIB' )endfunction p.dsiLink( id, label )--P2349's format regex: [1-9]\d* (e.g. 1538)if not id:match( '^[1-9]%d*$' ) thenreturn falseendreturn '[http://www.uni-stuttgart.de/hi/gnt/dsi2/index.php?table_name=dsi&function=details&where_field=id&where_value='..id..' '..(label or 'Scientific illustrators')..']'..p.getCatForId( 'DSI' )endfunction p.dtbioLink( id, label )--P7902's format regex: 1[0-9]{7,8}[0-9X] (e.g. 118554700)if not id:match( '^1[0-9]%d%d%d%d%d%d%d?[0-9X]$' ) thenreturn falseendreturn '[https://www.deutsche-biographie.de/pnd'..id..'.html?language=en '..(label or 'Nemčija')..']'..p.getCatForId( 'DTBIO' )endfunction p.fastLink( id, label )--P2163's format regex: [1-9]\d{0,7} (e.g. 1916996)if not id:match( '^[1-9]%d?%d?%d?%d?%d?%d?%d?$' ) thenreturn falseendreturn '[http://id.worldcat.org/fast/'..id..'/ '..(label or 'Faceted Application of Subject Terminology')..']'..p.getCatForId( 'FAST' )endfunction p.fnzaLink( id, label )--P6792's format regex: [1-9]\d* (e.g. 9785)if not id:match( '^[1-9]%d*$' ) thenreturn falseendreturn '[https://findnzartists.org.nz/artist/'..id..'/ '..(label or 'New Zealand Artists')..']'..p.getCatForId( 'FNZA' )endfunction p.gndLink( id, label )--P227's format regex: 1[012]?\d{7}[0-9X]|[47]\d{6}-\d|[1-9]\d{0,7}-[0-9X]|3\d{7}[0-9X] (e.g. 4079154-3)if not id:match( '^1[012]?%d%d%d%d%d%d%d[0-9X]$' ) and not id:match( '^[47]%d%d%d%d%d%d%-%d$' ) and not id:match( '^[1-9]%d?%d?%d?%d?%d?%d?%d?%-[0-9X]$' ) and not id:match( '^3%d%d%d%d%d%d%d[0-9X]$' ) thenreturn falseendreturn '[https://d-nb.info/gnd/'..id..' '..(label or 'Nemčija')..']'..p.getCatForId( 'GND' )endfunction p.googleLink( id, label )--P1960's format regex: [-_0-9A-Za-z]{12} (e.g. CUO0vDcAAAAJ)if not id:match( '^[%-_%d%l%u][%-_%d%l%u][%-_%d%l%u][%-_%d%l%u][%-_%d%l%u][%-_%d%l%u][%-_%d%l%u][%-_%d%l%u][%-_%d%l%u][%-_%d%l%u][%-_%d%l%u][%-_%d%l%u]$' ) thenreturn falseendreturn '[https://scholar.google.com/citations?user='..id..' '..(label or 'Google Scholar')..']'..p.getCatForId( 'Google Scholar' )endfunction p.hdsLink( id, label )--P902's format regex: \d{6} (e.g. 050123)if not id:match( '^%d%d%d%d%d%d$' ) thenreturn falseendreturn '[https://hls-dhs-dss.ch/fr/articles/'..id..' '..(label or 'Zgodovinski leksikon Švice')..']'..p.getCatForId( 'HDS' )endfunction p.iaafLink( id, label )--P1146's format regex: [0-9][0-9]* (e.g. 012)if not id:match( '^%d+$' ) thenreturn falseendreturn '[https://www.iaaf.org/athletes/_/'..id..' '..(label or 'World Athletics')..']'..p.getCatForId( 'IAAF' )endfunction p.iccuLink( id, label )--P396's format regex: \D{2}[A-Z0-3]V\d{6} (e.g. CFIV000163)if not id:match( '^%u%u[%u0-3]V%d%d%d%d%d%d$' ) then --legacy: %u used here instead of %D (but the faulty ID cat is empty, out of ~12k uses)return falseendreturn '[https://opac.sbn.it/nome/'..id..' '..(label or 'Italija')..']'..p.getCatForId( 'ICCU' )endfunction p.iciaLink( id, label )--P1736's format regex: \d+ (e.g. 1)if not id:match( '^%d+$' ) thenreturn falseendreturn '[https://www.imj.org.il/artcenter/newsite/en/?artist='..id..' '..(label or 'ICIA (Izrael)')..']'..p.getCatForId( 'ICIA' )endfunction p.ieuLink( id, label )--P9070's format regex: [A-Z]\\[A-Z]\\[A-Za-z0-9]+ (e.g. K\Y\Kyiv)if not id:match( '^[A-Z]\\[A-Z]\\%w+$' ) thenreturn falseendreturn '[http://www.encyclopediaofukraine.com/display.asp?linkpath=pages\\'..id..' '..(label or 'Internet Encyclopedia of Ukraine')..']'..p.getCatForId( 'IEU' )endfunction p.isniLink( id, label )id = p.validateIsni( id ) --e.g. 0000-0000-6653-4145if not id thenreturn falseendreturn '[https://isni.org/isni/'..id..' '..(label or 'ISNI')..']'..p.getCatForId( 'ISNI' )endfunction p.j9uLink( id, label )--P8189's format regex: 9870(0|1)\d{8}05171 (e.g. 987007305652505171)if not id:match( '^9870[0-1]%d%d%d%d%d%d%d%d05171$' ) thenreturn falseendreturn '[http://uli.nli.org.il/F/?func=find-b&local_base=NLX10&find_code=UID&request='..id..' '..(label or 'Izrael')..']'..p.getCatForId( 'J9U' )endfunction p.jocondeLink( id, label )--P347's format regex: [\-0-9A-Za-z]{11} (e.g. 12345678901)local regex = '^'..string.rep('[%-0-9A-Za-z]', 11)..'$'if not id:match( regex ) thenreturn falseendreturn '[https://www.pop.culture.gouv.fr/notice/joconde/'..id..' '..(label or 'Joconde (Francija)')..']'..p.getCatForId( 'Joconde' )endfunction p.kulturnavLink( id, label )--P1248's format regex: [0-9a-f]{8}\-[0-9a-f]{4}\-[0-9a-f]{4}\-[0-9a-f]{4}\-[0-9a-f]{12} (e.g. 12345678-1234-1234-1234-1234567890AB)if not 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$' ) thenreturn falseendreturn '[http://kulturnav.org/'..id..' '..(label or 'KulturNav (Norveška)')..']'..p.getCatForId( 'KULTURNAV' ) --no https as of 9/2019endfunction p.lccnLink( id, label )local parts = p.splitLccn( id ) --e.g. n78039510if not parts thenreturn falseendlocal lccnType = parts[1] ~= 'sh' and 'names' or 'subjects'id = parts[1] .. parts[2] .. p.append( parts[3], '0', 6 )return '[https://id.loc.gov/authorities/'..lccnType..'/'..id..' '..(label or 'ZDA')..']'..p.getCatForId( 'LCCN' )endfunction p.lirLink( id, label )--P886's format regex: \d+ (e.g. 1)if not id:match( '^%d+$' ) thenreturn falseendreturn '[http://www.e-lir.ch/e-LIR___Lexicon.'..id..'.450.0.html '..(label or 'Lexicon Istoric Retic (Švica)')..']'..p.getCatForId( 'LIR' ) --no https as of 9/2019endfunction p.lnbLink( id, label )--P1368's format regex: \d{9} (e.g. 123456789)if not id:match( '^%d%d%d%d%d%d%d%d%d$' ) thenreturn falseendreturn '[https://kopkatalogs.lv/F?func=direct&local_base=lnc10&doc_number='..id..'&P_CON_LNG=ENG '..(label or 'Latvija')..']'..p.getCatForId( 'LNB' )endfunction p.marinaMilitareLink( id, label )--P3863's format regex: [1-9]\d* (e.g. 3856)if id:match( '^[1-9]%d*$' ) thenreturn '[http://www.marina.difesa.it/cosa-facciamo/per-la-difesa-sicurezza/fari/Pagine/'..id..'.aspx '..(label or 'Italija')..']'..p.getCatForId( 'Marina Militare' )elsereturn falseendendfunction p.mathsnLink( id, label )--P4955's format regex: [1-9]\d{4,6} (e.g. 175270)if not id:match( '^[1-9]%d%d%d%d%d?%d?$' ) thenreturn falseendreturn '[https://mathscinet.ams.org/mathscinet/MRAuthorID/'..id..' '..(label or 'MathSciNet')..']'..p.getCatForId( 'MATHSN' )endfunction p.mbaLink( id, label )--P434's format regex: [0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12} (e.g. 12345678-1234-1234-1234-1234567890AB)if not 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$' ) thenreturn falseendlocal url = 'https://musicbrainz.org/artist/'..idlocal cat = p.getCatForId( 'MusicBrainz' )--special cat nameif label thenreturn '['..url..' '..label..']'..catelsereturn '[[MBA (identifikator)|MusicBrainz]] ['..url..' artist]'..catendendfunction p.mbareaLink( id, label )--P982's format regex: [0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12} (e.g. 12345678-1234-1234-1234-1234567890AB)if not 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$' ) thenreturn falseendlocal url = 'https://musicbrainz.org/area/'..idlocal cat = p.getCatForId( 'MusicBrainz area' )--special cat nameif label thenreturn '['..url..' '..label..']'..catelsereturn '[[MBAREA (identifikator)|MusicBrainz]] ['..url..' area]'..catendendfunction p.mbiLink( id, label )--P1330's format regex: [0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12} (e.g. 12345678-1234-1234-1234-1234567890AB)if not 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$' ) thenreturn falseendlocal url = 'https://musicbrainz.org/instrument/'..idlocal cat = p.getCatForId( 'MusicBrainz instrument' )--special cat nameif label thenreturn '['..url..' '..label..']'..catelsereturn '[[MBI (identifikator)|MusicBrainz]] ['..url..' instrument]'..catendendfunction p.mblLink( id, label )--P966's format regex: [0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12} (e.g. 12345678-1234-1234-1234-1234567890AB)if not 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$' ) thenreturn falseendlocal url = 'https://musicbrainz.org/label/'..idlocal cat = p.getCatForId( 'MusicBrainz label' )--special cat nameif label thenreturn '['..url..' '..label..']'..catelsereturn '[[MBL (identifikator)|MusicBrainz]] ['..url..' label]'..catendendfunction p.mbpLink( id, label )--P1004's format regex: [0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12} (e.g. 12345678-1234-1234-1234-1234567890AB)if not 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$' ) thenreturn falseendlocal url = 'https://musicbrainz.org/place/'..idlocal cat = p.getCatForId( 'MusicBrainz place' )--special cat nameif label thenreturn '['..url..' '..label..']'..catelsereturn '[[MBP (identifikator)|MusicBrainz]] ['..url..' place]'..catendendfunction p.mbrgLink( id, label )--P436's format regex: [0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12} (e.g. 12345678-1234-1234-1234-1234567890AB)if not 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$' ) thenreturn falseendlocal url = 'https://musicbrainz.org/release-group/'..idlocal cat = p.getCatForId( 'MusicBrainz release group' )--special cat nameif label thenreturn '['..url..' '..label..']'..catelsereturn '[[MBRG (identifikator)|MusicBrainz]] ['..url..' release group]'..catendendfunction p.mbsLink( id, label )--P1407's format regex: [0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12} (e.g. 12345678-1234-1234-1234-1234567890AB)if not 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$' ) thenreturn falseendlocal url = 'https://musicbrainz.org/series/'..idlocal cat = p.getCatForId( 'MusicBrainz series' )--special cat nameif label thenreturn '['..url..' '..label..']'..catelsereturn '[[MBS (identifikator)|MusicBrainz]] ['..url..' series]'..catendendfunction p.mbwLink( id, label )--P435's format regex: [0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12} (e.g. 12345678-1234-1234-1234-1234567890AB)if not 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$' ) thenreturn falseendlocal url = 'https://musicbrainz.org/work/'..idlocal cat = p.getCatForId( 'MusicBrainz work' )--special cat nameif label thenreturn '['..url..' '..label..']'..catelsereturn '[[MBW (identifikator)|MusicBrainz]] ['..url..' work]'..catendendfunction p.mgpLink( id, label )--P549's format regex: \d{1,6} (e.g. 123456)if not id:match( '^%d%d?%d?%d?%d?%d?$' ) thenreturn falseendreturn '[https://www.mathgenealogy.org/id.php?id='..id..' '..(label or 'Mathematics Genealogy Project')..']'..p.getCatForId( 'MGP' )endfunction p.mtLink( id, label )--P3601's format regex: \d{10} (e.g. 1000004707)if id:match( '^%d%d%d%d%d%d%d%d%d%d$' ) thenreturn '[https://www.marinetraffic.com/en/ais/details/lights/'..id..' '..(label or 'MarineTraffic')..']'..p.getCatForId( 'MarineTraffic' )elsereturn falseendendfunction p.naraLink( id, label )--P1225's format regex: ^([1-9]\d{0,8})$ (e.g. 123456789)if not id:match( '^[1-9]%d?%d?%d?%d?%d?%d?%d?%d?$' ) thenreturn falseendreturn '[https://catalog.archives.gov/id/'..id..' '..(label or 'National Archives (ZDA)')..']'..p.getCatForId( 'NARA' )endfunction p.nclLink( id, label )--P1048's format regex: \d+ (e.g. 1081436)if not id:match( '^%d+$' ) thenreturn falseendreturn '[http://aleweb.ncl.edu.tw/F/?func=accref&acc_sequence='..id..'&CON_LNG=ENG '..(label or 'Tajvan')..']'..p.getCatForId( 'NCL' ) --no https as of 9/2019endfunction p.ndlLink( id, label )--P349's format regex: 0?\d{8} (e.g. 012345678)if not id:match( '^0?%d%d%d%d%d%d%d%d$' ) thenreturn falseendreturn '[https://id.ndl.go.jp/auth/ndlna/'..id..' '..(label or 'Japonska')..']'..p.getCatForId( 'NDL' )endfunction p.ngaLink(id,label)--P3563's format rgex: 11[0-6]-\d+(\.\d+)? (e.g. 114-7721.2)if not id:match('^11[0-6]%-%d+%.?%d*$') thenreturn falseendreturn '[https://wikidata-externalid-url.toolforge.org/?url=https%3A%2F%2Fmsi.nga.mil%2FqueryResults%3Fpublications%2Fngalol%2Flights-buoys%3Fvolume%3D%251%26featureNumber%3D%252%26includeRemovals%3Dfalse%26output%3Dhtml&exp=(%5Cd%7B3%7D)-(.*)&id='..id..' '..(label or 'NGA')..']'..p.getCatForId( 'NGA' )endfunction p.ngvLink( id, label )--P2041's format regex: \d+ (e.g. 12354)if not id:match( '^%d+$' ) thenreturn falseendreturn '[https://www.ngv.vic.gov.au/explore/collection/artist/'..id..'/ '..(label or 'Viktorija')..']'..p.getCatForId( 'NGV' )endfunction p.nkcLink( id, label )--P691's format regex: [a-z]{2,4}[0-9]{2,14} (e.g. abcd12345678901234)if not id:match( '^[a-z][a-z][a-z]?[a-z]?%d%d%d?%d?%d?%d?%d?%d?%d?%d?%d?%d?%d?%d?$' ) thenreturn falseendreturn '[https://aleph.nkp.cz/F/?func=find-c&local_base=aut&ccl_term=ica='..id..'&CON_LNG=ENG '..(label or 'Češka republika')..']'..p.getCatForId( 'NKC' )endfunction p.nlaLink( id, label )--P409's format regex: [1-9][0-9]{0,11} (e.g. 123456789012)if not id:match( '^[1-9]%d?%d?%d?%d?%d?%d?%d?%d?%d?%d?%d?$' ) thenreturn falseendreturn '[https://nla.gov.au/anbd.aut-an'..id..' '..(label or 'Avstralija')..']'..p.getCatForId( 'NLA' )endfunction p.nlgLink( id, label )--P3348's format regex: [1-9]\d* (e.g. 1)if not id:match( '^[1-9]%d*$' ) thenreturn falseendreturn '[https://data.nlg.gr/resource/authority/record'..id..' '..(label or 'Grčija')..']'..p.getCatForId( 'NLG' )endfunction p.nlkLink( id, label )--P5034's format regex: KA.(19|20).{7} (e.g. KAC201501465)if not id:match( '^KA.19.......$' ) and not id:match( '^KA.20.......$' ) thenreturn falseendreturn '[https://librarian.nl.go.kr/LI/contents/L20101000000.do?id='..id..' '..(label or 'Koreja')..']'..p.getCatForId( 'NLK' )endfunction p.nlpLink( id, label )--P1695's format regex: 9810[0-9]\d* or A[0-9]{7}[0-9X] (e.g. 9810123456789012345 or A10414836)if not id:match( '^9810%d+$' ) and not id:match( '^A%d%d%d%d%d%d%d[%dX]$' ) thenreturn falseendreturn '[https://tools.wmflabs.org/wikidata-externalid-url?p=1695&id='..id..' '..(label or 'Poljska')..']'..p.getCatForId( 'NLP' )endfunction p.nlrLink( id, label )--P1003's format regex: \d{9} (e.g. 123456789)if not id:match( '^%d%d%d%d%d%d%d%d%d$' ) thenreturn falseendreturn '[http://aleph.bibnat.ro:8991/F/?func=direct&local_base=NLR10&doc_number='..id..' '..(label or 'Romunija')..']'..p.getCatForId( 'NLR' )endfunction p.nskLink( id, label )--P1375's format regex: \d{9} (e.g. 123456789)if not id:match( '^%d%d%d%d%d%d%d%d%d$' ) thenreturn falseendreturn '[http://katalog.nsk.hr/F/?func=direct&doc_number='..id..'&local_base=nsk10 '..(label or 'Hrvaška')..']'..p.getCatForId( 'NSK' ) --no https as of 9/2019endfunction p.ntaLink( id, label )--P1006's format regex: \d{8}[\dX] (e.g. 12345678X)if not id:match( '^%d%d%d%d%d%d%d%d[%dX]$' ) thenreturn falseendreturn '[http://data.bibliotheken.nl/id/thes/p'..id..' '..(label or 'Nizozemska')..']'..p.getCatForId( 'NTA' )endfunction p.orcidLink( id, label )id = p.validateIsni( id ) --e.g. 0000-0002-7398-5483if not id thenreturn falseendid = id:sub( 1, 4 )..'-'..id:sub( 5, 8 )..'-'..id:sub( 9, 12 )..'-'..id:sub( 13, 16 )return '[https://orcid.org/'..id..' '..(label or 'ORCID')..']'..p.getCatForId( 'ORCID' )endfunction p.picLink( id, label )--P2750's format regex: [1-9]\d* (e.g. 1)if not id:match( '^[1-9]%d*$' ) thenreturn falseendreturn '[https://pic.nypl.org/constituents/'..id..' '..(label or 'Photographers\' Identities')..']'..p.getCatForId( 'PIC' )endfunction p.plwabnLink( id, label )--P7293's format regex: 981[0-9]{8}05606 (e.g. 9810696457305606)if not id:match( '^981%d%d%d%d%d%d%d%d05606*$' ) thenreturn falseendreturn '[http://mak.bn.org.pl/cgi-bin/KHW/makwww.exe?BM=1&NU=1&IM=4&WI='..id..' '..(label or 'Poljska')..']'..p.getCatForId( 'PLWABN' )endfunction p.publonsLink( id, label )--P3829's format regex: \d+ (e.g. 654601)if not id:match( '^%d+$' ) thenreturn falseendreturn '[https://publons.com/author/'..id..'/ '..(label or 'Publons (researchers)')..']'..p.getCatForId( 'Publons' )endfunction p.ridLink( id, label )--P1053's format regex: [A-Z]{1,3}-\d{4}-(19|20)\d\d (e.g. AAS-5150-2020)if not id:match( '^[A-Z][A-Z]?[A-Z]?%-%d%d%d%d%-19%d%d$' ) and not id:match( '^[A-Z][A-Z]?[A-Z]?%-%d%d%d%d%-20%d%d$' ) thenreturn falseendreturn '[https://www.researcherid.com/rid/'..id..' '..(label or 'ResearcherID')..']'..p.getCatForId( 'RID' )endfunction p.rismLink( id, label )--P5504's format regex: (people|ks)?\[1-9]d* (e.g. pe30006410)if not id:match( 'people/%d+' ) and --99% start with 'people' not id:match( 'institutions/%d+' ) and not id:match( 'sources/%d+' ) thenreturn falseendreturn '[https://rism.online/'..id..' '..(label or 'RISM (Francija)')..']'..p.getCatForId( 'RISM' )endfunction p.reroLink( id, label )--P3065's format regex: 0[1-2]-[A-Z0-9]{1,10} (e.g. 02-A012345678)if not id:match( '^0[1-2]%-[A-Z%d][A-Z%d]?[A-Z%d]?[A-Z%d]?[A-Z%d]?[A-Z%d]?[A-Z%d]?[A-Z%d]?[A-Z%d]?[A-Z%d]?$' ) thenreturn falseendreturn '[http://data.rero.ch/'..id..' '..(label or 'RERO (Švica)')..']'..p.getCatForId( 'RERO' )endfunction p.rkdartistsLink( id, label )--P650's format regex: [1-9]\d{0,5} (e.g. 123456)if not id:match( '^[1-9]%d?%d?%d?%d?%d?$' ) thenreturn falseendreturn '[https://rkd.nl/en/explore/artists/'..id..' '..(label or 'RKD Artists (Nizozemska)')..']'..p.getCatForId( 'RKDartists' )endfunction p.rkdidLink( id, label )--P350's format regex: [1-9]\d{0,5} (e.g. 123456)if not id:match( '^[1-9]%d?%d?%d?%d?%d?$' ) thenreturn falseendreturn '[https://rkd.nl/nl/explore/images/'..id..' '..(label or 'RKD ID (Nizozemska)')..']'..p.getCatForId( 'RKDID' )endfunction p.rslLink( id, label )--P947's format regex: \d{1,9} (e.g. 123456789)if not id:match( '^%d%d?%d?%d?%d?%d?%d?%d?%d?$' ) thenreturn falseendreturn '[http://aleph.rsl.ru/F?func=find-b&find_code=SYS&adjacent=Y&local_base=RSL11&request='..id..'&CON_LNG=ENG '..(label or 'Rusija')..']'..p.getCatForId( 'RSL' ) --no https as of 9/2019endfunction p.scopusLink( id, label )--P1153's format regex: [1-9]\d{9,10} (e.g. 35247902700)if not id:match( '^[1-9]%d%d%d%d%d%d%d%d%d%d?$' ) thenreturn falseendreturn '[https://www.scopus.com/authid/detail.uri?authorId='..id..' '..(label or 'Scopus author')..']'..p.getCatForId( 'Scopus' )endfunction p.selibrLink( id, label )--P906's format regex: [1-9]\d{4,5} (e.g. 123456)if not id:match( '^[1-9]%d%d%d%d%d?$' ) thenreturn falseendreturn '[https://libris.kb.se/auth/'..id..' '..(label or 'Švedska')..']'..p.getCatForId( 'SELIBR' )endfunction p.sikartLink( id, label )--P781's format regex: \d{7,9} (e.g. 123456789)if not id:match( '^%d%d%d%d%d%d%d%d?%d?$' ) thenreturn falseendreturn '[http://www.sikart.ch/KuenstlerInnen.aspx?id='..id..'&lng=en '..(label or 'SIKART (Švica)')..']'..p.getCatForId( 'SIKART' ) --no https as of 9/2019endfunction p.snacLink( id, label )--P3430's format regex: \d*[A-Za-z][0-9A-Za-z]* (e.g. A)if not id:match( '^%d*[A-Za-z][0-9A-Za-z]*$' ) thenreturn falseendreturn '[https://snaccooperative.org/ark:/99166/'..id..' '..(label or 'Social Networks and Archival Context')..']'..p.getCatForId( 'SNAC-ID' )endfunction p.sudocLink( id, label )--P269's format regex: (\d{8}[\dX]|) (e.g. 026927608)if not id:match( '^%d%d%d%d%d%d%d%d[%dxX]$' ) then --legacy: allow lowercase 'x'return falseendreturn '[https://www.idref.fr/'..id..' '..(label or 'SUDOC (Francija)')..']'..p.getCatForId( 'SUDOC' )endfunction p.ta98Link( id, label )--P1323's format regex: A\d{2}\.\d\.\d{2}\.\d{3}[FM]? (e.g. A12.3.45.678)if not id:match( '^A%d%d%.%d%.%d%d%.%d%d%d[FM]?$' ) thenreturn falseendlocal longurl = '[http://tools.wmflabs.org/wikidata-externalid-url/?p=1323&url_prefix=https:%2F%2Fwww.unifr.ch%2Fifaa%2FPublic%2FEntryPage%2FTA98%20Tree%2FEntity%20TA98%20EN%2F&url_suffix=%20Entity%20TA98%20EN.htm&id='return longurl..id..' '..(label or 'Terminologia Anatomica')..']'..p.getCatForId( 'TA98' )endfunction p.tdviaLink( id, label )--P7314's format regex: [0-9a-z/-]+] (e.g. barkan-omer-lutfi)if not id:match( '^[%d%l/-]+$' ) thenreturn falseendreturn '[https://islamansiklopedisi.org.tr/'..id..' '..(label or 'İslâm Ansiklopedisi')..']'..p.getCatForId( 'TDVİA' )endfunction p.tepapaLink( id, label )--P3544's format regex: \d+ (e.g. 1)if not id:match( '^%d+$' ) thenreturn falseendreturn '[https://collections.tepapa.govt.nz/agent/'..id..' '..(label or 'Te Papa (Nova Zelandija)')..']'..p.getCatForId( 'TePapa' )endfunction p.tlsLink( id, label )id = id:gsub(' +', '_')--P1362's format regex: \p{Lu}[\p{L}\d_',\.\-\(\)\*\/–&]{3,89} (e.g. Abcd)--Mediawiki page title partial URL so consider validation with mw.title or "[^#<>%[%] {|}]"local class = "[%w_',%.%-%(%)%*%/–&]"local idlen = mw.ustring.len (id)if idlen < 4 or idlen > 90 thenreturn falseendlocal regex = '^%u'..string.rep(class, idlen - 1)..'$'if not mw.ustring.match( id, regex ) thenreturn falseendreturn '[http://tls.theaterwissenschaft.ch/wiki/'..id..' '..(label or 'Theaterlexikon (Švica)')..']'..p.getCatForId( 'TLS' ) --no https as of 9/2019endfunction p.troveLink( id, label )--P1315's format regex: [1-9]\d{5,7} (e.g. 12345678)if not id:match( '^[1-9]%d%d%d%d%d%d?%d?$' ) thenreturn falseendreturn '[https://trove.nla.gov.au/people/'..id..' '..(label or 'Trove (Avstralija)')..']'..p.getCatForId( 'Trove' )endfunction p.ukparlLink( id, label )--P6213's format regex: [a-zA-Z\d]{8} (e.g. AQUupyiR)if not id:match( '^[a-zA-Z%d][a-zA-Z%d][a-zA-Z%d][a-zA-Z%d][a-zA-Z%d][a-zA-Z%d][a-zA-Z%d][a-zA-Z%d]$' ) thenreturn falseendreturn '[https://id.parliament.uk/'..id..' '..(label or 'UK Parliament')..']'..p.getCatForId( 'UKPARL' )endfunction p.ulanLink( id, label )--P245's format regex: 500\d{6} (e.g. 500123456)if not id:match( '^500%d%d%d%d%d%d$' ) thenreturn falseendreturn '[https://www.getty.edu/vow/ULANFullDisplay?find=&role=&nation=&subjectid='..id..' '..(label or 'Artist Names (Getty)')..']'..p.getCatForId( 'ULAN' )endfunction p.uscgLink( id, label )--P3723's format regex: [1-7]-\d{1,5}(.[1-9])? (e.g. 6-0695)if not id:match( '^[1-7]%-%d%d?%d?%d?%d?$' ) and not id:match( '^[1-7]%-%d%d?%d?%d?%d?%.%d*[1-9]$' ) thenreturn falseendreturn '[[USCG (identifikator)|USCG]] ([https://www.navcen.uscg.gov/pdf/lightlists/LightList%20V'..mw.ustring.sub(id,1,1)..'.pdf '..id..'])'..p.getCatForId( 'USCG' )endfunction p.uscongressLink( id, label )--P1157's format regex: [A-Z]00[01]\d{3} (e.g. A000123)if not id:match( '^[A-Z]00[01]%d%d%d$' ) thenreturn falseendreturn '[http://bioguide.congress.gov/scripts/biodisplay.pl?index='..id..' '..(label or 'US Congress')..']'..p.getCatForId( 'USCongress' ) --no https as of 9/2019endfunction p.vcbaLink( id, label )--P8034's format regex: \d{3}\/[1-9]\d{0,5} (e.g. 494/9793)if not id:match( '^%d%d%d\/[1-9]%d?%d?%d?%d?%d?$' ) thenreturn falseendid = id:gsub('\/', '_')return '[https://opac.vatlib.it/auth/detail/'..id..' '..(label or 'Vatikan')..']'..p.getCatForId( 'VcBA' )endfunction p.viafLink( id, label )--P214's format regex: [1-9]\d(\d{0,7}|\d{17,20}) (e.g. 123456789, 1234567890123456789012)if not id:match( '^[1-9]%d%d?%d?%d?%d?%d?%d?%d?$' ) and 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?$' ) thenreturn falseend-- If the "VIAF" entry at [[:m:Interwiki map]] would resolve to "https://viaf.org/viaf/$1" (rather than "http://viaf.org/viaf/$1", as it currently still does),-- then the code below could change from '[https://viaf.org/viaf/'..id..' '..id..']' to '[[:VIAF:'..id..'|'..id..']]'.return '[https://viaf.org/viaf/'..id..' '..(label or 'VIAF')..']'..p.getCatForId( 'VIAF' )endfunction p.worldcatidLink( id, label )--P7859's format regex: viaf-\d+|lccn-n[a-z]?[0-9\-]+|n[cps]-.+ (e.g. viaf-100181709, lccn-n78-95332, np-verbeck,%20william$1861)if not id:match( '^viaf%-%d+$' ) and not id:match( '^lccn%-n[a-z]?[0-9%-]+$' ) and not id:match( '^n[cps]%-.+$' ) thenreturn falseendreturn '[https://www.worldcat.org/identities/'..mw.uri.encode(id, 'PATH')..'/ '..(label or 'WorldCat')..']'..p.getCatForId( 'WORLDCATID' )endfunction p.zbmathLink( id, label )--P1556's format regex: [a-z][a-z\-]*(\.[a-z][a-z\-]*)?(\.[0-9]*)? (e.g. turing.alan-m)local ps = {'%l[%l%-]*', '%.%l[%l%-]*', '%.%d*'}if not id:match( '^'..ps[1]..'$' ) and -- prefix with no capture options not id:match( '^'..ps[1]..ps[2]..'$' ) and -- prefix with first capture option not id:match( '^'..ps[1]..ps[3]..'$' ) and -- prefix with second capture option not id:match( '^'..ps[1]..ps[2]..ps[3]..'$' ) then -- prefix and both capture optionsreturn falseendreturn '[https://zbmath.org/authors/?q=ai:'..id..' '..(label or 'zbMATH')..']'..p.getCatForId( 'ZBMATH' )endfunction p.conorLink( id, label ) if not id:match( '^%d+$' ) then return false end return '[https://plus.cobiss.net/cobiss/si/sl/conor/'..id..' '..(label or 'CONOR (Slovenija)')..']'..p.getCatForId( 'CONOR.SI' )endfunction p.conorSrLink( id, label ) if not id:match( '^%d+$' ) then return false end return '[https://plus.cobiss.net/cobiss/sr/sr/conor/'..id..' '..(label or 'CONOR (Srbija)')..']'..p.getCatForId( 'CONOR.SR' )endfunction p.sicrisLink( id, label )-- P6556 format: [0-9]{4}[1-9] if not id:match( '^%d+$' ) then return false end return '[https://cris.cobiss.net/ecris/si/sl/researcher/code/'..id..' '..(label or 'SICRIS (Slovenija)')..']'..p.getCatForId( 'SICRIS' )endfunction p.OSPLink( id, label ) return '[https://www.obrazislovenskihpokrajin.si/oseba/'..id..' '..(label or 'OSP (Slovenija)')..']'..p.getCatForId( 'OSP' )endfunction p.SIGICLink( id, label )if not id:match( '^%d+$' ) thenreturn false end return '[http://sigic.nuk.uni-lj.si/?mod=search&action=avtor&id='..id..' '..(label or 'SIGIC (Slovenija)')..']'..p.getCatForId( 'SIGIC' )endfunction p.sbiLink( id, label )if not id:match( '^%d+$' ) thenreturn false end return '[http://www.slovenska-biografija.si/oseba/sbi'..id..' '..(label or 'SBI (Slovenija)')..']'..p.getCatForId( 'SBI' )endfunction p.IstrapediaLink( id, label )if not id:match( '^%d+$' ) thenreturn false end return '[https://www.istrapedia.hr/hr/natuknice/'..id..'/wd '..(label or 'Istrapedia')..']'..p.getCatForId( 'Istrapedia' )end--[[=========================== Helper functions =============================]]function p.append(str, c, length)while str:len() < length dostr = c..strendreturn strend--Returns the ISNI check digit isni must be a string where the 15 first elements are digits, e.g. 0000000066534145function p.getIsniCheckDigit( isni )local total = 0for i = 1, 15 dolocal digit = isni:byte( i ) - 48 --Get integer valuetotal = (total + digit) * 2endlocal remainder = total % 11local result = (12 - remainder) % 11if result == 10 thenreturn 'X'endreturn tostring( result )end--Validate ISNI (and ORCID) and retuns it as a 16 characters string or returns false if it's invalid--See http://support.orcid.org/knowledgebase/articles/116780-structure-of-the-orcid-identifierfunction p.validateIsni( id )--P213 (ISNI) format regex: [0-9]{4} [0-9]{4} [0-9]{4} [0-9]{3}[0-9X] (e.g. 0000-0000-6653-4145)--P496 (ORCID) format regex: 0000-000(1-[5-9]|2-[0-9]|3-[0-4])\d{3}-\d{3}[\dX] (e.g. 0000-0002-7398-5483)id = id:gsub( '[ %-]', '' ):upper()if not id:match( '^%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d[%dX]$' ) thenreturn falseendif p.getIsniCheckDigit( id ) ~= string.char( id:byte( 16 ) ) thenreturn falseendreturn idendfunction p.splitLccn( id )--P244's format regex: (n|nb|nr|no|ns|sh)([4-9][0-9]|00|20[0-1][0-9])[0-9]{6} (e.g. n78039510)if id:match( '^%l%l?%l?%d%d%d%d%d%d%d%d%d?%d?$' ) thenid = id:gsub( '^(%l+)(%d+)(%d%d%d%d%d%d)$', '%1/%2/%3' )endif id:match( '^%l%l?%l?/%d%d%d?%d?/%d+$' ) thenreturn mw.text.split( id, '/' )endreturn falseend--[[==========================================================================]]--[[ Wikidata & documentation functions ]]--[[==========================================================================]]function p.getIdsFromWikidata( itemId, property )local ids = {}if not mw.wikibase thenreturn idsendlocal statements = mw.wikibase.getBestStatements( itemId, property )if statements thenfor _, statement in ipairs( statements ) doif statement.mainsnak.datavalue thentable.insert( ids, statement.mainsnak.datavalue.value )endendendreturn idsendfunction p.checkcat( category,label )local ret='[[:Kategorija:'..category..'|'..label..']]'if mw.title.new(category, 14).exists == false thenret = ret..' <span class="plainlinks" style="font-size:85%;">[['..tostring(mw.uri.fullUrl('Kategorija:'..category,'action=edit&preload=Predloga:Normativna_kontrola/preload'))..' ustvari]]</span>'endreturn retend-- Creates a human-readable standalone wikitable version of p.conf, and tracking categories with page counts, for use in the documentationfunction p.docConfTable( frame )local wikiTable = '<table class="wikitable sortable">'.. '<tr><th rowspan=2>Parameter</th>'.. '<th rowspan=2>Poglavje</th>'.. '<th rowspan=2>Se pojavi kot</th>'.. '<th rowspan=2 data-sort-type=number>Wikidata property</th>'.. '<th colspan=2>Sledilne kategorije in števci strani</th></tr>'.. '<tr><th>[[:Kategorija:Wikipedijini članki s podatki o normativni kontroli|Članki]]</th>'.. '<th>[[:Kategorija:Wikipedijini članki z napakami v podatkih o normativni kontroli|Napačni IDji]]</th></tr>'local lang = mw.getContentLanguage()local a, f, P = 0, 0, 0 --cumulative sumsfor _, conf in pairs( p.conf ) dolocal param, pid, section = conf[1], conf[2], conf[4]local appearsAsif conf.prefix thenappearsAs = conf.prefixelseappearsAs = conf[3](conf[5])endlocal link = conf.link or param..' (identifikator)'local category = conf.category or paramlocal args = { id = 'f', pid }local wpl = frame:expandTemplate{ title = 'P', args = args }--catshlocal articleCat = 'Wikipedijini članki z identifikatorji '..category..''local faultyCat = 'Wikipedijini članki z okvarjenimi identifikatorji '..category..''--countslocal articleCount = lang:formatNum( mw.site.stats.pagesInCategory(articleCat, 'pages') )local faultyCount = lang:formatNum( mw.site.stats.pagesInCategory(faultyCat, 'pages') )--calcsP = P + 1 --property counta = a + lang:parseFormattedNumber(articleCount)f = f + lang:parseFormattedNumber(faultyCount)--concatwikiTable = wikiTable..'<tr><td>[['..link..'|'..param..']]</td>'..'<td>'..section..'</td>'..'<td>'..appearsAs..'</td>'..'<td data-sort-value='..pid..'>'..wpl..'</td>'..'<td style="text-align: right;">'..p.checkcat(articleCat,articleCount)..'</td>'..'<td style="text-align: right;">'..p.checkcat(faultyCat,faultyCount)..'</td></tr>'end--append derivative WorldCat catslocal wcd = { 'WorldCat-LCCN', 'WorldCat-VIAF' }for _, w in pairs(wcd) dolocal articleCat = 'Wikipedijini članki z identifikatorji '..w..''local articleCount = lang:formatNum( mw.site.stats.pagesInCategory(articleCat, 'pages') )local appearsAsif w == 'WorldCat-LCCN' thenappearsAs = '[https://www.worldcat.org/identities/lccn-n79-113947 WorldCat (via Library of Congress)]'elseappearsAs = '[https://www.worldcat.org/identities/containsVIAFID/12345789 WorldCat (via VIAF)]'enda = a + lang:parseFormattedNumber(articleCount)wikiTable = wikiTable..'<tr><td>-</td>'..'<td>Splošno</td>'..'<td>'..appearsAs..'</td>'..'<td data-sort-value='..w..'>—</td>'..'<td style="text-align: right;">[[:Kategorija:'..articleCat..'|'..articleCount..']]</td>'..'<td style="text-align: right;">—</td></tr>'end--append sumswikiTable = wikiTable..'<tr><th style="text-align: right;" colspan=3>Skupaj</th>'..'<th style="text-align: right;">'..lang:formatNum(P)..'</th>'..'<th style="text-align: right;">'..lang:formatNum(a)..'</th>'..'<th style="text-align: right;">'..lang:formatNum(f)..'</th></tr></table>'return require('Modul:Suppress categories').main(wikiTable)end--[[==========================================================================]]--[[ Configuration ]]--[[==========================================================================]]-- Please use "<parameter> (identifikator)" redirects rather than linking directly to the target page.-- This reduces clutter in "What links here" on both the redirect and the target,-- and improves reverse lookup of articles where a manifestation of each identifier is used.-- p.conf table basic format: { 'parameter name', propertyId # in Wikidata, formatting/validation function, section, example ID for documentation }-- p.conf table optional named parameters:-- link: to override the link in the documentation (defaults to "<parameter> (identifer)")-- category: to override the ID in category names (defaults to "... with <parameter> identifiers")-- prefix: to include a prefix (usually a wikilink explaining what the identifier is) before the external link itselfp.conf = {{ 'AAG', 3372, p.aagLink, 'Umetnostne galerije in muzeji', '1' },{ 'ACM-DL', 864, p.acmLink, 'Znanstvene podatkovne baze', '12345678901', link = 'ACM DL (identifikator)' },{ 'ADB', 1907, p.adbLink,'Biografski slovarji', 'barton-sir-edmund-toby-71' },{ 'admiralty', 3562, p.admiraltyLink, 'Identifikatorji svetilnikov', 'D1204.1', prefix='[[Admiralty number|Admiralty]]'},{ 'AGSA', 6804, p.agsaLink, 'Umetnostne galerije in muzeji', '3625' },{ 'ARLHS', 2980, p.ARLHSLink, 'Identifikatorji svetilnikov', 'LAT023'},{ 'autores.uy', 2558, p.autoresuyLink, 'Biografski slovarji', '12345' },{ 'AWR', 4186, p.awrLink, 'Biografski slovarji', 'PR00768b' },{ 'BIBSYS', 1015, p.bibsysLink, 'Narodne knjižnice', '1234567890123' },{ 'Bildindex', 2092, p.bildLink, 'Inštituti za umetnostno raziskovanje', '1' },{ 'BNC', 1890, p.bncLink, 'Narodne knjižnice', '123456789' },{ 'BNE', 950, p.bneLink, 'Narodne knjižnice', 'XX1234567' },{ 'BNF', 268, p.bnfLink, 'Narodne knjižnice', '123456789' },{ 'BNMM', 3788, p.bnmmLink, 'Narodne knjižnice', '000024044' },{ 'Botanist', 428, p.botanistLink , 'Znanstvene podatkovne baze', 'L.' },{ 'BPN', 651, p.bpnLink , 'Biografski slovarji', '12345678' },{ 'CANTIC', 1273, p.canticLink, 'Narodne knjižnice', 'a12345678' },{ 'CANTICN', 9984, p.canticnLink, 'Narodne knjižnice', '981058515460906706' },{ 'CCG', 3920, p.ccgLink, 'Identifikatorji svetilnikov', 'A1761', prefix='[[CCG (identifikator)|CCG]]' },{ 'CINII', 271, p.ciniiLink, 'Znanstvene podatkovne baze', 'DA12345678', link = 'CiNii (identifikator)' },{ 'CWGC', 1908, p.cwgcLink, 'Drugo', '1234567' },{ 'DAAO', 1707, p.daaoLink, 'Inštituti za umetnostno raziskovanje', 'rolf-harris' },{ 'DBLP', 2456, p.dblpLink, 'Znanstvene podatkovne baze', '123/123' },{ 'DIB', 6829, p.dibLink, 'Biografski slovarji', '001953' },{ 'DSI', 2349, p.dsiLink, 'Inštituti za umetnostno raziskovanje', '1538' },{ 'DTBIO', 7902, p.dtbioLink, 'Biografski slovarji', '118554700' },{ 'EMU', 4613, p.emuLink, 'Narodne knjižnice', '15409' },{ 'FAST', 2163, p.fastLink, 'Drugo', '1' },{ 'FNZA', 6792, p.fnzaLink, 'Inštituti za umetnostno raziskovanje', '12' },{ 'GND', 227, p.gndLink, 'Narodne knjižnice', '4079154-3' },{ 'Google Scholar', 1960, p.googleLink, 'Znanstvene podatkovne baze', 'QPdLuj8AAAAJ' },{ 'HDS', 902, p.hdsLink, 'Drugo', '050123' },{ 'IAAF', 1146, p.iaafLink, 'Drugo', '123' },{ 'ICCU', 396, p.iccuLink, 'Narodne knjižnice', 'CFIV000163' }, --formerly SBN{ 'ICIA', 1736, p.iciaLink, 'Inštituti za umetnostno raziskovanje', '1' },{ 'IEU', 9070, p.ieuLink, 'Drugo', 'N\\A\\NationalAcademyofArtandArchitecture' },{ 'ISNI', 213, p.isniLink, 'Splošno', '0000-0000-6653-4145', prefix = '[[ISNI (identifikator)|ISNI]]' },{ 'J9U', 8189, p.j9uLink, 'Narodne knjižnice', '987007305652505171' },{ 'Joconde', 347, p.jocondeLink, 'Inštituti za umetnostno raziskovanje', '12345678901' },{ 'KULTURNAV', 1248, p.kulturnavLink, 'Inštituti za umetnostno raziskovanje', '12345678-1234-1234-1234-1234567890AB', link = 'KulturNav (identifikator)' },{ 'LCCN', 244, p.lccnLink, 'Narodne knjižnice', 'n78039510' },{ 'LIR', 886, p.lirLink, 'Drugo', '1' },{ 'LNB', 1368, p.lnbLink, 'Narodne knjižnice', '123456789' },{ 'Marina Militare', 3863, p.marinaMilitareLink, 'Identifikatorji svetilnikov', '3856' },{ 'MarineTraffic', 3601, p.mtLink, 'Identifikatorji svetilnikov', '1000004707' },{ 'MATHSN', 4955, p.mathsnLink, 'Znanstvene podatkovne baze', '175270' },{ 'MBA', 434, p.mbaLink, 'Drugo', '12345678-1234-1234-1234-1234567890AB', category = 'MusicBrainz' }, --special cat name{ 'MBAREA', 982, p.mbareaLink, 'Drugo', '12345678-1234-1234-1234-1234567890AB', category = 'MusicBrainz area' }, --special cat name{ 'MBI', 1330, p.mbiLink, 'Drugo', '12345678-1234-1234-1234-1234567890AB', category = 'MusicBrainz instrument' }, --special cat name{ 'MBL', 966, p.mblLink, 'Drugo', '12345678-1234-1234-1234-1234567890AB', category = 'MusicBrainz label' }, --special cat name{ 'MBP', 1004, p.mbpLink, 'Drugo', '12345678-1234-1234-1234-1234567890AB', category = 'MusicBrainz place' }, --special cat name{ 'MBRG', 436, p.mbrgLink, 'Drugo', '12345678-1234-1234-1234-1234567890AB', category = 'MusicBrainz release group' }, --special cat name{ 'MBS', 1407, p.mbsLink, 'Drugo', '12345678-1234-1234-1234-1234567890AB', category = 'MusicBrainz series' }, --special cat name{ 'MBW', 435, p.mbwLink, 'Drugo', '12345678-1234-1234-1234-1234567890AB', category = 'MusicBrainz work' }, --special cat name{ 'MGP', 549, p.mgpLink, 'Znanstvene podatkovne baze', '123456' },{ 'NARA', 1225, p.naraLink, 'Drugo', '12345678' },{ 'NCL', 1048, p.nclLink, 'Narodne knjižnice', '1081436' },{ 'NDL', 349, p.ndlLink, 'Narodne knjižnice', '012345678' },{ 'NGA', 3563, p.ngaLink, 'Identifikatorji svetilnikov', '114-5592'},{ 'NGV', 2041, p.ngvLink, 'Umetnostne galerije in muzeji', '12354' },{ 'NKC', 691, p.nkcLink, 'Narodne knjižnice', 'abcd12345678901234' },{ 'NLA', 409, p.nlaLink, 'Narodne knjižnice', '123456789012' },{ 'NLG', 3348, p.nlgLink, 'Narodne knjižnice', '12345678' },{ 'NLK', 5034, p.nlkLink, 'Narodne knjižnice', 'KAB197000000' },{ 'NLP', 1695, p.nlpLink, 'Narodne knjižnice', '9810123456789012345' },{ 'NLR', 1003, p.nlrLink, 'Narodne knjižnice', '123456789' },{ 'NSK', 1375, p.nskLink, 'Narodne knjižnice', '123456789' },{ 'NTA', 1006, p.ntaLink, 'Narodne knjižnice', '12345678X' },{ 'ORCID', 496, p.orcidLink, 'Splošno', '0000-0002-7398-5483', prefix = '[[ORCID (identifikator)|ORCID]]' },{ 'PIC', 2750, p.picLink, 'Inštituti za umetnostno raziskovanje', '1' },{ 'PLWABN', 7293, p.plwabnLink, 'Narodne knjižnice', '9812345678905606' },{ 'Publons', 3829, p.publonsLink, 'Znanstvene podatkovne baze', '2776255' },{ 'RID', 1053, p.ridLink, 'Znanstvene podatkovne baze', 'A-1234-1934' },{ 'RISM', 5504, p.rismLink, 'Drugo', 'pe1', prefix = '[[RISM (identifikator)|RISM (Francija)]]' },{ 'RERO', 3065, p.reroLink, 'Drugo', '02-A012345678', prefix = '[[RERO (identifikator)|RERO (Švica)]]' },{ 'RKDartists', 650, p.rkdartistsLink, 'Inštituti za umetnostno raziskovanje', '123456' },{ 'RKDID', 350, p.rkdidLink, 'Inštituti za umetnostno raziskovanje', '123456' },{ 'RSL', 947, p.rslLink, 'Narodne knjižnice', '123456789' },{ 'Scopus', 1153, p.scopusLink, 'Znanstvene podatkovne baze', '7005487412' },{ 'SELIBR', 906, p.selibrLink, 'Narodne knjižnice', '123456' },{ 'SIKART', 781, p.sikartLink, 'Inštituti za umetnostno raziskovanje', '123456789' },{ 'SNAC-ID', 3430, p.snacLink, 'Drugo', 'A' },{ 'SUDOC', 269, p.sudocLink, 'Drugo', '026927608', prefix = '[[SUDOC (identifikator)|SUDOC (Francija)]]' },{ 'TA98', 1323, p.ta98Link, 'Znanstvene podatkovne baze', 'A12.3.45.678' },{ 'TDVİA', 7314, p.tdviaLink, 'Drugo', 'asim-b-behdele' },{ 'TePapa', 3544, p.tepapaLink, 'Umetnostne galerije in muzeji', '1' },{ 'TLS', 1362, p.tlsLink, 'Drugo', 'Abcd' },{ 'Trove', 1315, p.troveLink, 'Drugo', '12345678', prefix = '[[Trove (identifikator)|Trove (Avstralija)]]' }, --formerly NLA-person{ 'UKPARL', 6213, p.ukparlLink, 'Drugo', 'AQUupyiR' },{ 'ULAN', 245, p.ulanLink, 'Inštituti za umetnostno raziskovanje', '500123456' },{ 'USCG', 3723, p.uscgLink, 'Identifikatorji svetilnikov', '6-0695'},{ 'USCongress', 1157, p.uscongressLink, 'Drugo', 'A000123', link = 'US Congress (identifikator)' },{ 'VcBA', 8034, p.vcbaLink, 'Narodne knjižnice', '494/9793' },{ 'VIAF', 214, p.viafLink, 'Splošno', '123456789', prefix = '[[VIAF (identifikator)|VIAF]]' },{ 'WORLDCATID', 7859, p.worldcatidLink, 'Splošno', 'lccn-n78-95332', link = 'WorldCat Identities (identifikator)' },{ 'ZBMATH', 1556, p.zbmathLink, 'Znanstvene podatkovne baze', 'turing.alan-m' },{ 'CONOR.SI', 1280, p.conorLink, "Splošno", "123456789", prefix = "[[CONOR (identifikator)|CONOR (Slovenija)]]" },{ 'CONOR.SR', 8851, p.conorSrLink, "Splošno", "123456789", prefix = "[[CONOR (identifikator)|CONOR (Srbija)]]" },{ 'SICRIS', 6556, p.sicrisLink, "Znanstvene podatkovne baze", "12345", prefix = "[[SICRIS (identifikator)|SICRIS (Slovenija)]]" },{ 'SBI', 1254, p.sbiLink, "Biografski slovarji", "123456789", prefix = "[[SBI (identifikator)|SBI (Slovenija)]]"},{ 'OSP', 9163, p.OSPLink, "Biografski slovarji", "123456789", prefix = "[[OSP (identifikator)|OSP (Slovenija)]]"},{ 'SIGIC', 2164, p.SIGICLink, "Drugo", "123456789", prefix = "[[SIGIC (identifikator)|SIGIC (Slovenija)]]"},{ 'Istrapedia', 8603, p.IstrapediaLink, "Drugo", "123456789", prefix = "[[Istrapedia]]"},}-- Legitimate aliases to p.conf, for convenience-- Format: { 'alias', 'parameter name in p.conf' }p.aliases = {{ 'DNB', 'GND' }, --Deutsche Nationalbibliothek -> Gemeinsame Normdatei{ 'MusicBrainz', 'MBA' },{ 'MusicBrainz artist', 'MBA' },{ 'MusicBrainz label', 'MBL' },{ 'MusicBrainz release group', 'MBRG' },{ 'MusicBrainz work', 'MBW' },{ 'SBN', 'ICCU' }, --SBN alias to be deprecated at a later stage{ 'TDVIA', 'TDVİA' }, --alias name without diacritics{ 'tdvia', 'TDVİA' }, --lowercase variant without diacritics}-- Deprecated aliases to p.conf; tracked in [[Kategorija:Wikipedijini članki z nezaželenimi identifikatorji normativne kontrole]]-- Format: { 'deprecated parameter name', 'replacement parameter name in p.conf' }p.deprecated = {{ 'GKD', 'GND' },{ 'PND', 'GND' },{ 'RLS', 'RSL' },{ 'SWD', 'GND' },{ 'NARA-organization', 'NARA' },{ 'NARA-person', 'NARA' },}--[[==========================================================================]]--[[ Main ]]--[[==========================================================================]]function p.authorityControl( frame )local resolveEntity = require( 'Modul:ResolveEntityId' )local parentArgs = frame:getParent().args --WD IDs added here laterlocal iParentArgs = 0 --count original/manual parent args only laterlocal worldcatCat = ''local elementsCat = ''local multipleIdCat = ''local suppressedIdCat = ''local suppressedIdCatArts = ''local deprecatedIdCat = ''local differentOnWDCat = ''local sameOnWDCat = ''local stateCat = ''--redirect aliases to proper parameter namesfor _, a in pairs( p.aliases ) dolocal alias, param = a[1], a[2]if (parentArgs[param] == nil or parentArgs[param] == '') and parentArgs[alias] thenparentArgs[param] = parentArgs[alias]endend--redirect deprecated parameters to proper parameter names, and assign tracking catfor _, d in pairs( p.deprecated ) dolocal dep, param = d[1], d[2]if (parentArgs[param] == nil or parentArgs[param] == '') and parentArgs[dep] thenparentArgs[param] = parentArgs[dep]if namespace == 0 thendeprecatedIdCat = '[[Kategorija:Wikipedijini članki z nezaželenimi identifikatorji normativne kontrole|'..dep..']]'endendend--use QID= parameter for testing/example purposes onlylocal itemId = nilif namespace ~= 0 thenlocal qid = parentArgs['qid'] or parentArgs['QID']if qid thenitemId = 'Q'..mw.ustring.gsub(qid, '^[Qq]', '')itemId = resolveEntity._id(itemId) --nil if unresolvableendelseif mw.wikibase thenitemId = mw.wikibase.getEntityIdForCurrentPage()end--Wikidata fallback if availableif itemId thenlocal suppressedIdCount = 0local iMatches = 0for _, params in ipairs( p.conf ) doif params[2] > 0 thenlocal val = parentArgs[mw.ustring.lower(params[1])] or parentArgs[params[1]]if val == nil or val == '' thenlocal wikidataIds = p.getIdsFromWikidata( itemId, 'P'..params[2] )if wikidataIds[1] thenif val == '' and (namespace == 0 or testcases) thensuppressedIdCount = suppressedIdCount + 1suppressedIdCat = '[[Kategorija:Wikipedijini članki z onemogočenimi identifikatorji normativne kontrole|'..params[1]..']]'elseparentArgs[params[1]] = wikidataIds[1] --add ID from WDendendelseiParentArgs = iParentArgs + 1local wikidataIds = p.getIdsFromWikidata( itemId, 'P'..params[2] )if wikidataIds[1] and differentOnWDCat == '' thenlocal bMatch = falsefor _, wd in pairs( wikidataIds ) doif val == wd theniMatches = iMatches + 1bMatch = trueendendif bMatch == false thendifferentOnWDCat = '[[Kategorija:Strani z normativno kontrolo s parametri različnimi od Wikipodatkov|'..params[1]..']]'endendendendendif iMatches > 0 and iMatches == iParentArgs thensameOnWDCat = '[[Kategorija:Strani z normativno kontrolo s parametri enakimi z Wikipodatki]]'endif parentArgs['arts'] == 'arts' and suppressedIdCount > 0 thenif namespace == 0 or testcases thenlocal s = 's'if suppressedIdCount == 1 then s = '' endlocal sCat = 'ACArt with '..suppressedIdCount..' suppressed element'..s-- suppressedIdCatArts = addCat(sCat)endendend--configure rowslocal rct = 0local sectionOrder = {'Splošno','Narodne knjižnice','Umetnostne galerije in muzeji','Inštituti za umetnostno raziskovanje','Biografski slovarji','Znanstvene podatkovne baze','Identifikatorji svetilnikov','Drugo'}local sections = {['Splošno'] = {},['Narodne knjižnice'] = {},['Umetnostne galerije in muzeji'] = {},['Inštituti za umetnostno raziskovanje'] = {},['Biografski slovarji'] = {},['Znanstvene podatkovne baze'] = {},['Identifikatorji svetilnikov'] = {},['Drugo'] = {}}--don't show CANTIC if CANTICN is present, since they both go to the Library of Catalonia--and the library has deprecated CANTIC IDs in favor of CANTICN IDsif parentArgs.CANTICN or parentArgs.canticn thenparentArgs.CANTIC = ''parentArgs.cantic = ''end--don't show NLP if PLWABN is present, since they both go to the National Library of Poland--and the library has deprecated NLP IDs in favor of PLWABN IDsif parentArgs.PLWABN or parentArgs.plwabn thenparentArgs.NLP = ''parentArgs.nlp = ''endfor _, params in ipairs( p.conf ) dolocal val = parentArgs[mw.ustring.lower(params[1])] or parentArgs[params[1]]local tval, tlinks = {}, {} --init tablesif val and val ~= '' and type(params[3]) == 'function' thentable.insert( tval, val )if params.prefix thentable.insert( tlinks, params[3]( val, '1' ) )elsetable.insert( tlinks, params[3]( val ) )endend--collect other unique vals (IDs) from WD, if presentif itemId and tval[1] thenlocal nextIdVal = 2local wikidataIds = p.getIdsFromWikidata( itemId, 'P'..params[2] )for _, v in pairs( wikidataIds ) dolocal bnew = truefor _, w in pairs( tval ) doif v == w then bnew = false endendif bnew thentable.insert( tval, v )table.insert( tlinks, params[3]( v, tostring(nextIdVal) ) )nextIdVal = nextIdVal + 1endendend--assembleif tval[1] thentable.insert( sections[params[4]], p.createRow( params[1], tval, nil, tlinks, true, params.category, params.prefix) )rct = rct + 1if tval[2] thenmultipleIdCat = p.getCatForId( '- večkratni' )endendend--WorldCat-VIAF & WorldCat-LCCNlocal worldcatId = parentArgs['worldcatid'] or parentArgs['WORLDCATID']if worldcatId == nil then --if WORLDCATID absent but unsuppressedlocal viafId = parentArgs['viaf'] or parentArgs['VIAF']local lccnId = parentArgs['lccn'] or parentArgs['LCCN']if viafId and viafId ~= '' and p.viafLink( viafId ) then --VIAF must be present, unsuppressed, & validatedtable.insert( sections['Splošno'], p.createRow( 'VIAF', viafId, '[https://www.worldcat.org/identities/containsVIAFID/'..viafId..' WorldCat (via VIAF)]', nil, false ) )if namespace == 0 thenworldcatCat = '[[Kategorija:Wikipedijini članki z identifikatorji WorldCat-VIAF]]'endrct = rct + 1elseif lccnId and lccnId ~= '' and p.lccnLink( lccnId ) then --LCCN must be present, unsuppressed, & validatedlocal lccnParts = p.splitLccn( lccnId )if lccnParts and lccnParts[1] ~= 'sh' thenlocal lccnIdFmtd = lccnParts[1]..lccnParts[2]..'-'..lccnParts[3]table.insert( sections['Splošno'], p.createRow( 'LCCN', lccnId, '[https://www.worldcat.org/identities/lccn-'..lccnIdFmtd..' WorldCat (via Library of Congress)]', nil, false ) )if namespace == 0 thenworldcatCat = '[[Kategorija:Wikipedijini članki z identifikatorji WorldCat-LCCN]]'endendrct = rct + 1endend--configure Navboxlocal outString = ''local extrap = truelocal extra = parentArgs.extralistif extra == nil or extra == '' thenextrap = falseendif rct > 0 or extrap thenlocal Navbox = require('Modul:Navbox')local sectionID = 1local args = { pid = 'identifiers' } -- #target the list of identifiersif testcases and itemId then args.qid = itemId end --expensivelocal pencil = require('Modul:EditAtWikidata')._showMessage(args)local navboxArgs = {name = 'Normativna kontrola',navboxclass = 'authority-control',bodyclass = 'hlist',state = parentArgs.state or 'autocollapse',navbar = 'off'}for _, sectName in ipairs(sectionOrder) doif #sections[sectName] ~= 0 thennavboxArgs['group'..sectionID] = sectNamenavboxArgs['list'..sectionID] = table.concat(sections[sectName])sectionID = sectionID + 1endendif extrap thenif parentArgs.extragroup thennavboxArgs['group'..sectionID] = parentArgs.extragroupelsenavboxArgs['group'..sectionID] = 'Dodatno'endnavboxArgs['list'..sectionID] = extrasectionID = sectionID + 1endif navboxArgs.list2 thennavboxArgs.title = '[[Wikipedija:Normativna kontrola|Normativna kontrola]]'..pencilelselocal sect = navboxArgs.group1if sect == 'Splošno' or sect == 'Drugo' or sect == 'Dodatno' then-- Just say "Authority control" with no label if only general or only other IDs are present-- since "general" is redundant and "other" is silly when there's nothing to contrast it withnavboxArgs.group1 = '[[Wikipedija:Normativna kontrola|Normativna kontrola]]'..pencilelsenavboxArgs.group1 = '[[Wikipedija:Normativna kontrola|Normativna kontrola: '..sect..']] '..pencilendendoutString = Navbox._navbox(navboxArgs)end--auxCatsif rct == 0 or rct >= 25 thenif namespace == 0 or testcases thenlocal eCat = ''..rct..' elementov normativne kontrole'elementsCat = addCat(eCat)endendif parentArgs.state thenif namespace == 0 or testcases thenlocal sCatif parentArgs.state == 'collapsed' then sCat = 'AC using state parameter: collapsed'elseif parentArgs.state == 'expanded' then sCat = 'AC using state parameter: expanded'elseif parentArgs.state == 'autocollapse' then sCat = 'AC using state parameter: autocollapse'else sCat = 'AC using state parameter: other'endstateCat = addCat(sCat)endendlocal auxCats = worldcatCat..elementsCat..multipleIdCat..suppressedIdCat..suppressedIdCatArts..deprecatedIdCat..differentOnWDCat..sameOnWDCat..stateCatif testcases thenauxCats = mw.ustring.gsub(auxCats, '(%[%[)(Kategorija)', '%1:%2') --for easier checkingend--outoutString = outString..auxCatsif namespace ~= 0 thenoutString = mw.ustring.gsub(outString, '(%[%[)(Kategorija:Članki)', '%1:%2') --by definitionendreturn outStringendreturn p
🔥 Top keywords: Glavna stranVolitve poslancev iz Slovenije v Evropski parlament 2024Posebno:IskanjeVladimir PrebiličBoris TomašičSeznam evroposlancev iz Slovenije (2019–2024)VESNA – zelena strankaReferendum o preferenčnem glasuPosebno:ZadnjeSpremembeIrena JovevaSkupina Evropske ljudske strankePeter GregorčičSlovenska demokratska strankaBranko GrimsZodiakRomana TomcEvropska ljudska strankaKategorija:Slovenski priimkiSlovenijaRenew EuropeNič od tegaSkupina naprednega zavezništva socialistov in demokratovJanez JanšaGibanje SvobodaDržavnozborske volitve v Sloveniji 2022Sulejman I.Politična desnicaVolitve v Evropski parlament 2024Referendum o rabi konopljeLjudmila NovakEvropski parlamentSlovenska ljudska strankaSeznam političnih strank v SlovenijiUrsula von der LeyenCarles PuigdemontResni.caSeznam mednarodnih klicnih kodMagnificoVolitve v Sloveniji