Modul:Authority control/bakpasir: Perbedaan antara revisi

Konten dihapus Konten ditambahkan
←Membuat halaman berisi 'require('Module:No globals') local p = {} local title = mw.title.getCurrentTitle() local namespace = title.namespace local testcases = (string.sub(title.subpageText,1...'
 
Uzume (bicara | kontrib)
 
(24 revisi perantara oleh satu pengguna lainnya tidak ditampilkan)
Baris 1:
require('Module:No globalsstrict')
 
local p = {}
Baris 13:
local catName = ''
if namespace == 0 then
catName = 'Artikel Wikipedia articlesdengan withpenanda '..id..' identifiers'
elseif namespace == 2 and not title.isSubpage then
catName = 'UserHalaman pagespengguna withdengan penanda '..id..' identifiers'
else
catName = 'MiscellaneousHalaman pagesdengan withpenanda '..id..' identifiers'
end
return '[[CategoryKategori:'..catName..']]'..p.redCatLink(catName)
end
 
Baris 27:
mw.title.new(catName, 14).exists == false
then
return '[[CategoryKategori:PagesHalaman withdengan red-linkedkategori authoritypengawasan controlotoritas categoriesbelum dibuat]]'
end
return ''
end
 
function p.createRow( id, label, rawValues, link, links, withUid, specialCat, prefix)
local catName = 'Artikel Wikipedia articlesdengan withkesalahan faultypenanda '..(specialCat or id)..' identifiers'
if links then -- all links[] use withUid = false; no check needed
local row = '*<span class="nowrap">'..label
localif totlenprefix =then 0
row = row..'*'..prefix
end
for i, l in ipairs( links ) do
if i == 1 and not prefix then row = row..' *'
else row = row..', \n**' end
if l then
row = row..'<span class="uid">'..l..'</span>'
else
row = row..'<span class="error">The '..id..' id '..rawValues[i]..' is not valid.</span>[[CategoryKategori:'..catName..']]'..p.redCatLink(catName)
end
totlen = totlen + #rawValues[i] + 3 -- 3 chars b/w links
end
return row..'\n'
if totlen > 79 then
elseif link then -- All IDs that have a prefix support multiple identifiers, so prefix is not needed
row = string.gsub(row, '"nowrap"', '""') -- avoid [[A–Z Series]]
end
return row..'</span>\n'
elseif link then
if withUid then
return '*<span class="nowrap">'..label..' <span class="uid">'..link..'</span></span>\n'
end
return '*<span class="nowrap">'..label..' '..link..'</span>\n'
end
return '* <span class="error">The '..id..' id '..rawValues..' is not valid.</span>[[CategoryKategori:'..catName..']]'..p.redCatLink(catName)..'\n'
end
 
Baris 65 ⟶ 63:
--[[==========================================================================]]
 
-- 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+$' ) then
return false
end
return '[https://www.aucklandartgallery.com/explore-art-and-ideas/artist/'..id..'/ '..id(label or 'Auckland')..']'..p.getCatForId( 'AAG' )
end
 
function 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$' ) then
return false
end
return '[https://dl.acm.org/profile/'..id..' '..id(label or 'Association for Computing Machinery')..']'..p.getCatForId( 'ACM-DL' )
end
 
function p.adbLink( id, label )
--P1907's format regex: [a-z][-a-z]+-([1-23]\d|[1-9])\d{0,3} (e.g. barton-sir-edmund-toby-71)
if not id:match( '^[a-z][-a-z]+-[1-23]%d%d?%d?%d?$' ) and
not id:match( '^[a-z][-a-z]+-[1-9]%d?%d?%d?$' ) then
return false
end
return '[http://adb.anu.edu.au/biography/'..id..' '..id(label or 'Australia')..']'..p.getCatForId( 'ADB' )
end
 
function p.agsaLink( id, label )
--P6804's format regex: [1-9]\d* (e.g. 3625)
if not id:match( '^[1-9]%d*$' ) then
return false
end
return '[https://www.agsa.sa.gov.au/collection-publications/collection/creators/_/'..id..'/ '..id(label or 'Australia Selatan')..']'..p.getCatForId( 'AGSA' )
end
 
function 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?$' ) then
return false
end
return '[https://autores.uy/autor/'..id..' '..id(label or 'Uruguay')..']'..p.getCatForId( 'autores.uy' )
end
 
function 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
Baris 114 ⟶ 115:
return false
end
return '[http://www.womenaustralia.info/biogs/'..id..'.htm '..id(label or 'Australian Women\'s Register')..']'..p.getCatForId( 'AWR' )
end
 
function p.balatLink( id )
--P3293's format regex: \d+ (e.g. 1)
if not id:match( '^%d+$' ) then
return false
end
return '[http://balat.kikirpa.be/object/104257'..id..' '..id..']'..p.getCatForId( 'BALaT' ) --no https as of 9/2019
end
 
function 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/investigate
Baris 132 ⟶ 125:
return false
end
return '[https://authority.bibsys.no/authority/rest/authorities/html/'..id..' '..id(label or 'Norwegia')..']'..p.getCatForId( 'BIBSYS' )
end
 
function p.bildLink( id, label )
--P2092's format regex: \d+ (e.g. 1)
if not id:match( '^%d+$' ) then
return false
end
return '[https://www.bildindex.de/document/obj'..id..' '..id(label or 'Bildindex (Jerman)')..']'..p.getCatForId( 'Bildindex' )
end
 
function 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$' ) then
return false
end
return '[http://www.bncatalogo.cl/F?func=direct&local_base=red10&doc_number='..id..' '..id(label or 'Chili')..']'..p.getCatForId( 'BNC' )
end
 
function 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
Baris 159 ⟶ 152:
return false
end
return '[http://catalogo.bne.es/uhtbin/authoritybrowse.cgi?action=display&authority_id='..id..' '..id(label or 'Spanyol')..']'..p.getCatForId( 'BNE' ) --no https as of 9/2019
end
 
function 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]$' ) then
Baris 171 ⟶ 164:
id = 'cb'..id
end
return '[https://catalogue.bnf.fr/ark:/12148/'..id..' '..id(label or 'Prancis')..'] [https://data.bnf.fr/ark:/12148/'..id..' (data)]'..p.getCatForId( 'BNF' )
end
 
function 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...
Baris 180 ⟶ 173:
return false
end
local id2id = id:gsub(' +', '%%20')
return '[https://www.ipni.org/ipni/advAuthorSearch.do?find_abbreviation='..id2id..' '..id(label or 'International Plant Names Index')..']'..p.getCatForId( 'Botanist' )
end
 
function 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
Baris 191 ⟶ 184:
return false
end
return '[http://www.biografischportaal.nl/en/persoon/'..id..' '..id(label or 'Belanda')..']'..p.getCatForId( 'BPN' ) --no https as of 9/2019
end
 
function 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]$' ) then
return false
end
return '[http://cantic.bnc.cat/registres/CUCId/'..id..' '..id(label or 'Catalunya')..']'..p.getCatForId( 'CANTIC' ) --no https as of 10/2019
end
 
function 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]$' ) then
return false
end
return '[https://ci.nii.ac.jp/author/'..id..'?l=en '..id(label or 'CiNii (Jepang)')..']'..p.getCatForId( 'CINII' )
end
 
function p.cwgcLink( id, label )
--P1908's format regex: [1-9]\d* (e.g. 75228351)
if not id:match( '^[1-9]%d*$' ) then
return false
end
return '[https://www.cwgc.org/find-war-dead/casualty/'..id..'/ '..id(label or 'Commonwealth War Graves Commission')..']'..p.getCatForId( 'CWGC' )
end
 
function p.daaoLinkemuLink( id, label )
--P4613's format regex: \d{1,6} (e.g. 15409 (or 015409))
if not id:match( '^%d%d?%d?%d?%d?%d?$' ) then
return false
end
return '[http://esu.com.ua/search_articles.php?id='..id..' '..(label or 'Ukraina')..']'..p.getCatForId( 'EMU' )
end
 
function p.daaoLink( id, label )
--P1707's format regex: [a-z\-]+\d* (e.g. rolf-harris)
if not id:match( '^[a-z%-]+%d*$' ) then
return false
end
return '[https://www.daao.org.au/bio/'..id..' '..id(label or 'Australian Artists')..']'..p.getCatForId( 'DAAO' )
end
 
function 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
Baris 234 ⟶ 235:
return false
end
return '[https://dblp.org/pid/'..id..' '..id(label or 'DBLP (computer science)')..']'..p.getCatForId( 'DBLP' )
end
 
