Modul:Sandkasse/haros/misc
local math_mod = require( "Module:Math" )
local WikidataReferanse = require( 'Module:WikidataReferanse' )
local refscore = require 'Module:Reference score'
local p = {}
function dump(item)
return "<pre>" .. mw.text.jsonEncode(item, mw.text.JSON_PRETTY) .. "</pre>"
end
function p.scholia(frame)
local args = mw.getCurrentFrame():getParent().args
local id = args['id'] or args[1] or nil
if id == "" then
id = nil
end
local entity = mw.wikibase.getEntity(id) or nil
if not id then
if not entity then
return ""
end
id = entity.id
end
local label = mw.wikibase.label(id) or ""
return "[https://tools.wmflabs.org/scholia/author/" .. id .. " " .. label .. " i scholia]"
end
function wdValue(entity,prop)
local value,unit = nil,nil
if entity.claims and entity.claims[prop] then
local claim = selectSingleClaim(entity.claims[prop])
local val = claim.mainsnak.datavalue.value or nil
if val then
local un = val.unit or nil
if un then
unit = mw.ustring.sub(un, mw.ustring.find(un, "Q"), -1) or nil
end
value = tonumber(val.amount)
end
end
return value,unit
end
function selectSingleClaim(claims)
if not claims then
return nil
end
local selectedClaim = nil
for idx,claim in pairs(claims) do
if claim.rank == 'preferred' then
return claim
end
if claim.rank == 'normal' then
if not selectedClaim then
selectedClaim = claim
end
end
end
return selectedClaim
end
function formatUrl(url)
local reftext = url
local j1 = string.find(reftext,'//',1,true)
if j1 then reftext = string.sub(reftext,j1+2,string.len(reftext)) else reftext = '' end
if reftext ~= '' then
local i1 = string.find(reftext,'/',1,true)
if i1 then reftext = string.sub(reftext,1,i1-1) end
else
reftext = url
end
return "[" .. url .. " " .. reftext .. "]"
end
function p.formatUrl(urls)
local value = ""
sep = ""
local urlList = mw.text.split( urls, ',', true )
for i,url in ipairs(urlList) do
local val = formatUrl(url)
if val and val ~= "" then
value = value .. sep .. val
sep = "<br/>"
end
end
end
function p.formatLenke(sitelink,label)
if label and sitelink then
return '[[' .. sitelink .. '|' .. label .. ']]'
end
if label and not sitelink then
return label
end
if sitelink and not label then
return '[[' .. sitelink .. ']]'
end
return ''
end
function formatValue(value, first, link)
assert( value )
--assert( first )
-- setter link til true som default hvis ingen verdi er angitt
if type( link ) ~= 'boolean' then
link = true
end
if string.sub(value, 1, 1) ~= "Q" then
-- Verdien er enten "ukjent" eller "ingen"
return string.format("''%s''", value)
end
local label = mw.wikibase.label( value )
local sitelink = mw.wikibase.sitelink( value )
if first and label then
local lang = mw.language.getContentLanguage()
label = lang:ucfirst( label )
end
if not link then
-- Vi ønsker kun tekst, ikke wikilenke
if label then
return label
end
return ''
end
if label and sitelink then
return '[[' .. sitelink .. '|' .. label .. ']]'
end
if label and not sitelink then
return label
end
if sitelink and not label then
return '[[' .. sitelink .. ']]'
end
return ''
end
function p.stattest()
local menn = mw.site.stats.pagesInCategory("menn", "pages")
local kvinner = mw.site.stats.pagesInCategory("kvinner", "pages")
local alle = menn+kvinner
local prosMenn = menn*100/alle
local prosKvinner = kvinner*100/alle
return "Antal biografier av<br/>" ..
"- Kvinner " .. mw.language.getContentLanguage():formatNum(kvinner) .. " (" .. math_mod._precision_format(prosKvinner,2) .. " %)<br/>" ..
"- Menn " .. mw.language.getContentLanguage():formatNum(menn) .. " (" .. math_mod._precision_format(prosMenn,2) .. " %)"
end
function fmt(ref)
local reftxt = ""
local sep = ""
for pid, property in pairs(ref) do
local pidLabel = mw.wikibase.getLabel(pid)
local refValue = mw.wikibase.formatValues(property)
reftxt = reftxt .. sep .. pidLabel .. ":" .. refValue
sep = " , "
end
return reftxt
end
function p.trippel(frame)
assert( frame )
local args = mw.getCurrentFrame():getParent().args
local v1 = args["v1"] or frame.args["v1"] or ""
local v2 = args["v2"] or frame.args["v2"] or ""
local v3 = args["v3"] or frame.args["v3"] or ""
local wd1 = args["wd1"] or frame.args["wd1"] or ""
local wd2 = args["wd2"] or frame.args["wd2"] or ""
local wd3 = args["wd3"] or frame.args["wd3"] or ""
local tittel = args["tittel"] or frame.args["tittel"] or ""
if v1 and v1 == "uten" then
return ""
end
if (not v1 or v1 == "" ) and (not wd1 or wd1 == "") then
return ""
end
local value = ""
if v1 and v1 == "" then
value = wd1
if wd2 and wd2 ~= "" then
value = value .. " (" .. wd2 .. ") "
end
if wd3 and wd3 ~= "" then
value = value .. " parti: " .. wd3
end
end
if v1 and v1 ~= "" then
value = v1
if v2 and v2 ~= "" then
value = value .. " (" .. v2 .. ") "
end
if v3 and v3 ~= "" then
value = value .. " parti: " .. v3
end
end
return string.format([[
<tr class="rad" valign="top">
<th colspan="2" class="nowrap">%s</th>
<td colspan="2">%s</td>
</tr>
]], tittel, value)
end
function getProp(qid,pid)
local entity = mw.wikibase.getEntity(qid)
if not entity then
return {}
end
return entity:getBestStatements(pid)
end
function formatDobbeltrad(value)
return string.format([[
<tr class="rad" valign="top">
<td colspan="4">%s</td>
</tr>
]], value)
end
function formatRad(tittel,value)
return string.format([[
<tr class="rad" valign="top">
<th colspan="2" class="nowrap">%s</th>
<td colspan="2">%s</td>
</tr>
]], tittel, value)
end
function p.formatSpraak(snak)
assert( snak )
local spraakid = snak.datavalue.value.id or nil
if not spraakid then
return nil
end
local prop = getProp(spraakid,"P218") or getProp(spraakid,"P220") or nil
if prop then
if not prop[1] then
return ""
end
if not prop[1].mainsnak then
return ""
end
local kortnavn = prop[1].mainsnak.datavalue.value or nil
local sitelink = mw.wikibase.sitelink( spraakid )
return p.formatLenke(sitelink,kortnavn)
end
local lab = mw.wikibase.label(spraakid)
return lab
end
function formatQualifier(qual,pval)
if qual and pval then
local qv = qual[pval]
local snak = qv[1] or nil
if snak and snak.snaktype == "value" then
if pval == "P407" then
return p.formatSpraak(snak)
end
return mw.wikibase.formatValues(qv)
end
end
end
function p.enProp(prop,visRef)
local value = nil
-- for i,prop in ipairs(props) do
if not prop then
return value
end
if not prop.mainsnak then
return value
end
local sn = prop.mainsnak
local qu = prop.qualifiers
local rf = prop.references
local qual = nil
local qualP = ""
-- property[1].datavalue.value
if sn.snaktype == "value" then
if sn.datatype == 'url' then
value = formatUrl(sn.datavalue.value)
local qt = formatQualifier(qu,"P407")
if qt and qt ~= "" then
value = value .. " (" .. qt .. ")"
end
end
end
if true then
--return dump(prop.mainsnak)
end
if value and value ~= "" then
if visRef then
local refs = prop.references
local ref = nil
if refs then
ref = refs[1] or nil
end
if ref then
value = value .. refscore.render(mw.getCurrentFrame(),refs)
end
end
-- end
end
return value
end
function kollaps(text, totalt)
text = string.format(
[[
<div class="mw-collapsible mw-collapsed">
<div class="sentrert">totalt %s</div>
<div class="mw-collapsible-content">%s</div>
</div>
]], totalt, text)
return text
end
function p._formatEgenskaper(qid,pid,visRef)
if not pid then
return ""
end
local props = getProp(qid,pid)
if not props then
return ""
end
local value1 = ""
local value2 = ""
local sep = ""
if true then
-- return dump(props)
end
local count = 0
for i,prop in ipairs(props) do
local v = p.enProp(prop,visRef)
if v then
-- if count<1 then
value1 = value1 .. sep .. v
-- end
-- if count>0 then
-- value2 = value2 .. sep .. v
-- end
sep = "<br/>"
count = count + 1
end
end
if count>1 then
-- value1 = kollaps(value1,count)
end
return value1 .. value2
end
function p.singleValue(tittel,arg,qid,pid)
if arg and arg == "uten" then
return ""
end
local value = ""
if arg and arg ~= "" then
return formatRad(tittel,arg)
end
if not pid then
return ""
end
local prop = getProp(qid,pid)
if not prop then
return ""
end
if not prop[1] then
return ""
end
if not prop[1].mainsnak then
return ""
end
value = mw.wikibase.formatValue(prop[1].mainsnak)
if value and value ~= "" then
local quals = prop[1].qualifiers
local qual = nil
if quals then
qual = quals[1] or nil
end
local refs = prop[1].references
local ref = nil
if refs then
ref = refs[1] or nil
end
if ref then
value = value .. refscore.render(mw.getCurrentFrame(),refs)
--local attrs = { name = string.format( 'hash-%s', ref.hash ) }
--tekst = tekst .. mw.getCurrentFrame():extensionTag( 'ref', reftxt, attrs )
end
return formatRad(tittel,value)
end
return ""
end
-- kopi fra Wikidataliste
function getFrameValue(frame, params)
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
-- params kan være én enkelt verdi eller flere verdier adskilt med komma.
-- F.eks. vil "religion,livssyn" sjekke både "religion" og "livssyn".
for param in mw.text.gsplit( params, ',', true ) do
if args[param] then
return mw.text.trim( args[param] )
end
end
return ""
end
function p.beste(frame)
assert( frame )
local qid = frame.args["qid"] or nil
local pid = frame.args["pid"] or frame.args["wdq"]
local param = frame.args["param"] or nil
local tittel = frame.args["tekst"] or nil
local unit = frame.args["unit"] or nil
local verdiFraFrame = getFrameValue(frame, param)
if verdiFraFrame and verdiFraFrame == "uten" then
-- Hvis malargumentet er satt til "uten" betyr det at det ikke er ønskelig
-- at feltet vises, selv om det finnes data på Wikidata.
return "[[Kategori:Artikler hvor en parameter spesifisert som uten]]"
end
local value = ""
if verdiFraFrame and verdiFraFrame ~= "" then
return formatValue(tittel,verdiFraFrame)
end
return p.singleValue(tittel,verdiFraFrame,qid,pid)
end
local museum = {
{
["param"] = "navn",
["pid"] = "P1705",
["metode"] = "single",
["tittel"] = "Navn"
},
{
["param"] = "bilde",
["pid"] = "P18",
["metode"] = "bilde",
["tittel"] = ""
},
{
["param"] = "vinterbilde",
["pid"] = "P5252",
["metode"] = "bilde",
["tittel"] = ""
},
{
["param"] = "bilde",
["pid"] = "P5775",
["metode"] = "bilde",
["tittel"] = ""
},
{
["param"] = "grunnlagt",
["pid"] = "P571",
["metode"] = "single",
["tittel"] = "Grunnlagt"
},
{
["param"] = "arkitekt",
["pid"] = "P84",
["metode"] = "single",
["tittel"] = "Arkitekt"
},
{
["param"] = "adresse",
["pid"] = "P6375",
["metode"] = "single",
["tittel"] = "Adresse"
},
{
["param"] = "land",
["pid"] = "P17",
["metode"] = "single",
["tittel"] = "Land"
},
{
["param"] = "ligger i",
["pid"] = "P131",
["metode"] = "single",
["tittel"] = "Ligger i"
},
{
["param"] = "årlig besøkstall",
["pid"] = "P1174",
["metode"] = "single",
["tittel"] = "Årlig besøkstall"
}
}
local uni = {
{
["param"] = "navn",
["pid"] = "P1705",
["metode"] = "single",
["tittel"] = "Navn"
},
{
["param"] = "logo",
["pid"] = "P154",
["metode"] = "bilde",
["tittel"] = ""
},
{
["param"] = "bilde",
["pid"] = "P18",
["metode"] = "bilde",
["tittel"] = ""
},
{
["param"] = "latinsk navn",
["pid"] = nil,
["metode"] = "single",
["tittel"] = "latinsk navn"
},
{
["param"] = "Kallenavn",
["pid"] = nil,
["metode"] = "single",
["tittel"] = "Kallenavn og forkortelser"
},
{
["param"] = "motto",
["pid"] = nil,
["metode"] = "single",
["tittel"] = "Motto"
},
{
["param"] = "visjon",
["pid"] = nil,
["metode"] = "single",
["tittel"] = "Visjon"
},
{
["param"] = "grunnlagt",
["pid"] = "P571",
["metode"] = "single",
["tittel"] = "Grunnlagt"
},
{
["param"] = "type",
["pid"] = nil,
["metode"] = "single",
["tittel"] = "Type"
},
{
["param"] = "rektor",
["pid"] = "P1075",
["metode"] = "single",
["tittel"] = "Rektor"
},
{
["param"] = "prorektor",
["pid"] = nil,
["metode"] = "single",
["tittel"] = "Prorektor"
},
{
["param"] = "Viserektor(er)",
["pid"] = nil,
["metode"] = "single",
["tittel"] = "viserektor"
},
{
["param"] = "Direktør",
["pid"] = P1037,
["metode"] = "single",
["tittel"] = "direktør"
},
{
["param"] = "beliggenhet",
["pid"] = "P6375",
["metode"] = "single",
["tittel"] = "Beliggenhet"
},
{
["param"] = "adresse",
["pid"] = "P6375",
["metode"] = "single",
["tittel"] = "Adresse"
},
{
["param"] = "land",
["pid"] = "P17",
["metode"] = "single",
["tittel"] = "Land"
},
{
["param"] = "ligger i",
["pid"] = "P131",
["metode"] = "single",
["tittel"] = "Ligger i"
},
{
["param"] = "studenter",
["pid"] = "P2196",
["metode"] = "single",
["tittel"] = "Studenter"
},
{
-- ["param"] = {"ansatte","data fra"},
["param"] = "ansatte",
["pid"] = "P2196",
["metode"] = "single",
["tittel"] = "Studenter"
},
{
["param"] = "medlemskap",
["pid"] = "nil",
["metode"] = "single",
["tittel"] = "Medlemskap"
},
{
["param"] = "organisasjonsnummer",
["pid"] = "nil",
["metode"] = "single",
["tittel"] = "Organisasjonsnummer"
},
{
["param"] = "nettsted",
["pid"] = "nil",
["metode"] = "single",
["tittel"] = "Nettsted"
}
}
function bilde(snak)
assert ( snak )
local item = nil
if snak.snaktype == "value" and snak.datatype == "commonsMedia" then
value = snak.datavalue.value or nil
end
return value
end
-- returnerer en rad for overskrift og en avsluttning hvis det er nødvendig
function formatOverskrift (overskrift,kollaps)
local oversk = ""
local avslutt = ""
if overskrift and overskrift ~= "" then
oversk = string.format([[
<tr class="overskrift" valign="top"><td colspan="4">%s</td></tr>
]], overskrift)
end
if kollaps and kollaps ~= "" then
end
return oversk,avslutt
end
function formatBilderad(value)
return string.format([[
<tr class="bilde" valign="top"><td colspan="4" class="sentrert">%s</td></tr>
]], value)
end
function p.bilde(qid,pid)
local prop = getProp(qid,pid)
if not prop or not prop[1] or not prop[1].mainsnak then
return ""
end
return bilde(prop[1].mainsnak)
end
function bildetekst(qualifier,blankbildetekst)
local P2096 = nil
if qualifier then
P2096 = qualifier['P2096']
end
if P2096 then
for k, l in pairs(P2096) do
if l.datavalue.value and l.datavalue.value.text and l.datavalue.value.language == 'nb' then
return l.datavalue.value.text
end
end
end
if blankbildetekst then
return " "
end
return ""
end
function fmtBilde(bilde,bildetekst,byline,size,blankbildetekst)
local tekst = ""
local pix = size or ""
if bilde then
tekst = "[[fil:" .. -- mw.wikibase.formatValue(snak)
bilde .. "|center|" .. pix .. "|frameless]]"
end
if bildetekst or byline then
tekst = tekst .. '<div class="thumbcaption">'
end
if bildetekst then
tekst = tekst .. bildetekst
end
if byline then
tekst = tekst .. '<div class="byline">' .. byline .. "</div>"
end
if bildetekst or byline then
tekst = tekst .. '</div>'
end
tekst = formatBilderad(tekst)
return tekst
end
function p.bildeFraWikidata(qid,pid, pix,blankbildetekst)
local prop = getProp(qid,pid)
if not prop then
return ""
end
if not prop[1] then
return ""
end
if not prop[1].mainsnak then
return ""
end
local bildet = bilde(prop[1].mainsnak)
local bildeteksten = bildetekst(prop[1].qualifiers,blankbildetekst)
return fmtBilde(bildet,bildeteksten,nil, pix)
end
function p._bildeOgTekst(qid, pid, bilde, bildetekst, byline, pix, overskrift,blankbildetekst)
if bilde and bilde == "uten" then
return ""
end
local overskriftRad,avslutning = "",""
if overskrift and overskrift ~= "" then
overskriftRad,avslutning = formatOverskrift(overskrift)
end
local bilderad = ""
if bilde and bilde ~= "" then
bilderad = fmtBilde(bilde,bildetekst,byline, pix)
else
bilderad = p.bildeFraWikidata(qid, pid, pix,blankbildetekst)
end
if bilderad ~= "" then
return overskriftRad .. bilderad .. avslutning
end
return ""
end
function p.bildeOgTekst(frame)
local qid = frame.args["qid"] or nil
if qid == "" then
qid = nil
end
local pid = frame.args["pid"] or nil
local bilde = frame.args["bilde"] or nil
local bildetekst = frame.args["bildetekst"] or nil
local byline = frame.args["byline"] or nil
local pix = frame.args["bildestørrelse"] or ""
local overskrift = frame.args["overskrift"] or ""
return p._bildeOgTekst(qid, pid, bilde, bildetekst, byline, pix, overskrift)
end
function getId(prop)
if prop then
-- return dump(prop)
end
if prop and prop.mainsnak and prop.mainsnak.datavalue
and prop.mainsnak.datatype == "wikibase-item" then
return prop.mainsnak.datavalue.value.id
end
return nil
end
function allProps(qid,pid)
local propids = getProp(qid,pid)
if not propids then
return nil
end
local props = {}
for i,prop in ipairs(propids) do
table.insert(props, getId(prop))
end
return props
end
function ff(qid,pid)
local prop = getProp(qid,pid)
if not prop then
return ""
end
if not prop[1] then
return ""
end
if not prop[1].mainsnak then
return ""
end
if prop[1].mainsnak.snaktype ~= "value" then
return ""
end
return mw.wikibase.formatValue(prop[1].mainsnak)
end
function onlyProps(props,pid,qid)
local newprops = {}
for i,prop in ipairs(props) do
local id = getId(prop)
table.insert(newprops, getId(prop))
end
return newprops
end
function p._galleri(qid,pid,skaper,galleri)
local bilder = allProps(qid,pid)
if not bilder then
-- local id = bilder[9]
--return dump(mw.wikibase.getEntity(id)) or nil
return ""
end
local args = {
["mode"]="slideshow"
}
local tekst = ""
local sep = ""
--local bilder = {}
for i,bildet in ipairs(bilder) do
-- table.insert(bilder, p.bilde(prop,"P18"))
--tekst = tekst .. sep .. getId(prop) -- p.bilde(getId(prop),"P18")
if bildet then
-- return dump(mw.wikibase.getEntity(bildet))
end
local entity = mw.wikibase.getEntity(bildet)
local tittel = mw.wikibase.label(bildet) or ""
--local P195 = getProp(bildet,"P195")
local samling = ff(bildet,"P195")
local aar = ff(bildet,"P571")
local skaper = ff(bildet,"P170")
local undertekst = tittel .."</br>" .. skaper .. " (" .. aar .. ")</br>" .. samling
tekst = tekst .. sep .. "file:" .. p.bilde(bildet,"P18") .. "|" .. undertekst .. "\n"
--sep = "</br>"
end
return mw.getCurrentFrame():extensionTag("gallery",tekst,args)
-- tekst = tekst .. '</gallery>'
-- return tekst
-- return dump(props)
end
function p.galleri(frame)
local qid = frame.args["qid"] or nil
if qid == "" then
qid = nil
end
local pid = frame.args["pid"] or nil
local skaper = frame.args["skaper"] or nil
local galleri = frame.args["galleri"] or nil
return p._galleri(qid,pid,skaper,galleri)
end
-- formatOverskrift
function p.blokk1(args)
local qid = args["qid"] or nil
if qid == "" then
qid = nil
end
local max = tonumber(args["max"]) or nil
local min = tonumber(args["min"]) or 0
local overskrift = args["overskrift"] or ""
-- local kollaps = args["kollaps"] or nil
local tekst = ""
local num = 0
for i,rad in ipairs(args) do
tekst = tekst .. rad
num = num + 1
end
local overskr = ""
local coll1 = '<div class="mw-collapsible mw-collapsed">'
local ostart = '<tr class="overskrift" valign="top"><td colspan="4">'
local oend = '</td></tr>'
local collcont = '<div class="mw-collapsible-content">'
local collend = '</div></div>'
if num >= min then
return coll1 .. ostart .. overskrift .. oend .. collcont .. tekst .. collend
-- if false and max and num>max then
-- tekst = string.format([[
-- <div class="mw-collapsible mw-collapsed">
-- <div class="sentrert">%s oppføringer</div>
-- <div class="mw-collapsible-content">%s</div>
-- </div>
-- ]], num, tekst)
-- else
-- overskr,ettersk = formatOverskrift (overskrift)
-- end
end
local ettersk = formatOverskrift ("Slutt")
return overskr .. tekst .. ettersk
end
function p.blokk(frame)
local qid = frame.args["qid"] or nil
if qid == "" then
qid = nil
end
return p.blokk1(frame.args)
end
function p.rad(tittel,arg,metode)
if arg and arg == "uten" then
return ""
end
local value = ""
if arg and arg ~= "" then
return formatRad(tittel,arg)
end
return ""
end
function ibx(innhold,qid,arg)
local value = ""
local entity = mw.wikibase.getEntity(qid)
for i,rad in ipairs(innhold) do
local tittel = rad["tittel"] or ""
local pid = rad["pid"] or nil
local metode = rad["metode"]
local param = rad["param"]
if arg and arg[param] then
value = value .. p.rad(tittel,arg[param],metode)
else
if metode == "single" then
value = value .. p.singleValue(tittel,nil,qid,pid)
end
if metode == "bilde" then
value = value .. p._bildeOgTekst(qid,pid)
end
end
end
return value
end
function td(verdi)
return "<td>" .. verdi .. "</td>"
end
function tabellbilde(verdi)
if verdi == "" then
return ""
end
return "[[fil:" .. verdi .. "|100px]]"
end
function liste(qid,pid,elemenprops)
local elementer = allProps(qid,pid)
local list = ""
if not elementer then
-- local id = bilder[9]
--return dump(mw.wikibase.getEntity(id)) or nil
return ""
end
local args = {
["mode"]="slideshow"
}
local tekst = "<tr>"
local sep = ""
list = "<table class=\"wikitable\">"
for i,element in ipairs(elementer) do
local bilde = p.bilde(element,"P18")
bilde = td(tabellbilde(bilde))
--local bilde = "<td>" .. p.bildeFraWikidata(element,"P18", "100px") .. "</td>"
local navn = "<td>" .. formatValue(element, false, true) .. "</td>"
-- mw.wikibase.formatValue(element) mw.wikibase.getLabel(element)
list = list .. "<tr>" ..bilde .. navn .. "</tr>"
end
return list .. "</table>"
end
function r(qid)
local p39 = getProp(qid,"P39")
local value = ""
for idx,claim in pairs(p39) do
id = getId(claim) or nil
if id and id =="Q9045502" then
local periode = claim.qualifiers["P2937"]
local parti = claim.qualifiers["P4100"]
local krets = claim.qualifiers["P768"]
--return dump(P2937) .. "<p><p>" ..
value = value .. mw.wikibase.formatValue(claim.mainsnak) .. " "
.. mw.wikibase.formatValue(periode[1]) .. " "
.. mw.wikibase.formatValue(parti[1]) .. " "
.. mw.wikibase.formatValue(krets[1]) .. " <p>"
end
end
--prop[1].qualifiers
--prop[1].qualifiers
return value
end
function test2(frame)
local value = "<table>"
local args = {
p.singleValue("[[vvv]]",nil,"Q1037","P1081"),
p._bildeOgTekst("Q11993371", "P18", nil, nil, nil),
p.singleValue("[[xxx]]",nil,"Q1037","P1081"),
}
args.overskrift = "start"
value = value .. p._galleri("Q41406","P800")
-- value = value .. p.blokk1(args)
-- value = value .. p.singleValue("[[HDI]]",nil,"Q1037","P1081")
-- value = value .. p.singleValue("Folketall",nil,"Q1037","P1082")
--value = value .. p.singleValue("Areal",nil,"Q1037","P2046")
-- value = value .. p.singleValue("Folketall",nil,"Q4044","P1082")
-- value = value .. p.singleValue("Areal",nil,"Q4044","P2046")
--value = value .. p.singleValue("latinsk navn","Universitas Osloensis (Universitas Regia Fredericiana)","Q486156",nil)
--value = value .. p.singleValue("Kallenavn og forkortelser",nil,"Q486156","P1813")
--value = value .. p.singleValue("Grunnlagt",nil,"Q486156","P571")
--value = value .. p.singleValue("Type","universitet","Q486156",nil)
--value = value .. p.singleValue("Rektor",nil,"Q486156","P1075")
--value = value .. p.singleValue("Studenter",nil,"Q486156","P2196")
--value = value .. p.singleValue("Ansatte",nil,"Q486156","P1128")
-- value = value .. ibx(uni,"Q486156")
-- value = value .. ibx(uni,"Q3436286")
-- value = value .. ibx(uni,"Q161562")
-- value = value .. ibx(uni,"Q662355")
-- value = value .. ibx(uni,"Q131262")
-- value = value .. ibx(museum,"Q1132918")
-- value = value .. ibx(museum,"Q154996")
return value .. "</table>"
--return "Test 2 ikke i bruk"
end
function p.bildetest(frame)
local t0 = "Parametre: qid, pid, bilde, bildetekst, byline"
local t1 = "Q11993371, P18, nil, nil, nil</br>" .. p._bildeOgTekst("Q11993371", "P18", nil, nil, nil)
local t2 = "Q11993371, P18, uten, nil, nil</br>" .. p._bildeOgTekst("Q11993371", "P18", "uten", nil, nil)
local t3 = "Q11993371, P18, uten, bildetekst, nil</br>" .. p._bildeOgTekst("Q11993371", "P18", "uten", "bildetekst", nil)
local t4 = "Q11993371, P18, nil, bildetekst, nil</br>" .. p._bildeOgTekst("Q11993371", "P18", nil, "bildetekst", nil)
local t5 = "Q11993371, P18, -blank-, bildetekst, nil</br>" .. p._bildeOgTekst("Q11993371", "P18", "", "bildetekst", nil)
local t6 = "Q11993371, P18, -blank-, bildetekst, byline</br>" .. p._bildeOgTekst("Q11993371", "P18", "", "bildetekst", "byline")
local t7 = "Q11993371, P18, Olaf Kamfjord (cropped).jpg, bildetekst, byline</br>" .. p._bildeOgTekst("Q11993371", "P18", "Olaf Kamfjord (cropped).jpg", "bildetekst", "byline")
local t8 = "Q36661, P18, nil, bildetekst, byline</br>" .. p._bildeOgTekst("Q36661", "P18", nil , "bildetekst", "byline")
local t9 = "Q36661, P109, nil, bildetekst, byline</br>" .. p._bildeOgTekst("Q36661", "P109", nil , "bildetekst", "byline")
return t0 .. "</br>" .. t1 .. "</br>" .. t2 .. "</br>" .. t3 .. "</br>" .. t4 .. "</br>" .. t5 .. "</br>" ..
t6 .. "</br>" .. t7 .. "</br>" .. t8 .. "</br>" .. t9 .. "</br>"
end
function p.test1(frame)
-- local prop = getProp("Q11993371","P18")
-- return dump(prop[1].mainsnak)
-- return dump(prop[2])
-- return dump(prop)
-- return p.bildetest(frame)
return ""
end
function p.test2a(frame)
local p = {}
local streng = "Noe rart bla bla bla\n{{ koord|2|3|vis=tittel}} '''Dette''' er en {{artikkel}}"
local treff = streng:match("{{%s*[Kk]oord%s*|[^}]+}}")
if treff and treff:find("tittel") then
return "Vår kategori"
else
return "Ingenting"
end
return "Test 1 ikke i bruk"
end
function test2x(frame)
return liste("Q108934475","P527","")
end
function p.test2(frame)
return test2x(frame)
-- local num = r("Q156553")
-- return num
end
function p.testQ10855788P2048(frame)
return p.singleValue("høyde","","Q10855788","P2048")
--return liste("Q108934475","P527","")
end
function p.testQ824594P1082(frame)
return p.singleValue("Befolkning","","Q824594","P1082")
--return liste("Q108934475","P527","")
end
function ibxStart(type,stor,navn,navn2)
local arg = {}
arg["navn"] = navn
local txt0a = '<table class="infobox infoboks '
local txt0b = type .. " " .. stor .. " " ..'"'
-- .. " " .. class
local txt0d = ">"
local txt1 = ''
if navn2 and navn2 ~= '' then
txt1 = '<tr valign="top" class="hode"><th colspan="4">' .. navn2 .. '</th></tr>'
end
local txt2 = '<tr class="hode overskrift"><th colspan="4">' .. navn .. '</th></tr>'
return txt0a .. txt0b .. txt0d .. txt1 .. txt2
end
function p.ibxStart(frame)
local args = frame.args or {}
local typ = args["type"] or "biografi"
local stor = args["stor"] or "bred"
local navn = args["navn"] or "navn"
local navn2 = args["navn2"] or nil
value = ibxStart(typ, stor, navn, navn2)
return value
end
function ibxSlutt(comcat,endcomment)
return "</table>"
end
function p.ibxSlutt(frame)
return ibxSlutt()
end
function p.bildeboks(frame)
local args = mw.getCurrentFrame():getParent().args
local qid = args["qid"] or nil
if qid == "" then
qid = nil
end
local tekst = ""
local num = 0
for i,rad in ipairs(args) do
tekst = tekst .. rad
num = num + 1
end
local pid = args["pid"] or "P18"
local bilde = args["bilde"] or nil
local bildetekst = args["bildetekst"] or nil
local byline = args["byline"] or nil
local pix = args["bildestørrelse"] or "290px"
local overskrift = args["overskrift"] or mw.wikibase.label(qid)
local alttekst = args["alttekst"] or ""
local type = args["type"] or "biografi"
local stor = args["stor"] or "bred"
local b = ""
if tekst == "" then
for pd in mw.text.gsplit( pid, ',', true ) do
b = b .. p._bildeOgTekst(qid, pd, bilde, bildetekst, byline, pix, nil,true)
end
end
if b == "" and tekst == "" then
return ""
end
local value = ibxStart(type,stor,overskrift,nil)
value = value .. b .. tekst
value = value .. p.ibxSlutt(frame)
return value
end
function p.formatDuration(amount)
local s = tonumber(amount)
if s<60 then
return amount .. " s"
end
local min = math.floor(s/60)
local sec = s - min*60
return tostring(min) .. " min " .. sec .. " s"
end
function P2415(prop)
if not prop or not prop.mainsnak then
return ""
end
local snak = prop.mainsnak
if snak.snaktype == "value" and snak.datatype == "quantity" then
local tekst = ""
local value = snak.datavalue.value or nil
local quals = prop.qualifiers
local qual = nil
local qualval = ""
local sep = ""
if quals then
qual = quals['P2416'] or quals['P641']
if qual then
qualval = mw.wikibase.formatValues(qual)
if qualval then
sep = ", "
end
end
qual = quals['P276']
if qual then
qualval = qualval .. sep .. mw.wikibase.formatValues(qual)
if qualval then
sep = ", "
end
end
qual = quals['P1013']
if qual then
qualval = qualval .. sep .. mw.wikibase.formatValues(qual)
if qualval then
sep = ", "
end
end
end
tekst = " (" .. qualval .. ")"
local refs = prop.references
local ref = nil
if refs then
ref = refs[1] or nil
end
if ref then
tekst = tekst .. refscore.render(mw.getCurrentFrame(),refs)
--local attrs = { name = string.format( 'hash-%s', ref.hash ) }
--tekst = tekst .. mw.getCurrentFrame():extensionTag( 'ref', reftxt, attrs )
end
--local v = dump(snak)
local val = mw.wikibase.formatValue(snak)
local issek = string.match( val, "sekund")
if issek then
val = p.formatDuration(tonumber(value.amount))
end
--local q = string.match( value.unit, "Q")
--local qq = mw.wikibase.label(value.unit)
-- return dump(snak) .. mw.language.getContentLanguage():formatDuration(tonumber(value.amount))
return val
.. tekst -- .. " " .. v .. val -- .. " " .. qq
end
end
function p._pers(qid)
local entity = mw.wikibase.getEntity(qid)
local props = entity:getBestStatements("P2415")
local tekst = mw.wikibase.label(qid) .. "<br/>" -- dump(props)
for i,prop in ipairs(props) do
tekst = tekst .. P2415(prop) .. "<br/>"
-- num = num + 1
end
return tekst .. "<br/>"
end
function p.pers(frame)
local args = mw.getCurrentFrame():getParent().args
local value = ""
local qid = args["qid"] or frame.args["qid"] or nil
if qid == "" then
qid = nil
end
return qid --.. p._pers(qid)
end
function p._persrad(pers,qid)
if pers and pers == "uten" then
return ""
end
local rad = ""
if pers and pers ~= "" then
rad = formatRad("Personlig rekord",pers)
else
rad = formatRad("Personlig<br/>rekord",p._pers(qid))
end
return rad
end
function p.persrad(frame)
local args = mw.getCurrentFrame():getParent().args
local arg2 = frame.args
local qid = args["qid"] or arg2["qid"] or nil
if qid == "" then
qid = nil
end
local pers = args["pers"] or nil
return p._persrad(pers,qid)
end
function p.persboks(frame)
local args = mw.getCurrentFrame():getParent().args
local arg2 = frame.args
local qid = args["qid"] or arg2["qid"] or nil
if qid == "" then
qid = nil
end
local tekst = ""
local pid = args["pid"] or "P18"
local overskrift = args["overskrift"] or mw.wikibase.label(qid) or ""
local alttekst = args["alttekst"] or ""
local type = args["type"] or "biografi"
local stor = args["stor"] or "bred"
local bilde = args["bilde"] or nil
local bildetekst = args["bildetekst"] or nil
local byline = args["byline"] or nil
local pix = args["bildestørrelse"] or "290px"
local b = ""
b = b .. p.persrad(frame)
if b == "" then
return ""
end
local value = ibxStart(type,stor,overskrift,"[[d:" .. qid .. "]]")
value = value .. formatDobbeltrad( p._bildeOgTekst(qid, pid, bilde, bildetekst, byline, pix, nil,true))
value = value .. b
value = value .. p.ibxSlutt(frame)
return value
end
function p.test2(frame)
-- local prop = getProp("Q11993371","P18")
-- return dump(prop[1].mainsnak)
-- return dump(prop[2])
-- return dump(prop)
-- return p.bildetest(frame)
return p._pers("Q28057538")
.. p._pers("Q1189")
.. p._pers("Q273953")
--.. p.pers("qid = Q273953")
end
function nettsted(prop)
local val = nil
if not prop.mainsnak then
return ""
end
local value = mw.wikibase.formatValue(prop.mainsnak)
if value and value ~= "" then
local quals = prop.qualifiers
local qual = nil
if quals then
return dump(quals)
-- qual = quals[1] or nil
end
local refs = prop.references
local ref = nil
if refs then
ref = refs[1] or nil
end
if ref then
value = value .. refscore.render(mw.getCurrentFrame(),refs)
end
return formatRad(tittel,value)
end
return val
end
function p._nettsted(tittel,verdi,qid,pid)
if verdi and verdi == "uten" then
return ""
end
if verdi and verdi ~= "" then
return formatRad(tittel,verdi)
end
if not pid then
return ""
end
local props = allProps(qid,pid)
if not props then
-- local id = bilder[9]
--return dump(mw.wikibase.getEntity(id)) or nil
return ""
end
local sep = ""
local value = ""
for i,prop in ipairs(props) do
local val = nettsted(prop)
if val and val ~= "" then
value = value .. sep .. val
sep = "<br/>"
end
end
return formatRad(tittel,value)
--return value
end
function p.nettsted(frame)
local args = mw.getCurrentFrame():getParent().args
local arg2 = frame.args
local qid = args["qid"] or arg2["qid"] or nil
if qid == "" then
qid = nil
end
local tekst = ""
local num = 0
for i,rad in ipairs(args) do
tekst = tekst .. rad
num = num + 1
end
local pid = arg2["pid"] or "P856"
local verdi = arg2["nettsted"] or arg2["webside"] or yyy
local tittel = arg2["tittel"] or "xxx"
return p._formatEgenskaper(qid,pid)
end
return p