Această pagină este protejată de mișcare
Această pagină este protejată

Forma: Controlul autorității

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare

Modul care implementează șablonul {{ Control autoritate }}.

Are două subpagini:


 - [[
* Modul care implementează șablonul Control autoritate.
* Modulul a fost importat inițial din:
* https://en.wikipedia.org/w/index.php?title=Module:Authority_control&oldid=633242817
]]

require ( „Modul: fără globali” )

local mWikidata = require ( 'Modul: Wikidata' )
local modlingue = require ( 'Modul: Limbi' )
local cfg = mw . titlu . new ( 'Modul: Control autoritate / Configurare.json' ): getContent ()

-------------------------------------------------- -----------------------------
- Funcții utilitare
-------------------------------------------------- -----------------------------

- Returnează cifra de verificare ISNI isni trebuie să fie un șir în care primele 15 elemente sunt cifre
funcție locală getIsniCheckDigit ( isni )
total local = 0
pentru i = 1 , 15 fac
cifră locală = isni : octet ( i ) - 48 - Obțineți valoare întreagă
total = ( total + cifră ) * 2
Sfârșit
rest local = total % 11
rezultat local = ( 12 - rest ) % 11
dacă rezultatul == 10 atunci
returnează „X”
Sfârșit
toString întoarcere (rezultat)
Sfârșit

- Validați ISNI (și ORCID) și îl restabiliți ca un șir de 16 caractere sau returnează fals dacă este nevalid
- A se vedea http://support.orcid.org/knowledgebase/articles/116780-structure-of-the-orcid-identifier
funcție locală validateIsni ( id )
id = id : gsub ( '[% -]' , '' ): upper ()
if not id : match ( '^% d% d% d% d% d% d% d% d% d% d% d% d% d% d% d [% dX] $' ) atunci
returnează fals
Sfârșit
dacă getIsniCheckDigit ( id ) ~ = string.char ( id : octet ( 16 )) atunci
returnează fals
Sfârșit
returnează id
Sfârșit

funcție locală splitLccn ( id )
if id : match ( '^% l% l?% l?% d% d% d% d% d% d% d% d% d?% d? $' ) atunci
id = id : gsub ( '^ (% l +) (% d +) (% d% d% d% d% d% d) $' , '% 1 /% 2 /% 3' )
Sfârșit
if id : match ( '^% l% l?% l? /% d% d% d?% d? /% d + $' ) atunci
întoarce-te mw . text . divizat ( id , '/' )
Sfârșit
returnează fals
Sfârșit

funcție locală anexă ( str , c , lungime )
în timp ce str : len () < lungime do
str = c .. str
Sfârșit
return str
Sfârșit

-------------------------------------------------- -----------------------------
- Funcții pentru a genera link-uri
-------------------------------------------------- -----------------------------

local f = {}

funcția f . viafLink ( id )
dacă nu string.match ( id , '^% d + $' ) atunci
returnează fals
Sfârșit
returnează string.format ( '[https://viaf.org/viaf/%s% s]' , id , id )
Sfârșit

funcția f . isniLink ( id )
id = validateIsni ( id )
dacă nu id atunci
returnează fals
Sfârșit
returnează string.format ( '[http://isni.org/isni/%s% s% s% s% s% s]' , id , id : sub ( 1 , 4 ), id : sub ( 5 , 8 ), id : sub ( 9 , 12 ), id : sub ( 13 , 16 ))
Sfârșit

funcția f . sbnLink ( id )
dacă nu string.match ( id , '^ IT \\ ICCU \\ % d% d% d% d% d% d% d% d% d% d $' ) și nu string.match ( id , '^ IT \\ ICCU \\ % u% u [% d% u]% u \\ % d% d% d% d% d% d $ ' ) apoi
returnează fals
Sfârșit
returnează string.format ( '[https://opac.sbn.it/opacsbn/opac/iccu/scheda_authority.jsp?bid=%s% s]' , id , id )
Sfârșit

funcția f . bncfLink ( id )
dacă nu tonumber ( id ) atunci
returnează fals
Sfârșit
returnează string.format ( '[https://thes.bncf.firenze.sbn.it/termine.php?id=%s% s]' , id , id )
Sfârșit

funcția f . EuropeanaLink ( id )
dacă nu string.match ( id , '^ [az] + / base / [1-9]% d * $' ) atunci
returnează fals
Sfârșit
returnează string.format ( '[https://data.europeana.eu/%s% s]' , id , id )
Sfârșit

funcția f . lccnLink ( id )
local parts = splitLccn ( id )
dacă nu părți atunci
returnează fals
Sfârșit
local lccnType = părți [ 1 ] ~ = 'sh' și 'nume' sau 'subiecte'
id = parts [ 1 ] .. parts [ 2 ] .. addend ( parts [ 3 ], '0' , 6 )
returnează string.format ( '[http://id.loc.gov/authorities/%s/%s% s]' , lccnType , id , id )
Sfârșit

funcția f . orcidLink ( id )
id = validateIsni ( id )
dacă nu id atunci
returnează fals
Sfârșit
id = id : sub ( 1 , 4 ) .. '-' .. id : sub ( 5 , 8 ) .. '-' .. id : sub ( 9 , 12 ) .. '-' .. id : sub ( 13 , 16 )
returnează string.format ( '[https://orcid.org/%s% s]' , id , id )
Sfârșit