function p.dibLink( id, label )
--P6829's format regex: a\d{4}\d?(-[A-D])? (e.g. a1953)
if not id:match( '^a%d%d%d%d%d?%-?[A-D]?$' ) then
return false
end
return '[https://dib.cambridge.org/viewReadPage.do?articleId='..id..' '..id(label or 'Irlandia')..']'..p.getCatForId( 'DIB' )
end
 
function p.dsiLink( id, label )
--P2349's format regex: [1-9]\d* (e.g. 1538)
if not id:match( '^[1-9]%d*$' ) then
return false
end
return '[http://www.uni-stuttgart.de/hi/gnt/dsi2/index.php?table_name=dsi&function=details&where_field=id&where_value='..id..' '..id(label or 'Scientific illustrators')..']'..p.getCatForId( 'DSI' )
end
 
function p.fnzaLinkfastLink( 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?$' ) then
return false
end
return '[http://id.worldcat.org/fast/'..id..'/ '..(label or 'Faceted Application of Subject Terminology')..']'..p.getCatForId( 'FAST' )
end
 
 
function p.fnzaLink( id, label )
--P6792's format regex: [1-9]\d* (e.g. 9785)
if not id:match( '^[1-9]%d*$' ) then
return false
end
return '[https://findnzartists.org.nz/artist/'..id..'/ '..id(label or 'New Zealand Artists')..']'..p.getCatForId( 'FNZA' )
end
 
function 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
Baris 269 ⟶ 279:
return false
end
return '[https://d-nb.info/gnd/'..id..' '..id(label or 'Integrated Authority File (Jerman)')..']'..p.getCatForId( 'GND' )
end
 
function p.hdsLink( id, label )
--P902's format regex: \d{6} (e.g. 050123)
if not id:match( '^%d%d%d%d%d%d$' ) then
return false
end
return '[https://hls-dhs-dss.ch/fr/articles/'..id..' '..id(label or 'Historical Dictionary of Switzerland')..']'..p.getCatForId( 'HDS' )
end
 
function p.iaafLink( id, label )
--P1146's format regex: [0-9][0-9]* (e.g. 012)
if not id:match( '^%d+$' ) then
return false
end
return '[https://www.iaaf.org/athletes/_/'..id..' '..id(label or 'World Athletics')..']'..p.getCatForId( 'IAAF' )
end
 
 
function p.iciaLink( id )
function p.iccuLink( id, label )
--P396's format regex: IT\\ICCU\\(\d{10}|\D\D[\D\d]\D\\\d{6}) (e.g. IT\ICCU\CFIV\000163)
if not id:match( '^IT\\ICCU\\%d%d%d%d%d%d%d%d%d%d$' ) and
not id:match( '^IT\\ICCU\\%u%u[%u%d]%u\\%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 false
end
return '[https://opac.sbn.it/opacsbn/opac/iccu/scheda_authority.jsp?bid='..id..' '..(label or 'Italia')..']'..p.getCatForId( 'ICCU' )
end
function p.iciaLink( id, label )
--P1736's format regex: \d+ (e.g. 1)
if not id:match( '^%d+$' ) then
return false
end
return '[https://www.imj.org.il/artcenter/newsite/en/?artist='..id..' '..id(label or 'ICIA (Israel)')..']'..p.getCatForId( 'ICIA' )
end
 
function 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+$' ) then
return false
end
return '[http://www.encyclopediaofukraine.com/display.asp?linkpath=pages\\'..id..' '..id(label or 'Internet Encyclopedia of Ukraine')..']'..p.getCatForId( 'IEU' )
end
 
function p.isniLink( id, label )
id = p.validateIsni( id ) --e.g. 0000-0000-6653-4145
if not id then
return false
end
return '[https://isni.org/isni/'..id..' '..id:sub(label 1,or 4 )..' ISNI'..id:sub( 5, 8 )..' '..id:sub( 9, 12 )..' '..id:sub( 13, 16 )..']'..p.getCatForId( 'ISNI' ) --no https as of 9/2019
end
 
function 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)..'$'
Baris 318 ⟶ 337:
return false
end
return '[https://www.pop.culture.gouv.fr/notice/joconde/'..id..' '..id(label or 'Joconde (Prancis)')..']'..p.getCatForId( 'Joconde' )
end
 
function 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$' ) then
return false
end
return '[http://kulturnav.org/'..id..' '..id(label or 'KulturNav (Norway)')..']'..p.getCatForId( 'KULTURNAV' ) --no https as of 9/2019
end
 
function p.lccnLink( id, label )
local parts = p.splitLccn( id ) --e.g. n78039510
if not parts then
Baris 336 ⟶ 355:
local 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..' '..id(label or 'Amerika Serikat')..']'..p.getCatForId( 'LCCN' )
end
 
function p.lirLink( id, label )
--P886's format regex: \d+ (e.g. 1)
if not id:match( '^%d+$' ) then
return false
end
return '[http://www.e-lir.ch/e-LIR___Lexicon.'..id..'.450.0.html '..id(label or 'Lexicon Istoric Retic (Swiss)')..']'..p.getCatForId( 'LIR' ) --no https as of 9/2019
end
 
function 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$' ) then
return false
end
return '[https://kopkatalogs.lv/F?func=direct&local_base=lnc10&doc_number='..id..'&P_CON_LNG=ENG '..id(label or 'Latvia')..']'..p.getCatForId( 'LNB' )
end
 
function p.leonoreLink( id, label )
--P640's format regex: LH//\d{1,4}/\d{1,3}|19800035/\d{1,4}/\d{1,5}(Bis|Ter)?|C/0/\d{1,2} (e.g. LH//2064/18)
if not id:match( '^LH//%d%d?%d?%d?/%d%d?%d?$' ) and --IDs from LH//1/1 to LH//2794/54 (legionaries)
not id:match( '^19800035/%d%d?%d?%d?/%d%d?%d?%d?%d?$' ) and --IDs from 19800035/1/1 to 19800035/385/51670 (legionnaires who died 1954-1977 & some who died < 1954)
not id:match( '^C19800035/0%d%d?%d?%d?/%d%d?%d?%d?%d?Bis$' ) then and --IDs from C/0/1 to C/0/84 (84 famous legionaries)?
not id:match( '^19800035/%d%d?%d?%d?/%d%d?%d?%d?%d?Ter$' ) and --IDs from ?
not id:match( '^C/0/%d%d?$' ) then --IDs from C/0/1 to C/0/84 (84 famous legionaries)
return false
end
return '[http://www.culture.gouv.fr/public/mistral/leonore_fr?ACTION=CHERCHER&FIELD_1=COTE&VALUE_1='..id..' '..id(label or 'Léonore (Prancis)')..']'..p.getCatForId( 'Léonore' ) --no https as of 9/2019
end
 
function p.maLink( id, label )
--P6366's format regex: [1-9]\d{43,9} (e.g. 1498221862)
if not id:match( '^[1-9]%d%d%d%d?%d?%d?%d?%d?%d?$' ) then
return false
end
return '[https://academic.microsoft.com/v2/detail/'..id..' '..id(label or 'Microsoft Academic')..']'..p.getCatForId( 'MA' )
end
 
function 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$' ) then
return false
end
returnlocal url = '[https://musicbrainz.org/artist/'..id..'
local cat = '..id..']'..p.getCatForId( 'MusicBrainz' ) --special categorycat name
if label then
return '['..url..' '..label..']'..cat
else
return '[[MBA (identifier)|MusicBrainz]] ['..url..' artist]'..cat
end
end
 
function 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$' ) then
return false
end
returnlocal url = '[https://musicbrainz.org/area/'..id..'
local cat = '..id..']'..p.getCatForId( 'MusicBrainz area' ) --special categorycat name
if label then
return '['..url..' '..label..']'..cat
else
return '[[MBAREA (identifier)|MusicBrainz]] ['..url..' area]'..cat
end
end
 
function 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$' ) then
return false
end
returnlocal url = '[https://musicbrainz.org/instrument/'..id..'
local cat = '..id..']'..p.getCatForId( 'MusicBrainz instrument' ) --special categorycat name
if label then
return '['..url..' '..label..']'..cat
else
return '[[MBI (identifier)|MusicBrainz]] ['..url..' instrument]'..cat
end
end
 
function 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$' ) then
return false
end
returnlocal url = '[https://musicbrainz.org/label/'..id..'
local cat = '..id..']'..p.getCatForId( 'MusicBrainz label' ) --special categorycat name
if label then
return '['..url..' '..label..']'..cat
else
return '[[MBL (identifier)|MusicBrainz]] ['..url..' label]'..cat
end
end
 
