Hopp til innhald

Modul:WikidataBilde

Frå Wikipedia – det frie oppslagsverket

Dokumentasjon for modulen kan opprettast påModul:WikidataBilde/dok


localp={}

functiondump(out)
iftype(out)=='table'then
locals='{ '
fork,vinpairs(out)do
iftype(k)~='number'thenk=' "'..k..' "'end
s=s..'['..k..'] = '..dump(v)..','
end
returns..'} '
else
returntostring(out)
end
end

localkategori={[5]="biografi"}
localresten="[[Kategori:Artiklar der bilete er henta frå Wikidata]]"

functiongetProp(qid,pid)
localentity=mw.wikibase.getEntity(qid)

ifnotentitythen

return{}

end
returnentity:getBestStatements(pid)
end


functionfinnKategori(frame)
ifnotmw.wikibasethen
returnresten
end
localartikkel=mw.wikibase.getEntityObject()
ifnotartikkelthen
returnresten
end
localclaims=artikkel:getBestStatements('P31')
ifnotclaimsthen
returnresten
end
for_,vinipairs(claims)do
ifv.type=='statement'then
localsnak=v.mainsnak
ifsnak.snaktype=='value'then
ifsnak.datatype=='wikibase-item'then
localdata=snak.datavalue
ifdata.type=='wikibase-entityid'then
localvalue=data.value
ifvalue["entity-type"]=="item"then
ifkategori[value["numeric-id"]]then
return"[[Kategori:Artiklar der bilete er henta frå Wikidata –"..kategori[value["numeric-id"]].."]]"
end
end
end
end
end
end
end

-- failed to find correct type
returnresten
end

-- Return bilete til artikkelen
functionp.wikidatabilete(frame)
ifnotmw.wikibasethen
return""
end
localartikkel=mw.wikibase.getEntityObject()
ifnotartikkelthen
return""
end
localclaims=artikkel:getBestStatements('P18')
ifnotclaimsthen
return""
end
for_,vinipairs(claims)do
ifv.type=='statement'then
localsnak=v.mainsnak
ifsnak.snaktype=='value'then
ifsnak.datatype=='commonsMedia'then
localdata=snak.datavalue
ifdata.type=='string'then
returndata.value
end
end
end
end
end

-- failed to find correct type
return""
end

functionp.framebilete(frame)
localargs=frame.args
ifargs[1]==nilthen
localpFrame=frame:getParent();
args=pFrame.args;
fork,vinpairs(frame.args)do
args[k]=v;
end
end
ifargs['bilete']then
returnargs['bilete']
end
return""
end

functionp.framekart(frame)
localargs=frame.args
ifargs[1]==nilthen
localpFrame=frame:getParent();
args=pFrame.args;
fork,vinpairs(frame.args)do
args[k]=v;
end
end
ifargs['kart']then
returnargs['kart']
end
return""
end

functionp.velgbilete(frame)
localbilete=p.framebilete(frame)
ifbiletethen
ifbilete==""then
-- return ""
elseifbilete=="utan"then
return""
else
returnbilete
end
else
return""
end
localfrawikidata=p.wikidatabilete(frame)
localframekart=p.framekart(frame)
ifframekart==frawikidatathen
return""
end

returnfrawikidata
end

functionp.biletetekst(frame)

ifnotmw.wikibasethen
return''
end
localartikkel=mw.wikibase.getEntityObject()
ifnotartikkelthen
return''
end
localclaims=artikkel:getBestStatements('P18')
ifnotclaimsthen
return''
end
for_,vinipairs(claims)do
ifv.type=='statement'then
localsnak=v.mainsnak
ifsnak.snaktype=='value'then
ifsnak.datatype=='commonsMedia'then
localdata=snak.datavalue
ifdata.type=='string'then
localq=v.qualifiers
ifqthen
wdcaptions=q['P2096']
end
ifwdcaptionsthen
fork,linpairs(wdcaptions)do
ifl.datavalue.valueandl.datavalue.value.textandl.datavalue.value.language=='nn'then
returnl.datavalue.value.text
end
end
end
end
end
end
end
end

-- failed to find correct type
return''

end
functionp.byline(frame)

ifnotmw.wikibasethen
return''
end
localartikkel=mw.wikibase.getEntityObject()
ifnotartikkelthen
return''
end
localclaims=artikkel:getBestStatements('P18')
ifnotclaimsthen
return''
end
for_,vinipairs(claims)do
ifv.type=='statement'then
localsnak=v.mainsnak
ifsnak.snaktype=='value'then
ifsnak.datatype=='commonsMedia'then
localdata=snak.datavalue
ifdata.type=='string'then
localq=v.qualifiers
ifqthen
wdcaptions=q['P2093']
end
ifwdcaptionsthen
fork,linpairs(wdcaptions)do
ifl.datavalue.valueandl.datavalue.value.textthen
returnl.datavalue.value.text
end
end
end
end
end
end
end
end

-- failed to find correct type
return''

end

functionp.finnesbileteiartikkel(frame)
localinnhold=mw.title.getCurrentTitle():getContent()or''
localfrawikidata=p.wikidatabilete(frame):gsub("[%-%+%*%?%^%%%(%)]","%%%0")-- Erstatter visse spesialtegn (spesialtegn for Lua) med escapede versjoner av samme spesialtegn
frawikidata=frawikidata:gsub("[_ ]","[_ ]")-- Erstatter understrek eller mellomrom med mønsteret [_ ], så søket nedenfor finner begge varianter
ifinnhold:find(":"..frawikidata)then
return"[[Kategori:Artiklar der bilete frå Wikidata også er brukte utanfor infoboksen]]"
else
return""
end
end

