Modul:Sandkasse/Cocu
Moduldokumentasjon
[opprett]
local p = {}
function dump( out )
if type( out ) == 'table' then
local s = '{ '
for k,v in pairs( out ) do
if type( k ) ~= 'number' then k = '"'..k..'"' end
s = s .. '['..k..'] = ' .. dump( v ) .. ','
end
return s .. '} '
else
return tostring( out )
end
end
function getclaims(frame)
if not mw.wikibase then
return resten
end
local artikkel = mw.wikibase.getEntityObject()
if not artikkel then
return resten
end
return artikkel.claims
end
function wdverdi(pv, first)
lang = mw.language.getContentLanguage()
local num = pv.mainsnak.datavalue.value["numeric-id"]
return "[https://www.wikidata.org/wiki/Q" .. num .. " " .. 'Q' .. num .. "]"
end
function enkeltverdi(pv, first)
lang = mw.language.getContentLanguage()
local qv = 'Q' .. pv.mainsnak.datavalue.value["numeric-id"]
local label = mw.wikibase.label(qv)
local sitelink = mw.wikibase.sitelink(qv)
if label and sitelink then
if first then
return '[[' .. sitelink .. '|' .. lang:ucfirst(label) .. ']]'
else
return '[[' .. sitelink .. '|' .. label .. ']]'
end
end
if label and not sitelink then
if first then
return lang:ucfirst(label)
else
return label
end
end
if sitelink and not label then
return '[[' .. sitelink .. ']]'
end
return ""
end
function p.liste(frame,prop)
local claims = getclaims(frame)
if not claims then
return resten
end
local pid = mw.wikibase.resolvePropertyId(prop)
if not pid then
return
end
local pv = claims[pid]
if not pv then
return ""
end
if not pv[1].mainsnak then return "" end
if not pv[1].mainsnak.datavalue then return "" end
local i = 1
local resultat = enkeltverdi(pv[i],true)
local manglerOversettelse = string.len(resultat)==0
local first = manglerOversettelse
while i < #pv do
i = i+1
local lres = enkeltverdi(pv[i],first)
if string.len(lres) > 0 then
if not first then
resultat = resultat .. ", "
end
resultat = resultat .. lres
first = false;
else
-- if not first then
-- resultat = resultat .. ' <div style="visibility:hidden"> , '
-- end
-- resultat = resultat .. wdverdi(pv[i]) .. "</div>"
-- first = false
manglerOversettelse = true
end
end
if manglerOversettelse then
resultat = resultat .. "[[Kategori:Artikler hvor " .. prop .. " mangler oversettelse]]"
end
return resultat
end
function frameverdi(frame,param)
local args = frame.args
if args[1] == nil then
local pFrame = frame:getParent();
args = pFrame.args;
for k,v in pairs( frame.args ) do
args[k] = v;
end
end
if args[param] then
return args[param]
end
return ""
end
function p.grenserTil(frame)
return p.liste(frame,"grenser til")
end
function p.yrker(frame)
return p.liste(frame,"yrke")
end
function velg(frame,prop,param)
lang = mw.language.getContentLanguage()
local verdiFraFrame = frameverdi(frame,param)
local verdiFraWikidata = p.liste(frame,prop)
if verdiFraFrame then
if verdiFraFrame == "" then
-- return ""
elseif verdiFraFrame == "uten" then
return "[[Kategori:Artikler hvor " .. param .. " spesifisert som uten]]"
elseif not verdiFraWikidata then
return verdiFraFrame
elseif lang:uc(verdiFraFrame) == lang:uc(verdiFraWikidata) then
return verdiFraFrame .. "[[Kategori:Artikler hvor " .. param .. " samme som på Wikidata]]"
elseif string.len(verdiFraWikidata) > 0 then
return verdiFraFrame .. "[[Kategori:Artikler hvor " .. param .. " forskjellig fra Wikidata]]"
else
return verdiFraFrame .. "[[Kategori:Artikler hvor " .. prop .. " mangler på Wikidata]]"
end
else
return ""
end
if verdiFraWikidata then
if string.len(verdiFraWikidata) > 0 then
return verdiFraWikidata .. "[[Kategori:Artikler hvor " .. prop .. " hentes fra Wikidata]]"
end
end
return ""
end
function rad(frame,prop,param)
lang = mw.language.getContentLanguage()
local c = velg(frame,prop,param)
local verdiFraFrame = frameverdi(frame,param)
if verdiFraFrame == "uten" then
return c -- Dette returnerer kategorien som så vil bli brukt der ellers en infoboks rad hadde vært.
end
if frame.args[2] then
rt = frame.args[2]
else
rt = lang:ucfirst(param)
end
if string.len(c) >0 then
local t1 = '<tr class="rad" valign="top"><th colspan="2">'
local t2 = '</th><td colspan="2" >'
local t3 = '</td></tr>'
return t1 .. rt .. t2 .. c .. t3
else
return "[[Kategori:Artikler hvor " .. param .. " mangler]]"
end
end
function p.radParm(frame)
return rad(frame,frame.args[1],frame.args[1])
end
function p.velgParm(frame)
return velg(frame,frame.args[1],frame.args[1])
end
return p