function 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$' ) then
return false
end
returnlocal url = '[https://musicbrainz.org/place/'..id..'
local cat = '..id..']'..p.getCatForId( 'MusicBrainz place' ) --special categorycat name
if label then
return '['..url..' '..label..']'..cat
else
return '[[MBP (identifier)|MusicBrainz]] ['..url..' place]'..cat
end
end
 
function 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$' ) then
return false
end
returnlocal url = '[https://musicbrainz.org/release-group/'..id..'
local cat = '..id..']'..p.getCatForId( 'MusicBrainz release group' ) --special categorycat name
if label then
return '['..url..' '..label..']'..cat
else
return '[[MBRG (identifier)|MusicBrainz]] ['..url..' release group]'..cat
end
end
 
function 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$' ) then
return false
end
returnlocal url = '[https://musicbrainz.org/series/'..id..'
local cat = '..id..']'..p.getCatForId( 'MusicBrainz series' ) --special categorycat name
if label then
return '['..url..' '..label..']'..cat
else
return '[[MBS (identifier)|MusicBrainz]] ['..url..' series]'..cat
end
end
 
function 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$' ) then
return false
end
return '[https://musicbrainz.org/work/'..id..' '..id..']'..p.getCatForId( 'MusicBrainz work' ) --special category name
local url = 'https://musicbrainz.org/work/'..id
local cat = p.getCatForId( 'MusicBrainz work' )--special cat name
if label then
return '['..url..' '..label..']'..cat
else
return '[[MBW (identifier)|MusicBrainz]] ['..url..' work]'..cat
end
end
 
function p.mgpLink( id, label )
--P549's format regex: \d{1,6} (e.g. 123456)
if not id:match( '^%d%d?%d?%d?%d?%d?$' ) then
return false
end
return '[https://genealogy.math.ndsu.nodak.edu/id.php?id='..id..' '..id(label or 'Mathematics Genealogy Project')..']'..p.getCatForId( 'MGP' )
end
 
function 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?$' ) then
return false
end
return '[https://catalog.archives.gov/id/'..id..' '..id(label or 'National Archives (US)')..']'..p.getCatForId( 'NARA' )
end
 
function p.nclLink( id, label )
--P1048's format regex: \d+ (e.g. 1081436)
if not id:match( '^%d+$' ) then
return false
end
return '[http://aleweb.ncl.edu.tw/F/?func=accref&acc_sequence='..id..'&CON_LNG=ENG '..id(label or 'Taiwan')..']'..p.getCatForId( 'NCL' ) --no https as of 9/2019
end
 
function 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$' ) then
return false
end
return '[https://id.ndl.go.jp/auth/ndlna/'..id..' '..id(label or 'Jepang')..']'..p.getCatForId( 'NDL' )
end
 
function p.ngvLink( id, label )
--P2041's format regex: \d+ (e.g. 12354)
if not id:match( '^%d+$' ) then
return false
end
return '[https://www.ngv.vic.gov.au/explore/collection/artist/'..id..'/ '..id(label or 'Victoria')..']'..p.getCatForId( 'NGV' )
end
 
function 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?$' ) then
return false
end
return '[https://aleph.nkp.cz/F/?func=find-c&local_base=aut&ccl_term=ica='..id..'&CON_LNG=ENG '..id(label or 'Republik Ceko')..']'..p.getCatForId( 'NKC' )
end
 
function 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?$' ) then
return false
end
return '[https://nla.gov.au/anbd.aut-an'..id..' '..id(label or 'Australia')..']'..p.getCatForId( 'NLA' )
end
 
function p.nlgLink( id, label )
--P3348's format regex: [1-9]\d* (e.g. 1)
if not id:match( '^[1-9]%d*$' ) then
return false
end
return '[https://data.nlg.gr/resource/authority/record'..id..' '..id(label or 'Yunani')..']'..p.getCatForId( 'NLG' )
end
 
function p.nliLink( id, label )
--P949's format regex: \d{9} (e.g. 123456789)
if not id:match( '^%d%d%d%d%d%d%d%d%d$' ) then
return false
end
return '[http://uli.nli.org.il/F/?func=direct&doc_number='..id..'&local_base=nlx10'..' '..id(label or 'Israel')..']'..p.getCatForId( 'NLI' )
end
 
function p.nlkLink( id, label )
--P5034's format regex: KA.(19|20).{7} (e.g. KAC201501465)
if not id:match( '^KA.19.......$' ) and
Baris 515 ⟶ 585:
return false
end
return '[https://nl.go.kr/authorities/resource/'..id..' '..id(label or 'Korea')..']'..p.getCatForId( 'NLK' )
end
 
function 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
Baris 524 ⟶ 594:
return false
end
return '[https://tools.wmflabs.org/wikidata-externalid-url?p=1695&id='..id..' '..id(label or 'Polandia')..']'..p.getCatForId( 'NLP' )
end
 
function 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$' ) then
return false
end
return '[http://aleph.bibnat.ro:8991/F/?func=direct&local_base=NLR10&doc_number='..id..' '..(label or 'Romania')..']'..p.getCatForId( 'NLR' )
end
 
function 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$' ) then
return false
end
return '[http://katalog.nsk.hr/F/?func=direct&doc_number='..id..'&local_base=nsk10 '..id(label or 'Kroasia')..']'..p.getCatForId( 'NSK' ) --no https as of 9/2019
end
 
function 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]$' ) then
return false
end
return '[http://data.bibliotheken.nl/id/thes/p'..id..' '..id(label or 'Belanda')..']'..p.getCatForId( 'NTA' )
end
 
function p.orcidLink( id, label )
id = p.validateIsni( id ) --e.g. 0000-0002-7398-5483
if not id then
Baris 557 ⟶ 627:
end
id = id:sub( 1, 4 )..'-'..id:sub( 5, 8 )..'-'..id:sub( 9, 12 )..'-'..id:sub( 13, 16 )
return '[https://orcid.org/'..id..' '..id(label or 'ORCID')..']'..p.getCatForId( 'ORCID' )
end
 
function p.plwabnLinkpicLink( id, label )
--P2750's format regex: [1-9]\d* (e.g. 1)
if not id:match( '^[1-9]%d*$' ) then
return false
end
return '[https://pic.nypl.org/constituents/'..id..' '..(label or 'Photographers\' Identities')..']'..p.getCatForId( 'PIC' )
end
 
function 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*$' ) then
return false
end
return '[http://mak.bn.org.pl/cgi-bin/KHW/makwww.exe?BM=1&NU=1&IM=4&WI='..id..' '..id(label or 'Polandia')..']'..p.getCatForId( 'PLWABN' )
end
 
function p.publonsLink( id, label )
--P3829's format regex: \d+ (e.g. 654601)
if not id:match( '^%d+$' ) then
return false
end
return '[https://publons.com/author/'..id..'/ '..id(label or 'Publons (researchers)')..']'..p.getCatForId( 'Publons' )
end
 
function p.picLinkridLink( id, label )
--P2750P1053's format regex: [1A-9Z]{1,3}-\d{4}-(19|20)\d\d* (e.g. 1AAS-5150-2020)
if not id:match( '^[1A-9Z][A-Z]?[A-Z]?%-%d%d%d%d%-19%d%d*$' ) thenand
not id:match( '^[A-Z][A-Z]?[A-Z]?%-%d%d%d%d%-20%d%d$' ) then
return false
end
return '[https://picwww.nyplresearcherid.orgcom/constituentsrid/'..id..' '..id(label or 'ResearcherID')..']'..p.getCatForId( 'PICRID' )
end
 
function p.ridLinkrismLink( id, label )
--P1053P5504's format regex: [A-Z]{1,3}-\d{4}-(19pe|20ks)?\[1-9]d\d* (e.g. AAS-5150-2020pe30006410)
if not id:match( '^pe[A1-Z9][A-Z]?[A-Z]?%-%d%d%d%d%-19%d%d*$' ) and --99% start with 'pe'
not id:match( '^ks[A1-Z9][A-Z]?[A-Z]?%-%d%d%d%d%-20%d%d*$' ) thenand
not id:match( '^[1-9]%d*$' ) then
return false
end
return '[https://wwwopac.researcheridrism.com/ridinfo/search?id='..id..' '..id(label or 'RISM (Prancis)')..']'..p.getCatForId( 'RIDRISM' )
end
 
function 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]?$' ) then
return false
end
return '[http://data.rero.ch/'..id..' '..id(label or 'RERO (Swiss)')..']'..p.getCatForId( 'RERO' )
end
 
function 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?$' ) then
return false
end
return '[https://rkd.nl/en/explore/artists/'..id..' '..id(label or 'RKD Artists (Belanda)')..']'..p.getCatForId( 'RKDartists' )
end
 
