Modul:Sandkasse/haros/misc
Hopp til navigering
Hopp til søk
Dokumentasjon for denne modulen kan opprettes på Modul:Sandkasse/haros/misc/dok
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