Modul:Iboks

Fra Wikipedia, den frie encyklopedi
Moduldokumentasjon

Formål[rediger kilde]

Verktøykasse for infobokser.

Metoder[rediger kilde]

verdiRad - kalles fra en mal ved

{{#invoke:Iboks|verdiRad|parametre}}
Parametre til verdiRad
parameter gitt argument funksjon
tittel tekst Beskrivelsen av innholdet av raden
verdi vilkårlig verdi Verdi som skal presenteres i infoboksen. Verdien vil hvis det er oppgitt som et tall formateres med formatnum
uten Denne raden skal ikke presenteres i infoboksen
Denne raden skal eventuelt hente verdi fra Wikidata
enhet tekst Enheten som verdien er oppgitt i. Argumentet brukes bare hvis verdi er oppgitt.
ref tekst Referanse eller referanser for verdien som er gitt. Argumentet brukes bare hvis verdi er oppgitt.
pid Wikidata identifikator Identifikator på en egenskap i Wikidata som verdi, enhet og referanser skal hentes fra
qid Wikidata identifikator Identifikator på et element i Wikidata som egenskapen pid skal hentes fra. qid kan utelates og data vil i så fall hentes fra Wikidata-elementet til aktuell side.

NB: Referanser hentes ikke fra Wikidata på det nåværende tidspunkt.

_verdiRad(tittel, verdi, enhet, ref, pid, qid)

Samme som verdiRad, men for kall fra modul. Parametre, se verdiRad.

formatNumber(verdi)

Metode for å gjøre formatnum på input som kanskje ikke er riktig formaterte tall.
- kalles fra en mal ved
{{#invoke:Iboks|formatNumber|verdi}}

formatUrl(url)

Metode for å forkorte en url
- kalles fra en mal ved
{{#invoke:Iboks|formatUrl|url}}

local math_mod = require( "Module:Math" )
local WikidataDato = require( 'Module:WikidataDato' )
local refs = require 'Module:Reference score'
local WikidataBilde = require( 'Module:WikidataBilde' )

local p = {}

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._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 getBestStatements(pid,entity)
	if not pid then
		return nil
	end
	if not entity then
		return nil
	end
	local prop = entity:getBestStatements(pid)
	if not prop then
		return nil
	end
	if not prop[1] then
		return nil
	end
	if not prop[1].mainsnak then
		return nil
	end
	return prop[1]
end

function p.singleValue(tittel,qid,pid,entity)
	local prop1 = getBestStatements(pid,entity)
	if not prop1 then
		return ""
	end
	value = mw.wikibase.formatValue(prop1.mainsnak)
	if value and value ~= "" then
		local quals = prop1.qualifiers
		local qual = nil
		if quals then
			qual = quals[1] or nil
		end
		
		local references = prop1.references
		if references then
			value = value .. refs.render(mw.getCurrentFrame(),references)
		end
		return formatRad(tittel,value)
	end
	return ""
end

function p._formatNumber(verdi)
	if not verdi then
		return ""
	end
	local num = mw.getContentLanguage():parseFormattedNumber(verdi)
	if num then
		return mw.getContentLanguage():formatNum(num)
	end
	return verdi
end
	
function p.formatVerdi(tittel,verdi,enhet,referanser)
	local value = ""
	local num = mw.getContentLanguage():parseFormattedNumber(verdi)
	if num then
		value = mw.getContentLanguage():formatNum(num) .. " " .. enhet .. referanser
	else
		value = verdi.. " " .. enhet .. referanser
	end
	return formatRad(tittel,value)	
end

function lokalVerdiRad(tittel, verdi, enhet, referanser)
	if verdi == "uten" then
		return ""
	end
	local enhettxt = ""
	local reftxt = ""
	if enhet then
		enhettxt = enhet
	end
	if referanser then
		reftxt = referanser
	end
	return p.formatVerdi(tittel, verdi, enhettxt, reftxt)
end

function p._verdiRad(tittel, verdi, enhet, ref, pid, qid)
	
	if verdi and verdi ~= "" then
		return lokalVerdiRad(tittel, verdi, enhet, ref)
	end
	local entity = mw.wikibase.getEntity(qid)
	return p.singleValue(tittel,qid,pid,entity)
end

function p.verdiRad(frame)
	local args = frame.args or nil
	if not args then
		return ""
	end
	local verdi = args["verdi"] or nil
	local enhet = args["enhet"] or nil
	local ref = args["ref"] or nil
	local tittel = args["tittel"] or nil
	local pid = args["pid"] or nil
	local qid = args["qid"] or nil
	return p._verdiRad(tittel, verdi, enhet, ref, pid, qid)
end

function p.formatNumber(frame)
	local args = frame.args or nil
	if not args then
		return ""
	end
	local verdi = args[1] or args["verdi"] or nil
	return p._formatNumber(verdi)
end

function p.formatUrl(frame)
	local args = frame.args or nil
	if not args then
		return ""
	end
	local url = args[1] or args["url"] or nil
	return p._formatUrl(url)
end

function brukmal(frame,mal,kollaps)
	local frameargs = frame:getParent().args
	local text = frame:expandTemplate{ title=mal, args = frameargs} 
	if text and text ~= "" then
		if kollaps then
			local resultat = string.format([[
				<div class="mw-collapsible mw-collapsed">
			--	<div class="sentrert">%s oppføringer</div>
				<div class="mw-collapsible-content">%s</div>
			</div>
			]], text)
			return resultat
		end
	end
	return text
end

function p.vannmasse(frame)
	local ag = frame.args
	local mal = ag["mal"] or none
	if mal then return brukmal(frame,mal) end
	return ""
end

function p.brukmal(frame)
	local ag = frame.args
	local frameargs = frame:getParent().args
	local mal = frameargs["mal"] or none
	local kollaps = frameargs["kollaps"] or none
	if mal then return brukmal(frame,mal,kollaps) end
	return ""
end

return p