function 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?$' ) then
return false
end
return '[https://rkd.nl/nl/explore/images/'..id..' '..id(label or 'RKD ID (Belanda)')..']'..p.getCatForId( 'RKDID' )
end
 
function 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?$' ) then
return false
end
return '[http://aleph.rsl.ru/F?func=find-b&find_code=SYS&adjacent=Y&local_base=RSL11&request='..id..'&CON_LNG=ENG '..id(label or 'Rusia')..']'..p.getCatForId( 'RSL' ) --no https as of 9/2019
end
 
function p.iccuLinkselibrLink( id, label )
--P396's format regex: IT\\ICCU\\(\d{10}|\D\D[\D\d]\D\\\d{6}) (e.g. IT\ICCU\CFIV\000163)
if not id:match( '^IT\\ICCU\\%d%d%d%d%d%d%d%d%d%d$' ) and
not id:match( '^IT\\ICCU\\%u%u[%u%d]%u\\%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 false
end
return '[https://opac.sbn.it/opacsbn/opac/iccu/scheda_authority.jsp?bid='..id..' '..id..']'..p.getCatForId( 'ICCU' ) end
 
function p.selibrLink( id )
--P906's format regex: [1-9]\d{4,5} (e.g. 123456)
if not id:match( '^[1-9]%d%d%d%d%d?$' ) then
return false
end
return '[https://libris.kb.se/auth/'..id..' '..id(label or 'Swedia')..']'..p.getCatForId( 'SELIBR' )
end
 
function 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?$' ) then
return false
end
return '[http://www.sikart.ch/KuenstlerInnen.aspx?id='..id..'&lng=en '..id(label or 'SIKART (Swiss)')..']'..p.getCatForId( 'SIKART' ) --no https as of 9/2019
end
 
function 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]*$' ) then
return false
end
return '[https://snaccooperative.org/ark:/99166/'..id..' '..id(label or 'Social Networks and Archival Context')..']'..p.getCatForId( 'SNAC-ID' )
end
 
function 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 false
end
return '[https://www.idref.fr/'..id..' '..id(label or 'SUDOC (Prancis)')..']'..p.getCatForId( 'SUDOC' )
end
 
function p.s2authoridLink( id, label )
--P4012's format regex: [1-9]\d* (e.g. 1796130)
if not id:match( '^[1-9]%d*$' ) then
return false
end
return '[https://www.semanticscholar.org/author/'..id..' '..id(label or 'Semantic Scholar')..']'..p.getCatForId( 'Semantic Scholar author' ) --special categorycat name
end
 
function 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]?$' ) then
return false
end
returnlocal 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..' '..id(label or 'Terminologia Anatomica')..']'..p.getCatForId( 'TA98' )
end
 
function p.tdviaLink( id, label )
--P7314's format regex: [a-z/-]+] (e.g. barkan-omer-lutfi)
if not id:match( '^[a-z/-]+$' ) then
return false
end
return '[https://islamansiklopedisi.org.tr/'..id..' '..id(label or 'Encyclopedia of Islam')..']'..p.getCatForId( 'TDVİA' )
end
 
function p.teLink( id )
--P1693's format regex: E[1-8]\.\d{1,2}\.\d{1,2}\.\d{1,2}\.\d{1}\.\d{1}\.\d{1,3} (e.g. E1.23.45.67.8.9.0)
local e1, e2 = id:match( '^E([1-8])%.(%d%d?)%.%d%d?%.%d%d?%.%d%.%d%.%d%d?%d?$' )
if not e1 then
return false
end
local TEnum = 'TEe0'..e1 --no formatter URL in WD, probably due to this complexity
if e1 == '5' or e1 == '7' then
if #e2 == 1 then e2 = '0'..e2 end
TEnum = TEnum..e2
end
return '[http://www.unifr.ch/ifaa/Public/EntryPage/ViewTE/'..TEnum..'.html '..id..']'..p.getCatForId( 'TE' )
end
 
function p.tepapaLink( id, label )
--P3544's format regex: \d+ (e.g. 1)
if not id:match( '^%d+$' ) then
return false
end
return '[https://collections.tepapa.govt.nz/agent/'..id..' '..id(label or 'Te Papa (Selandia Baru)')..']'..p.getCatForId( 'TePapa' )
end
 
function p.thLink( id )
--P1694's format regex: H\d\.\d{2}\.\d{2}\.\d\.\d{5} (e.g. H1.23.45.6.78901)
local h1, h2 = id:match( '^H(%d)%.(%d%d)%.%d%d%.%d%.%d%d%d%d%d$' )
if not h1 then
return false
end
local THnum = 'THh'..h1..h2 --no formatter URL in WD, probably due to this complexity
return '[http://www.unifr.ch/ifaa/Public/EntryPage/ViewTH/'..THnum..'.html '..id..']'..p.getCatForId( 'TH' )
end
 
function p.tlsLink( id, label )
local id2id = id:gsub(' +', '_')
--P1362's format regex: \p{Lu}[\p{L}\d_',\.\-\(\)\*/–]{3,59} (e.g. Abcd)
local class = "[%a%d_',%.%-%(%)%*/–]"
local regex = "'^%u"'..string.rep(class, 3)..string.rep(class.."'?"', 56).."'$"'
if not mw.ustring.match( id2id, regex ) then
return false
end
return '[http://tls.theaterwissenschaft.ch/wiki/'..id2id..' '..id(label or 'Theaterlexikon (Swiss)')..']'..p.getCatForId( 'TLS' ) --no https as of 9/2019
end
 
function 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?$' ) then
return false
end
return '[https://trove.nla.gov.au/people/'..id..' '..id(label or 'Trove (Australia)')..']'..p.getCatForId( 'Trove' )
end
 
function 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]$' ) then
return false
end
return '[https://id.parliament.uk/'..id..' '..id(label or 'UK Parliament')..']'..p.getCatForId( 'UKPARL' )
end
 
function 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$' ) then
return false
end
return '[https://www.getty.edu/vow/ULANFullDisplay?find=&role=&nation=&subjectid='..id..' '..id(label or 'Artist Names (Getty)')..']'..p.getCatForId( 'ULAN' )
end
 
function 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$' ) then
return false
end
return '[http://bioguide.congress.gov/scripts/biodisplay.pl?index='..id..' '..id(label or 'US Congress')..']'..p.getCatForId( 'USCongress' ) --no https as of 9/2019
end
 
function 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?$' ) then
return false
end
local id2id = id:gsub('\/', '_')
return '[https://opac.vatlib.it/auth/detail/'..id2id..' '..id(label or 'Vatikan')..']'..p.getCatForId( 'VcBA' )
end
 
function 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
Baris 779 ⟶ 829:
return false
end
-- 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..' '..id(label or 'VIAF')..']'..p.getCatForId( 'VIAF' )
end
 
Baris 787 ⟶ 838:
function p.append(str, c, length)
while str:len() < length do
str = c .. str
end
return str
Baris 802 ⟶ 853:
local result = (12 - remainder) % 11
if result == 10 then
return "'X"'
end
return tostring( result )
Baris 848 ⟶ 899:
end
return ids
end
 
function p.matchesWikidataRequirements( itemId, reqs )
for _, group in ipairs( reqs ) do
local property = 'P'..group[1]
local qid = group[2]
local statements = mw.wikibase.getBestStatements( itemId, property )
if statements then
for _, statement in ipairs( statements ) do
if statement.mainsnak.datavalue then
if statement.mainsnak.datavalue.value['numeric-id'] == qid then
return true
end end end end end
return false
end
 
