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

Formular: Cita Wikidata

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

Acest modul servește ca suport pentru Șablonul: Citat prin Wikidata .


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

local p = {}
local propertyId
local errorMsg = '<span style = "font-size: 100%" class = "error citation-comment"> Eroare: lipsește parametrul <code style = "color: red;"> $ 1 </code>. </ span > '

showWikidataIcon local = false
local getArgs = require ( 'Modul: Argumente' ). getArgs
local mWikidata = require ( 'Modul: Wikidata' )
local mQuote = require ( 'Formular: Citat' )
local pipetrick = require ( 'Modul: Pipetrick' ). _pipetrick

- Funcții de asistență
funcția locală is_set ( var )
return not ( var == nil sau var == '' );
Sfârșit

funcția locală is_pattern ( str )
returnează is_set ( str ) și str : find ( '$ 1' )
Sfârșit

funcție locală getQualifier ( qualifierId , conjuncție )
argumente locale = { propertyId , qualifierId , conjuncție = conjuncție }
calificativ local = mWikidata . _getQualifier ( args )
dacă calificativ, atunci aratăWikidataIcon = true end
calificativ de întoarcere
Sfârșit

înlocuitor de funcție locală ( msg , args )
întoarce-te mw . mesaj . newRawMessage ( msg , args ): plain ()
Sfârșit

- Funcții pentru a obține date specifice
funcție locală getAutori ()
autori locali String = getQualifier ( 'P2093' )
dacă este_set ( autoriString ) atunci
autori locali ConLink = getQualifier ( 'P50' , ',' )
dacă este_set ( autoriConLinkuri ) atunci
return autoriConLink .. ',' .. autoriString
altfel
returnează autori Șir
Sfârșit
altfel 
returnează getQualifier ( „P50” )
Sfârșit
Sfârșit

funcție locală getTitle ()
local title = getQualifier ( 'P1476' )
sau getQualifier ( „P1810” )
sau getQualifier ( „P1932” )
sau getQualifier ( „P742” )
sau getQualifier ( „P554” )
sau pipetrick ()
returnează titlul
Sfârșit

funcția p . getCitation ( cadru )
local ret
argumente locale = getArgs ( cadru )
	
- Returnează o eroare dacă câmpurile medium sau prop lipsesc în args
în cazul în care nu is_set (args. mediu) , apoi se întoarce înlocuitor (ERRORMSG, 'mediu') final
în cazul în care nu is_set (args. prop) apoi se întoarce înlocuitor (ERRORMSG, 'prop') de capăt
	
propertyId = args . recuzită
	
local identifierFromWD = mWikidata . _getProperty ( { propertyId } )
identificator local = args . id
	
dacă nu este_set ( identificator ) atunci
if identifierFromWD atunci
showWikidataIcon = adevărat
identificator = identifierFromWD
altfel
returnează înlocuitor ( errorMsg , 'id' )
Sfârșit
Sfârșit
	
local urlType
dacă is_pattern ( args . url ) atunci
urlType = 'title'
argumente . url = substitut ( arg . url , identificator )
elseif is_pattern (args. urlcapitolo) atunci
urlType = 'capitol'
argumente . url capitol = înlocuitor ( arg . url capitol , identificator )
elseif is_pattern ( args . url_chapter ) atunci
urlType = 'capitol'
argumente . url_chapter = substitut ( args . url_chapter , identificator )
Sfârșit
	
- Dacă este specificat un identificator, atunci forțați introducerea manuală;
- în acest caz, nu ar trebui obținute date de la Wikidata, altfel ar exista riscul de neconcordanțe între datele manuale și cele automate
if identifier == identifierFromWD atunci
în cazul în care nu is_set (args. autor) , apoi
argumente . autor = getAutori ()
Sfârșit
		
dacă urlType == 'titlu' atunci
dacă nu is_set (args. title) atunci
argumente . title = getTitolo ()
Sfârșit
elseif urlType == 'capitol' atunci
în cazul în care nu is_set (args. capitol) , apoi
argumente . capitol = getTitolo ()
Sfârșit
Sfârșit
		
if not is_set ( args . data ) și not is_set ( args . year ) atunci
argumente . date = getQualifier ( 'P577' )
Sfârșit
		
if not is_set ( args . vol ) și not is_set ( args . volume ) atunci
argumente . volum = getQualifier ( „P478” )
Sfârșit
altfel
dacă urlType == 'title' și nu is_set ( args . title ) atunci
argumente . title = pipetrick ()
elseif urlType == 'capitolul' și nu is_set (args capitol.) , apoi
argumente . capitol = pipetrick ()
Sfârșit
Sfârșit
	
dacă arg . cid atunci
argumente . cid = substitut (arg. cid, identificator)
Sfârșit
	
argumente . id = zero - nu treceți argumentul „id” la modul: Citat
	
ret = m Citat . cita_da_modulo (args. mediums, args)

dacă showWikidataIcon atunci
local mEditAtWikidata = require ( 'Modul: Editați pe Wikidata' )
ret = ret .. '' .. mEditAtWikidata . _showMessage ({ pid = propertyId })
Sfârșit

retur ret
Sfârșit

retur p