funcția f . gndLink ( id )
returnează string.format ( '[https://d-nb.info/gnd/%s% s]' , id , id )
Sfârșit

funcția f . bnfLink ( id )
- Adăugați prefixul cb dacă a fost eliminat
dacă nu string.match ( id , '^ cb. + $' ) atunci
id = 'cb' .. id
Sfârșit
return string.format ( '[https://catalogue.bnf.fr/ark:/12148/%s% s] [https://data.bnf.fr/ark:/12148/%s (data)]' , id , id , id )
Sfârșit

funcția f . bneLink ( id )
return string.format ( '[http://catalogo.bne.es/uhtbin/authoritybrowse.cgi?action=display&authority_id=%s% s] [http://datos.bne.es/resource/%s (date) ] ' , id , id , id )
Sfârșit

funcția f . ulanLink ( id )
returnează string.format ( '[https://www.getty.edu/vow/ULANFullDisplay?find=&role=&nation=&subjectid=%s% s]' , id , id )
Sfârșit

funcția f . nlaLink ( id )
returnează string.format ( '[https://nla.gov.au/anbd.aut-an%s% s]' , id , id )
Sfârșit

funcția f . bavLink ( id ) 
dacă nu string.match ( id , '^% d% d% d /% d% d?% d?% d?% d?% d? $' ) atunci
returnează fals
Sfârșit
returnează string.format ( '[https://opac.vatlib.it/auth/detail/%s% s]' , id : sub ( 1 , 3 ) .. '_' .. id : sub ( 5 ), id ) 
Sfârșit

funcția f . cerlLink ( id )
dacă nu string.match ( id , 'cn [cilp]% d% d% d% d% d% d% d% d $' ) atunci 
returnează fals
Sfârșit 
returnează string.format ( '[https://thesaurus.cerl.org/record/%s% s]' , id , id )
Sfârșit

funcția f . ndlLink ( id )
dacă nu string.match ( id , '^ 0?% d% d% d% d% d% d% d% d $' ) atunci
returnează fals
Sfârșit
returnează string.format ( '[https://id.ndl.go.jp/auth/ndlna/%s% s]' , id , id ) 
Sfârșit

funcția f . worldcatLink ( id )
returnează string.format ( '[https://www.worldcat.org/identities/%s% s]' , id , id )
Sfârșit
-------------------------------------------------- -----------------------------
- Funcții exportate
-------------------------------------------------- -----------------------------

local p = {}

- Funcția de utilitate pentru manual, returnează o listă de identificatori.
funcția p . identificatori ( cadru )
local ret = {}
pentru _ , params în ipairs ( mw . text . jsonDecode ( cfg )) face
valoare locală , n = params . etichetă : gsub ( '|% u% u +' , '' )
dacă n > 0 atunci
value = string.format ( '% s (% s)' , valoare , cod param . )
Sfârșit
dacă cadru . argumente . wikidata atunci
value = string.format ( '% s, pe Wikidata [[d: P: P% s | P% s]]' , valoare , parametri . P , parametri . P )
Sfârșit
table.insert ( ret , '*' .. valoare )
Sfârșit
return table.concat ( ret , ' \ n ' )
Sfârșit

- Funcție pentru șablonul {{Control autoritate}}.
funcția p . AuthorityControl ( cadru )
elemente locale , categorii = {}, {}
local ret = "
local styles = 'Modul: control autoritate / styles.css'

pentru _ , params în ipairs ( mw . text . jsonDecode ( cfg )) face
local val = mWikidata . _getProperty ({ 'P' .. parametri . P , n = 1 })
dacă val atunci
local el , cat
link local = f [ params . funcție ] ( val )
dacă legătură atunci
limbi locale = params . limbi și ( modlanguages . languages ( params . languages ) .. '& nbsp;' ) sau ''
el = string.format ( '% s <span class = "uid">% s% s </ span>', params. etichetă, limbi, link - uri)
cat = string.format ( '[[Categorie: Intrările cu cod% s]]'., params cod)
altceva
el = string.format ( '<span class = "error"> Valoarea% s a% s este nevalidă. </span>' , val , cod params . )
cat = string.format ( '[[Categorie: Intrările cu coduri invalide de verificare a autorității (% s)]]., params cod)
Sfârșit
table.insert ( elemente , el )
table.insert ( categorii , pisică )
Sfârșit
Sfârșit

dacă # elemente > 0 atunci
ret = mw . getCurrentFrame (): extensionTag { name = 'templatestyles' , args = { src = styles } }
ret = ret .. string.format ( '<table class = "CdA"> <tr> <th>% s </th> <td>% s </td> </tr> </table>' ,
„[[Ajutor: Verificare autoritate | Verificare autoritate]]” ,
table.concat ( elemente , '<span style = "font-weight: bold;"> & nbsp; · </span>' ))
dacă mWikidata . _instanceOf ({ 'Q5' }) atunci
table.insert ( categorii , „[[Categorie: Intrări de biografie cu coduri de verificare a autorității]]” )
altceva
table.insert ( categorii , „[[Categorie: intrări nebiografice cu coduri de verificare a autorității]]” )
Sfârșit
altceva
table.insert ( categorii , „[[Categorie: Intrări cu șablon Control autoritate, dar fără coduri]]” )
Sfârșit

return ret .. ( mw . title . getCurrentTitle (). namespace == 0 și table.concat ( categories ) sau '' )
Sfârșit

retur p