Baris 868 ⟶ 905:
local wikiTable = '{| class="wikitable sortable"\n'..
'! rowspan=2 | Parameter\n'..
'! rowspan=2 | LabelBagian\n'..
'! rowspan=2; data-sort-type=number | WikidataDitampilkan propertysebagai\n'..
'! colspanrowspan=42; data-sort-type=number | Tracking categories and pageAtribut countsWikidata\n'..
'! colspan=4 | Kategori pelacak dan jumlah halaman\n'..
'|-\n'..
'! [[:CategoryKategori:Artikel Wikipedia articlesdengan withinformasi authoritypengawasan control informationotoritas|'.. 'ArticlesArtikel]]\n'..
'! [[:CategoryKategori:UserHalaman pagespengguna withdengan authorityinformasi controlpengawasan informationotoritas|'.. 'UserHalaman pagespengguna]]\n'..
'! [[:CategoryKategori:MiscellaneousHalaman pagesdengan withinformasi authoritypengawasan control informationotoritas|'.. 'Misc.Halaman pageslain]]\n'..
'! [[:CategoryKategori:Artikel Wikipedia articlesdengan withinformasi faultypengawasan authorityotoritas control informationbermasalah|'.. 'FaultyID IDsbermasalah]]\n'..
'|-\n'
local lang = mw.getContentLanguage()
local a, u, m, f, P = 0, 0, 0, 0, 0 --cumulative sums
for _, conf in pairs( p.conf ) do
local param, linkpid, pidsection = conf[1], conf[2], conf[34]
local appearsAs
if param == 'WORLDCATID' then
-- WorldCat is special
appearsAs = '[https://www.worldcat.org/identities/lccn-n78039510 WorldCat]'
elseif conf.prefix then
appearsAs = conf.prefix
else
appearsAs = conf[3](conf[5])
end
local link = conf.link or param..' (identifier)'
local category = conf.category or param
local args = { id = 'f', pid }
local wpl = frame:expandTemplate{ title = 'Wikidata property link', args = args }
--cats
local articleCat = 'Artikel Wikipedia articlesdengan withpenanda '..category..' identifiers'
local userCat = 'UserHalaman pagespengguna withdengan penanda '..category..' identifiers'
local miscCat = 'MiscellaneousHalaman pagesdengan withpenanda '..category..' identifiers'
local faultyCat = 'Artikel Wikipedia articlesdengan withdengan faultypenanda '..category..' identifiersbermasalah'
--counts
local articleCount = lang:formatNum( mw.site.stats.pagesInCategory(articleCat, 'pages') )
Baris 894 ⟶ 942:
local miscCount = lang:formatNum( mw.site.stats.pagesInCategory(miscCat, 'pages') )
local faultyCount = lang:formatNum( mw.site.stats.pagesInCategory(faultyCat, 'pages') )
--calcs
P = P + 1 --property count
a = a + lang:parseFormattedNumber(articleCount)
u = u + lang:parseFormattedNumber(userCount)
m = m + lang:parseFormattedNumber(miscCount)
f = f + lang:parseFormattedNumber(faultyCount)
--concat
wikiTable = wikiTable..'\n'..
'|-\n'..
'||[['..link..'|'..param..']]'..
'||'..linksection..
'||'..appearsAs..
'||data-sort-value='..pid..'|'..wpl..
'||style="text-align: right;"|[[:CategoryKategori:'..articleCat..'|'..articleCount..']]'..
'||style="text-align: right;"|[[:CategoryKategori:'.. userCat..'|'.. userCount..']]'..
'||style="text-align: right;"|[[:CategoryKategori:'.. miscCat..'|'.. miscCount..']]'..
'||style="text-align: right;"|[[:CategoryKategori:'.. faultyCat..'|'.. faultyCount..']]'
end
Baris 909 ⟶ 964:
local wcd = { 'WorldCat-LCCN', 'WorldCat-VIAF' }
for _, w in pairs(wcd) do
local articleCat = 'Wikipedia articlesArticles with '..w..' identifiers'
local articleCount = lang:formatNum( mw.site.stats.pagesInCategory(articleCat, 'pages') )
local appearsAs
if w == 'WorldCat-LCCN' then
appearsAs = '[https://www.worldcat.org/identities/lccn-n79-113947 WorldCat (via Library of Congress)]'
else
appearsAs = '[https://www.worldcat.org/identities/containsVIAFID/12345789 WorldCat (via VIAF)]'
end
a = a + lang:parseFormattedNumber(articleCount)
wikiTable = wikiTable..'\n'..
'|-\n'..
'||'..'—'..
'||Umum'..w..
'||'..appearsAs..
'||data-sort-value='..w..'|'..'—'..
'||style="text-align: right;"|[[:Category:Kategori'..articleCat..'|'..articleCount..']]'..
'||style="text-align: right;"|—'..
'||style="text-align: right;"|—'..
Baris 922 ⟶ 985:
end
--append sums
return wikiTable..'\n|}'
wikiTable = wikiTable..'\n'..
'|-\n'..
'! style="text-align: right;" colspan=3|Total'..
'||style="text-align: right;"|'..lang:formatNum(P)..
'||style="text-align: right;"|'..lang:formatNum(a)..
'||style="text-align: right;"|'..lang:formatNum(u)..
'||style="text-align: right;"|'..lang:formatNum(m)..
'||style="text-align: right;"|'..lang:formatNum(f)
return require('Module:Suppress categories').main(wikiTable)..'\n|}'
end
 
Baris 929 ⟶ 1.002:
--[[==========================================================================]]
 
