Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Hopp til innhold

Modul:Iboks

Fra Wikipedia, den frie encyklopedi

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