functionp.sammenlignbilete(frame)
localfraframe=p.framebilete(frame)
localfrawikidata=p.wikidatabilete(frame)
iffraframe==frawikidatathen
iffraframe==""then
return""
else
return"[[Kategori:Artiklar der bilete er samme som på Wikidata]]"
end
else
iffrawikidata==""then
return"[[Kategori:Artiklar hvor bilete mangler på Wikidata]]"
end
iffraframe==""then
return"[[Kategori:Artiklar uten bilete i infoboks med bilete på Wikidata]]"
end
return"[[Kategori:Artiklar med bilete forskjellig fra Wikidata]]"
end
end

functionp.sammenlignMedWikidataValgtBilde(frame)
localfraframe=p.framebilete(frame)
localfrawikidata=p.wikidatabilete(frame)
localframekart=p.framekart(frame)
localfinnesbileteiartikkel=p.finnesbileteiartikkel(frame)
iffraframe==frawikidatathen
iffraframe==""then
return""
else
return
end
else
iffrawikidata==""then
return"[[Kategori:Artiklar hvor bilete mangler på Wikidata]]"
end
ifframekart==frawikidatathen
return"[[Kategori:Artiklar hvor kart er samme som bilete på Wikidata]]"
end
iffraframe==""then
returnfinnKategori(frame)..finnesbileteiartikkel
end
return"[[Kategori:Artiklar med bilete forskjellig fra Wikidata]]"
end
end

functionbilete(snak)
assert(snak)

localitem=nil

ifsnak.snaktype=="value"andsnak.datatype=="commonsMedia"then

value=snak.datavalue.valueornil
end
returnvalue
end

-- returnerer en rad for overskrift og en avsluttning hvis det er nødvendig
functionformatOverskrift(overskrift,kollaps)
localoversk=""
localavslutt=""
ifoverskriftandoverskrift~=""then
oversk=string.format([[
<tr class= "overskrift" valign= "top" ><td colspan= "4" >%s</td></tr>
]],overskrift)
end
ifkollapsandkollaps~=""then
end
returnoversk,avslutt
end

functionformatbileterad(value)
returnstring.format([[
<tr class= "bilete" valign= "top" ><td colspan= "4" class= "sentrert" >%s</td></tr>
]],value)
end

functionp.bilete(qid,pid)
localprop=getProp(qid,pid)
ifnotpropornotprop[1]ornotprop[1].mainsnakthen
return""
end
returnbilete(prop[1].mainsnak)
end

functionbiletetekst(qualifier)
localP2096=nil
ifqualifierthen
P2096=qualifier['P2096']
end
ifP2096then
fork,linpairs(P2096)do
ifl.datavalueandl.datavalue.valueandl.datavalue.value.textandl.datavalue.value.language=='nn'then
returnl.datavalue.value.text
end
end
end
returnnil
end

functionbyline(qualifier)
localP2093=nil
ifqualifierthen
P2093=qualifier['P2093']
end
ifP2093then
fork,linpairs(P2093)do
ifl.datavalueandl.datavalue.valuethen
return"bilete:"..l.datavalue.value
end
end
end
returnnil
end

functionfmtbilete(bilete,biletetekst,byline,size,alttekst)
localtekst=""
localpix=sizeor""
localalt=""
ifalttekstandalttekst~=""then
alt="|alt="..alttekst
end
ifbiletethen
tekst="[[fil:"..-- mw.wikibase.formatValue(snak)
bilete.."|center|"..pix.."|frameless"..alt.."]]"
end
ifbiletetekstorbylinethen
tekst=tekst..'<div class= "thumbcaption" style= "text-align:center" >'
end
ifbiletetekstthen
tekst=tekst..biletetekst
end
ifbylinethen
tekst=tekst..'<div class= "thumbcaption" style= "text-align:center" >'..byline.."</div>"
end
ifbiletetekstorbylinethen
tekst=tekst..'</div>'
end
tekst=formatbileterad(tekst)
returntekst
end

functionp.bileteFraWikidata(qid,pid,pix,alttekst)
localprop=getProp(qid,pid)
ifnotpropthen
return""
end
ifnotprop[1]then
return""
end
ifnotprop[1].mainsnakthen
return""
end
localbiletet=bilete(prop[1].mainsnak)
localbileteteksten=biletetekst(prop[1].qualifiers)
localbyline=byline(prop[1].qualifiers)
returnfmtbilete(biletet,bileteteksten,byline,pix,alttekst)
end


functionp._bileteOgTekst(qid,pid,bilete,biletetekst,byline,pix,alttekst,overskrift)
ifbileteandbilete=="utan"then
return""
end
localoverskriftRad,avslutning="",""
ifoverskriftandoverskrift~=""then
overskriftRad,avslutning=formatOverskrift(overskrift)
end
localbileterad=""
ifbileteandbilete~=""then
bileterad=fmtbilete(bilete,biletetekst,byline,pix,alttekst)
else
bileterad=p.bileteFraWikidata(qid,pid,pix,alttekst)
end
ifbileterad~=""then
returnoverskriftRad..bileterad..avslutning
end
return""
end

functionp.bileteOgTekst(frame)
localqid=frame.args["qid"]ornil
ifqid==""then
qid=nil
end
localpid=frame.args["pid"]ornil
localbilete=frame.args["bilete"]ornil
localbiletetekst=frame.args["biletetekst"]ornil
localbyline=frame.args["byline"]ornil
localpix=frame.args["biletestørrelse"]or""
localoverskrift=frame.args["overskrift"]or""
localalttekst=frame.args["alttekst"]or""
returnp._bileteOgTekst(qid,pid,bilete,biletetekst,byline,pix,alttekst,overskrift)
end

returnp