-- IfPlease a specificuse "<parameter> (identifier) redirect" exists for an identifier, please route through this particular redirectredirects rather than linking directly to the target page. This reduces clutter in "What links here" and improves reverse lookup of articles where a manifestation of this particular identifier is used.
-- 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 }
-- Check that the Wikidata item has this property-->value before adding it
-- p.conf table optional named parameters:
local reqs = {}
-- 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")
-- Parameter format: { 'parameter name', 'label', propertyId # in Wikidata, formatting/validation function }
-- prefix: to include a prefix (usually a wikilink explaining what the identifier is) before the external link itself
p.conf = {
{ 'AAG', '[[AAG (identifier)|AAG]]', 3372, p.aagLink, 'Galeri seni dan museum', '1' },
{ 'ACM-DL', 864, p.acmLink, 'Basis data ilmiah', '12345678901', link = '[[ACM DL (identifier)|ACM DL]]', 864, p.acmLink },
{ 'ADB', '[[ADB (identifier)|ADB]]', 1907, p.adbLink,'Kamus biografi', 'barton-sir-edmund-toby-71' },
{ 'AGSA', '[[AGSA (identifier)|AGSA]]', 6804, p.agsaLink, 'Galeri seni dan museum', '3625' },
{ 'autores.uy', '[[autores.uy (identifier)|autores.uy]]', 2558, p.autoresuyLink, 'Kamus biografi', '12345' },
{ 'AWR', '[[AWR (identifier)|AWR]]', 4186, p.awrLink, 'Kamus biografi', 'PR00768b' },
{ 'BIBSYS', 1015, p.bibsysLink, 'Perpustakaan nasional', '1234567890123' },
{ 'BALaT', '[[BALaT (identifier)|BALaT]]', 3293, p.balatLink },
{ 'Bildindex', 2092, p.bildLink, 'Lembaga penelitian seni', '1' },
{ 'BIBSYS', '[[BIBSYS (identifier)|BIBSYS]]', 1015, p.bibsysLink },
{ 'BNC', 1890, p.bncLink, 'Perpustakaan nasional', '123456789' },
{ 'Bildindex', '[[Bildindex (identifier)|Bildindex]]', 2092, p.bildLink },
{ 'BNE', 950, p.bneLink, 'Perpustakaan nasional', 'XX1234567' },
{ 'BNC', '[[BNC (identifier)|BNC]]', 1890, p.bncLink },
{ 'BNF', 268, p.bnfLink, 'Perpustakaan nasional', '123456789' },
{ 'BNE', '[[BNE (identifier)|BNE]]', 950, p.bneLink },
{ 'Botanist', 428, p.botanistLink , 'Basis data ilmiah', 'L.' },
{ 'BNF', '[[BNF (identifier)|BNF]]', 268, p.bnfLink },
{ 'BPN', 651, p.bpnLink , 'Kamus biografi', '12345678' },
{ 'Botanist', '[[Botanist (identifier)|Botanist]]', 428, p.botanistLink },
{ 'CANTIC', 1273, p.canticLink, 'Perpustakaan nasional', 'a12345678' },
{ 'BPN', '[[BPN (identifier)|BPN]]', 651, p.bpnLink },
{ 'CINII', 271, p.ciniiLink, 'Basis data ilmiah', 'DA12345678', link = 'CiNii (identifier)' },
{ 'CANTIC', '[[CANTIC (identifier)|CANTIC]]', 1273, p.canticLink },
{ 'CINIICWGC', '[[CiNii1908, (identifier)|CiNii]]'p.cwgcLink, 271'Lain-lain', p.ciniiLink'1234567' },
{ 'DAAO', 1707, p.daaoLink, 'Lembaga penelitian seni', 'rolf-harris' },
{ 'CWGC', '[[CWGC (identifier)|CWGC]]', 1908, p.cwgcLink },
{ 'DBLP', 2456, p.dblpLink, 'Basis data ilmiah', '123/123' },
{ 'DAAO', '[[DAAO (identifier)|DAAO]]', 1707, p.daaoLink },
{ 'DIB', 6829, p.dibLink, 'Kamus biografi', 'a1234' },
{ 'DBLP', '[[DBLP (identifier)|DBLP]]', 2456, p.dblpLink },
{ 'DSI', 2349, p.dsiLink, 'Lembaga penelitian seni', '1538' },
{ 'DIB', '[[DIB (identifier)|DIB]]', 6829, p.dibLink },
{ 'EMU', 4613, p.emuLink, 'Perpustakaan nasional', '15409' },
{ 'DSI', '[[DSI (identifier)|DSI]]', 2349, p.dsiLink },
{ 'FNZAFAST', '[[FNZA2163, (identifier)|FNZA]]'p.fastLink, 6792'Lain-lain', p.fnzaLink'1' }, --wd
{ 'FNZA', 6792, p.fnzaLink, 'Lembaga penelitian seni', '12' },
{ 'GND', '[[GND (identifier)|GND]]', 227, p.gndLink },
{ 'HDSGND', '[[HDS227, (identifier)|HDS]]'p.gndLink, 902'Umum', p.hdsLink'4079154-3' },
{ 'IAAFHDS', '[[IAAF902, (identifier)|IAAF]]'p.hdsLink, 1146'Lain-lain', p.iaafLink'050123' },
{ 'IAAF', 1146, p.iaafLink, 'Lain-lain', '123' },
{ 'ICCU', '[[ICCU (identifier)|ICCU]]', 396, p.iccuLink }, --formerly SBN
{ 'ICCU', 396, p.iccuLink, 'Perpustakaan nasional', 'IT\\ICCU\\CFIV\\000163' }, --formerly SBN
{ 'ICIA', '[[ICIA (identifier)|ICIA]]', 1736, p.iciaLink },
{ 'ICIA', 1736, p.iciaLink, 'Lembaga penelitian seni', '1' },
{ 'IEU', '[[IEU (identifier)|IEU]]', 9070, p.ieuLink },
{ 'IEU', 9070, p.ieuLink, 'Lain-lain', 'N\\A\\NationalAcademyofArtandArchitecture' },
{ 'ISNI', '[[ISNI (identifier)|ISNI]]', 213, p.isniLink },
{ 'JocondeISNI', 213, p.isniLink, 'Umum', '0000-0000-6653-4145', prefix = '[[JocondeISNI (identifier)|JocondeISNI]]' , 347, p.jocondeLink },
{ 'Joconde', 347, p.jocondeLink, 'Lembaga penelitian seni', '12345678901' },
{ 'KULTURNAV', '[[KulturNav (identifier)|KulturNav]]', 1248, p.kulturnavLink },
{ 'KULTURNAV', 1248, p.kulturnavLink, 'Lembaga penelitian seni', '12345678-1234-1234-1234-1234567890AB', link = 'KulturNav (identifier)' },
{ 'LCCN', '[[LCCN (identifier)|LCCN]]', 244, p.lccnLink },
{ 'LCCN', 244, p.lccnLink, 'Perpustakaan nasional', 'n78039510' },
{ 'LIR', '[[LIR (identifier)|LIR]]', 886, p.lirLink },
{ 'LNBLIR', '[[LNB886, (identifier)|LNB]]'p.lirLink, 1368'Lain-lain', p.lnbLink'1' },
{ 'LNB', 1368, p.lnbLink, 'Perpustakaan nasional', '123456789' },
{ 'Léonore', '[[Léonore (identifier)|Léonore]]', 640, p.leonoreLink },
{ 'MALéonore', 640, p.leonoreLink, 'Lain-lain', 'LH//1/1', prefix = '[[MALéonore (identifier)|MALéonore (Prancis)]]', 6366, p.maLink },
{ 'MA', 6366, p.maLink, 'Lain-lain', '123456789' },
{ 'MBA', '[[MBA (identifier)|MBA]]', 434, p.mbaLink, category = 'MusicBrainz' }, --special category name
{ 'MBAREAMBA', '[[MBAREA434, (identifier)|MBAREA]]'p.mbaLink, 982'Lain-lain', p.mbareaLink'12345678-1234-1234-1234-1234567890AB', category = 'MusicBrainz area' }, --special categorycat name
{ 'MBIMBAREA', '[[MBI982, (identifier)|MBI]]'p.mbareaLink, 1330'Lain-lain', p.mbiLink'12345678-1234-1234-1234-1234567890AB', category = 'MusicBrainz instrumentarea' }, --special categorycat name
{ 'MBLMBI', '[[MBL1330, (identifier)|MBL]]'p.mbiLink, 966'Lain-lain', p.mblLink'12345678-1234-1234-1234-1234567890AB', category = 'MusicBrainz labelinstrument' }, --special categorycat name
{ 'MBPMBL', '[[MBP966, (identifier)|MBP]]'p.mblLink, 1004'Lain-lain', p.mbpLink'12345678-1234-1234-1234-1234567890AB', category = 'MusicBrainz placelabel' }, --special categorycat name
{ 'MBRGMBP', '[[MBRG1004, (identifier)|MBRG]]'p.mbpLink, 436'Lain-lain', p.mbrgLink'12345678-1234-1234-1234-1234567890AB', category = 'MusicBrainz release groupplace' }, --special categorycat name
{ 'MBSMBRG', '[[MBS436, (identifier)|MBS]]'p.mbrgLink, 1407'Lain-lain', p.mbsLink'12345678-1234-1234-1234-1234567890AB', category = 'MusicBrainz seriesrelease group' }, --special categorycat name
{ 'MBWMBS', '[[MBW1407, (identifier)|MBW]]p.mbsLink, work'Lain-lain', 435, p.mbwLink'12345678-1234-1234-1234-1234567890AB', category = 'MusicBrainz workseries' }, --special categorycat name
{ 'MBW', 435, p.mbwLink, 'Lain-lain', '12345678-1234-1234-1234-1234567890AB', category = 'MusicBrainz work' }, --special cat name
{ 'MGP', '[[MGP (identifier)|MGP]]', 549, p.mgpLink },
{ 'MGP', 549, p.mgpLink, 'Basis data ilmiah', '123456' },
{ 'NARA', '[[NARA (identifier)|NARA]]', 1225, p.naraLink },
{ 'NCLNARA', '[[NCL1225, (identifier)|NBL]]'p.naraLink, 1048'Lain-lain', p.nclLink'12345678' },
{ 'NCL', 1048, p.nclLink, 'Perpustakaan nasional', '1081436' },
{ 'NDL', '[[NDL (identifier)|NDL]]', 349, p.ndlLink },
{ 'NDL', 349, p.ndlLink, 'Perpustakaan nasional', '012345678' },
{ 'NGV', '[[NGV (identifier)|NGV]]', 2041, p.ngvLink },
{ 'NKCNGV', 2041, p.ngvLink, '[[NKCGaleri (identifier)|NKC]]seni dan museum', 691, p.nkcLink'12354' },
{ 'NKC', 691, p.nkcLink, 'Perpustakaan nasional', 'abcd12345678901234' },
{ 'NLA', '[[NLA (identifier)|NLA]]', 409, p.nlaLink },
{ 'NLA', 409, p.nlaLink, 'Perpustakaan nasional', '123456789012' },
{ 'NLG', '[[NLG (identifier)|NLG]]', 3348, p.nlgLink },
{ 'NLG', 3348, p.nlgLink, 'Perpustakaan nasional', '12345678' },
{ 'NLI', '[[NLI (identifier)|NLI]]', 949, p.nliLink },
{ 'NLI', 949, p.nliLink, 'Perpustakaan nasional', '123456789' },
{ 'NLK', '[[NLK (identifier)|NLK]]', 5034, p.nlkLink },
{ 'NLK', 5034, p.nlkLink, 'Perpustakaan nasional', 'KAB197000000' },
{ 'NLP', '[[NLP (identifier)|NLP]]', 1695, p.nlpLink },
{ 'NLP', 1695, p.nlpLink, 'Perpustakaan nasional', '9810123456789012345' },
{ 'NLR', '[[NLR (identifier)|NLR]]', 1003, p.nlrLink },
{ 'NLR', 1003, p.nlrLink, 'Perpustakaan nasional', '123456789' },
{ 'NSK', '[[NSK (identifier)|NSK]]', 1375, p.nskLink },
{ 'NSK', 1375, p.nskLink, 'Perpustakaan nasional', '123456789' },
{ 'NTA', '[[NTA (identifier)|NTA]]', 1006, p.ntaLink },
{ 'NTA', 1006, p.ntaLink, 'Perpustakaan nasional', '12345678X' },
{ 'ORCID', '[[ORCID (identifier)|ORCID]]', 496, p.orcidLink },
{ 'PICORCID', 496, p.orcidLink, 'Umum', '0000-0002-7398-5483', prefix = '[[PICORCID (identifier)|PICORCID]]', 2750, p.picLink }, --wd
{ 'PIC', 2750, p.picLink, 'Lembaga penelitian seni', '1' },
{ 'PLWABN', '[[PLWABN (identifier)|PLWABN]]', 7293, p.plwabnLink },
{ 'PLWABN', 7293, p.plwabnLink, 'Perpustakaan nasional', '9812345678905606' },
{ 'Publons', '[[Publons (identifier)|Publons]]', 3829, p.publonsLink },
{ 'Publons', 3829, p.publonsLink, 'Basis data ilmiah', '2776255' },
{ 'RID', '[[RID (identifier)|ResearcherID]]', 1053, p.ridLink },
{ 'RID', 1053, p.ridLink, 'Basis data ilmiah', 'A-1234-1934' },
{ 'RERO', '[[RERO (identifier)|RERO]]', 3065, p.reroLink },
{ 'RKDartistsRISM', 5504, p.rismLink, 'Lain-lain', 'pe1', prefix = '[[RKDartistsRISM (identifier)|RKDRISM (Prancis)]]', 650, p.rkdartistsLink },
{ 'RKDIDRERO', 3065, p.reroLink, 'Lain-lain', '02-A012345678', prefix = '[[RKDIDRERO (identifier)|RKDimagesRERO ID(Swiss)]]', 350, p.rkdidLink },
{ 'RKDartists', 650, p.rkdartistsLink, 'Lembaga penelitian seni', '123456' },
{ 'RSL', '[[RSL (identifier)|RSL]]', 947, p.rslLink },
{ 'RKDID', 350, p.rkdidLink, 'Lembaga penelitian seni', '123456' },
{ 'SELIBR', '[[SELIBR (identifier)|SELIBR]]', 906, p.selibrLink },
{ 'RSL', 947, p.rslLink, 'Perpustakaan nasional', '123456789' },
{ 'SIKART', '[[SIKART (identifier)|SIKART]]', 781, p.sikartLink },
{ 'SELIBR', 906, p.selibrLink, 'Perpustakaan nasional', '123456' },
{ 'SNAC-ID', '[[SNAC-ID (identifier)|SNAC]]', 3430, p.snacLink },
{ 'SIKART', 781, p.sikartLink, 'Lembaga penelitian seni', '123456789' },
{ 'SUDOC', '[[SUDOC (identifier)|SUDOC]]', 269, p.sudocLink },
{ 'SNAC-ID', 3430, p.snacLink, 'Lain-lain', 'A' },
{ 'S2AuthorId', '[[S2AuthorId (identifier)|S2AuthorId]]', 4012, p.s2authoridLink, category = 'Semantic Scholar author' }, --special category name
{ 'TA98SUDOC', 269, p.sudocLink, 'Lain-lain', '026927608', prefix = '[[TA98SUDOC (identifier)|TA98SUDOC (Prancis)]]', 1323, p.ta98Link },
{ 'S2AuthorId', 4012, p.s2authoridLink, 'Basis data ilmiah', '1796130', category = 'Semantic Scholar author' }, --special cat name
{ 'TDVİA', '[[TDVİA (identifier)|TDVİA]]', 7314, p.tdviaLink },
{ 'TETA98', 1323, p.ta98Link, '[[TEBasis (identifier)|TE]]data ilmiah', 1693, p'A12.teLink3.45.678' },
{ 'TDVİA', 7314, p.tdviaLink, 'Lain-lain', 'asim-b-behdele' },
{ 'TePapa', '[[TePapa (identifier)|TePapa]]', 3544, p.tepapaLink },
{ 'TePapa', 3544, p.tepapaLink, 'Galeri seni dan museum', '1' },
{ 'TH', '[[TH (identifier)|TH]]', 1694, p.thLink },
{ 'TLS', '[[TLS (identifier)|TLS]]', 1362, p.tlsLink, 'Lain-lain', 'Abcd' },
{ 'Trove', 1315, p.troveLink, 'Lain-lain', '12345678', prefix = '[[Trove (identifier)|Trove (Australia)]]', 1315, p.troveLink }, --formerly NLA-person
{ 'UKPARL', '[[UKPARL (identifier)|UKPARL]]', 6213, p.ukparlLink, 'Lain-lain', 'AQUupyiR' },
{ 'ULAN', '[[ULAN (identifier)|ULAN]]', 245, p.ulanLink, 'Lembaga penelitian seni', '500123456' },
{ 'USCongress', 1157, p.uscongressLink, 'Lain-lain', 'A000123', link = '[[US Congress (identifier)|US Congress]]', 1157, p.uscongressLink },
{ 'VcBA', '[[VcBA (identifier)|VcBA]]', 8034, p.vcbaLink, 'Perpustakaan nasional', '494/9793' },
{ 'VIAF', 214, p.viafLink, 'Umum', '123456789', prefix = '[[VIAF (identifier)|VIAF]]', 214, p.viafLink },
{ 'WORLDCATID', 7859, nil, 'Umum', nil, link = '[[WorldCat Identities (identifier)|WorldCat Identities]]', 7859, nil },
}
 
Baris 1.039 ⟶ 1.115:
}
 
-- Deprecated aliases to p.conf; tracked in [[CategoryKategori:Wikipedia articlesArticles with deprecated authority control identifiers]]
-- Format: { 'deprecated parameter name', 'replacement parameter name in p.conf' }
p.deprecated = {
{ 'GKD', 'GND' },
{ 'PND', 'GND' },
{ 'RLS', 'RSL' },
{ 'SWD', 'GND' },
{ 'NARA-organization', 'NARA' },
Baris 1.055 ⟶ 1.131:
 
function p.authorityControl( frame )
local resolveEntity = require( "'Module:ResolveEntityId"' )
local parentArgs = frame:getParent().args --WD IDs added here later
local iParentArgs = 0 --count original/manual parent args only later
local elements = {} --create/insert rows later
local worldcatCat = ''
local elementsCat = ''
local multipleIdCat = ''
local suppressedIdCat = ''
local suppressedIdCatArts = ''
local deprecatedIdCat = ''
local differentOnWDCat = ''
local sameOnWDCat = ''
local stateCat = ''
--Redirectredirect aliases to proper parameter names
for _, a in pairs( p.aliases ) do
local alias, param = a[1], a[2]
Baris 1.074 ⟶ 1.152:
end
--Redirectredirect deprecated parameters to proper parameter names, and assign tracking cat
for _, d in pairs( p.deprecated ) do
local dep, param = d[1], d[2]
Baris 1.080 ⟶ 1.158:
parentArgs[param] = parentArgs[dep]
if namespace == 0 then
deprecatedIdCat = '[[CategoryKategori:Wikipedia articlesArticles with deprecated authority control identifiers|'..dep..']]'
end
end
end
--Useuse QID= parameter for testing/example purposes only
local itemId = nil
if namespace ~= 0 then
Baris 1.099 ⟶ 1.177:
--Wikidata fallback if available
if itemId then
local suppressedIdCount = 0
local iMatches = 0
for _, params in ipairs( p.conf ) do
if params[32] > 0 then
local val = parentArgs[mw.ustring.lower(params[1])] or parentArgs[params[1]]
if val == nil or val == '' then
local wikidataIds = p.getIdsFromWikidata( itemId, 'P'..params[2] )
local canUseWikidata = nil
if reqs[paramswikidataIds[1]] then
if val == '' and (namespace == 0 or testcases) then
--since reqs{} has been nil afaicr, p.matchesWikidataRequirements will never be called
suppressedIdCount = suppressedIdCount + 1
--TODO: reqs{} doesn't seem useful/necessary; appendage of early WD incorporation?
suppressedIdCat = '[[Kategori:Artikel Wikipedia dengan penanda pengawasan otoritas yang disembunyikan|'..params[1]..']]'
canUseWikidata = p.matchesWikidataRequirements( itemId, reqs[params[1]] )
else
parentArgs[params[1]] = wikidataIds[1] --add ID from WD
canUseWikidata = true
end
if canUseWikidata then
local wikidataIds = p.getIdsFromWikidata( itemId, 'P'..params[3] )
if wikidataIds[1] then
if val == '' and (namespace == 0 or testcases) then
suppressedIdCat = '[[Category:Wikipedia articles with suppressed authority control identifiers|'..params[1]..']]'
else
parentArgs[params[1]] = wikidataIds[1] --add ID from WD
end
end
end
else
iParentArgs = iParentArgs + 1
local wikidataIds = p.getIdsFromWikidata( itemId, 'P'..params[32] )
if wikidataIds[1] and differentOnWDCat == '' then
local bMatch = false
Baris 1.134 ⟶ 1.204:
end
if bMatch == false then
differentOnWDCat = '[[CategoryKategori:PagesHalaman usingyang authoritymenggunakan controlpengawasan withotoritas parametersdengan differentparameter onberbeda dari Wikidata|'..params[1]..']]'
end end end end end
if iMatches > 0 and iMatches == iParentArgs then
sameOnWDCat = '[[CategoryKategori:PagesHalaman usingyang authoritymenggunakan controlpengawasan withotoritas parametersdengan allsemua matchingparameter cocok dengan Wikidata]]'
end
if parentArgs['arts'] == 'arts' and suppressedIdCount > 0 then
if namespace == 0 or testcases then
local s = 's'
if suppressedIdCount == 1 then s = '' end
local sCat = 'ACArt with '..suppressedIdCount..' suppressed element'..s
suppressedIdCatArts = '[[Kategori:'..sCat..']]'..p.redCatLink(sCat)
end
end
end
--Configuredconfigure rows
local rct = 0
local sectionOrder = {'Umum','Perpustakaan nasional','Galeri seni dan museum',
'Lembaga penelitian seni','Kamus biografi','Basis data ilmiah',
'Lain-lain'}
local sections = {
['Umum'] = {},
['Perpustakaan nasional'] = {},
['Galeri seni dan museum'] = {},
['Lembaga penelitian seni'] = {},
['Kamus biografi'] = {},
['Basis data ilmiah'] = {},
['Lain-lain'] = {}
}
--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 IDs
if parentArgs.PLWABN or parentArgs.plwabn then
parentArgs.NLP = ''
parentArgs.nlp = ''
end
for _, params in ipairs( p.conf ) do
local val = parentArgs[mw.ustring.lower(params[1])] or parentArgs[params[1]]
local tval, tlinks = {}, {} --init tables
if val and val ~= '' and type(params[43]) == 'function' then
table.insert( tval, val )
table.insert( tlinks,if params[4]( val.prefix )then )
table.insert( tlinks, params[3]( val, '1' ) )
else
table.insert( tlinks, params[3]( val ) )
end
end
--collect other unique vals (IDs) from WD, if present
if itemId and tval[1] then
local nextIdVal = 2
local wikidataIds = p.getIdsFromWikidata( itemId, 'P'..params[32] )
for _, v in pairs( wikidataIds ) do
local bnew = true
Baris 1.160 ⟶ 1.261:
if bnew then
table.insert( tval, v )
table.insert( tlinks, params[43]( v, tostring(nextIdVal) ) )
nextIdVal = nextIdVal + 1
end
end
Baris 1.166 ⟶ 1.268:
--assemble
if tval[1] then
table.insert( elementssections[params[4]], p.createRow( params[1], params[2]..':', tval, nil, tlinks, true, params.category, params.prefix) )
rct = rct + 1
if tval[2] then
multipleIdCat = p.getCatForId( 'multipleganda' )
end
end
end
Baris 1.177 ⟶ 1.280:
local worldcatId = parentArgs['worldcatid'] or parentArgs['WORLDCATID']
if worldcatId and worldcatId ~= '' then --if WORLDCATID present & unsuppressed
table.insert( elementssections['Umum'], p.createRow( 'WORLDCATID', '', worldcatId, '[[WorldCat Identities (identifier)|WorldCat Identities]]: [https://www.worldcat.org/identities/'..mw.uri.encode(worldcatId, 'PATH')..' '..worldcatId..'WorldCat]', nil, false ) ) --Validation?
worldcatCat = p.getCatForId( 'WORLDCATID' )
rct = rct + 1
elseif worldcatId == nil then --if WORLDCATID absent but unsuppressed
local 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, & validated
table.insert( elementssections['Umum'], p.createRow( 'VIAF', '', viafId, '[[WorldCat Identities (identifier)|WorldCat Identities]] (via VIAF): [https://www.worldcat.org/identities/containsVIAFID/'..viafId..' '..viafId..'WorldCat (via VIAF)]', nil, false ) )
if namespace == 0 then
worldcatCat = '[[CategoryKategori:Artikel Wikipedia articlesdengan withpenanda WorldCat-VIAF identifiers]]'
end
rct = rct + 1
elseif lccnId and lccnId ~= '' and p.lccnLink( lccnId ) then --LCCN must be present, unsuppressed, & validated
local lccnParts = p.splitLccn( lccnId )
if lccnParts and lccnParts[1] ~= 'sh' then
local lccnIdFmtd = lccnParts[1]..lccnParts[2]..'-'..lccnParts[3]
table.insert( elementssections['Umum'], p.createRow( 'LCCN', '', lccnId, '[[WorldCat Identities (identifier)|WorldCat Identities]] (via LCCN): [https://www.worldcat.org/identities/lccn-'..lccnIdFmtd..' '..lccnIdFmtd..'WorldCat (via Library of Congress)]', nil, false ) )
if namespace == 0 then
worldcatCat = '[[CategoryKategori:Artikel Wikipedia articlesdengan withpenanda WorldCat-LCCN identifiers]]'
end
end
rct = rct + 1
end
elseif worldcatId == '' then --if WORLDCATID suppressed
suppressedIdCat = '[[CategoryKategori:Artikel Wikipedia articlesdengan withpenanda suppressedpengawasan authorityotoritas controlyang identifiersdisembunyikan|WORLDCATID]]'
end
local Navbox = require('Module:Navbox')
local elementsCat = ''
if rct == 0 or rct >= 25 then
local eCat = 'AC with '..rct..' elements'
elementsCat = '[[Category:'..eCat..']]'..p.redCatLink(eCat)
end
--configure Navbox
local outString = ''
if #elementsrct > 0 then
local Navbox = require('Module:Navbox')
local sectionID = 1
local args = { pid = 'identifiers' } -- #target the list of identifiers
if testcases and itemId then args = { pid = 'identifiers', qid = itemId } end --expensive
local pencil = frame:expandTemplate{ title = 'EditAtWikidata', args = args}
local navboxArgs = {
outString = Navbox._navbox( {
name = 'Authority control',
navboxclass = 'authority-control',
bodyclass = 'hlist',
state = parentArgs.state or 'autocollapse',
group1 = '[[Help:Authority control|Authority control]]'..pencil,
navbar = 'off'
list1 = table.concat( elements )
} )
for _, sectName in ipairs(sectionOrder) do
if #sections[sectName] ~= 0 then
navboxArgs['group'..sectionID] = sectName
navboxArgs['list'..sectionID] = table.concat(sections[sectName])
sectionID = sectionID + 1
end
end
if navboxArgs.group2 then
navboxArgs.title = '[[Bantuan:Pengawasan otoritas|Pengawasan otoritas]]'..pencil
else
local sect = navboxArgs.group1
if sect == 'Umum' or sect == 'Lain-lain' 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 with
navboxArgs.group1 = '[[Bantuan:Pengawasan otoritas|Pengawasan otoritas]]'..pencil
else
navboxArgs.group1 = '[[Bantuan:Pengawasan otoritas|Pengawasan otoritas: '..sect..']] '..pencil
end
end
outString = Navbox._navbox(navboxArgs)
end
--auxCats
local auxCats = worldcatCat .. elementsCat .. multipleIdCat .. suppressedIdCat ..
if rct == 0 or rct >= 25 then
deprecatedIdCat .. differentOnWDCat .. sameOnWDCat
if namespace == 0 or testcases then
local eCat = 'AC dengan '..rct..' elemen'
elementsCat = '[[Kategori:'..eCat..']]'..p.redCatLink(eCat)
end
end
if parentArgs.state then
if namespace == 0 or testcases then
local sCat
if parentArgs.state == 'collapsed' then sCat = 'AC yang menggunakan parameter state: collapsed'
elseif parentArgs.state == 'expanded' then sCat = 'AC yang menggunakan parameter state: expanded'
elseif parentArgs.state == 'autocollapse' then sCat = 'AC yang menggunakan parameter state: autocollapse'
else sCat = 'AC yang menggunakan parameter state: other'
end
stateCat = '[[Kategori:'..sCat..']]'..p.redCatLink(sCat)
end
end
local auxCats = worldcatCat..elementsCat..multipleIdCat..suppressedIdCat..suppressedIdCatArts..
deprecatedIdCat..differentOnWDCat..sameOnWDCat..stateCat
if testcases then
auxCats = mw.ustring.gsub(auxCats, '(%[%[)(Category)', '%1:%2') --for easier checking
end
outString = outString .. auxCats
--out
outString = outString..auxCats
if namespace ~= 0 then
outString = mw.ustring.gsub(outString, '(%[%[)(Category:WikipediaArtikel articlesWikipedia)', '%1:%2') --by definition
end