Hopp til innhold

Modul:Official links

Fra Wikipedia, den frie encyklopedi
Sideversjon per 23. des. 2015 kl. 03:35 av Jeblad (diskusjon | bidrag) (Skiller ut formatter)
Moduldokumentasjon

require('Module:No globals')

local formatter = {}
formatter['string'] = function( datavalue )
		if datavalue['type'] ~= 'string' then
			return nil
		end
		return '[' .. datavalue.value .. ' Offisielt nettsted]'
	end

local main = {}
main.P856 = {
	types = {
		snaktype = 'value',
		datatype = 'url',
	},
	formatter = formatter['string']
}

local p = {}

function p.findOfficialLinks(pid, qid)
	local links = {}
	local entity = mw.wikibase.getEntityObject( qid )
	if entity then
		local statements = entity:getBestStatements( pid )
		if statements then
			for _, claim in ipairs( statements ) do
				if claim then
					if claim['type'] ~= 'statement' then
						break
					end
					local mainsnak = claim.mainsnak
					if not mainsnak or not main[pid] then
						break
					end
					if (mainsnak.snaktype ~= main[pid].types.snaktype
						or mainsnak.datatype ~= main[pid].types.datatype)
					then
						break
					end
					links[1+#links] = main[pid].formatter(mainsnak.datavalue)
				end
			end
		end
	end
	return links
end

function p.links( frame )
	local items = {}
	local links = p.findOfficialLinks('P856')
	if links and #links > 0 then
		for _,link in ipairs( links ) do
			items[1+#items] = (#items > 0 and '* ' or '') .. link
		end
		return table.concat(items, "\n") .. '[[Kategori:Artikler med offisielt nettsted fra Wikidata]]'
	end
	return "''Ikke noe offisielt nettsted tilgjengelig''" .. '[[Kategori:Artikler uten offisielt nettsted]]'
end

return p