Sari la conținut

Modul:WikidataUtils/Literature

De la Wikipedia, enciclopedia liberă

Documentația acestui modul poate fi creată la Modul:WikidataUtils/Literature/doc

local Wikidata = require('Modul:Wikidata')
local getArgs = require('Modul:Arguments').getArgs
local lang = require('Modul:Lang').fromArgs

local p = {}

p.findOrigTitlesOfWork = function(entityId)
	local ret = {}
	
	local titleClaims = Wikidata.findBestClaimsForProperty(entityId, 'P1476')
	if titleClaims then for _,eachTitleClaim in ipairs(titleClaims) do
		if Wikidata.hasValueSnak(eachTitleClaim) then
			ret[eachTitleClaim.mainsnak.datavalue.value.language] = eachTitleClaim.mainsnak.datavalue.value.text
		end
	end end
	return ret
end

p.concatTitles = function(titles, sep)
	local formattedTitles = {}
	for eachLang,eachTitle in pairs(titles) do
		if eachLang == 'ro' then
			table.insert(formattedTitles, "''" .. eachTitle .. "''")
		else
			table.insert(formattedTitles, lang(eachLang, nil, eachTitle, true))
		end
	end
	return mw.text.listToText(formattedTitles, sep, sep)
end

p.getOrigTitleOfWork = function(frame)
	local args = getArgs(frame)
	local entityId = args[1] or args['qid'] or mw.wikibase.getEntityIdForCurrentPage()
	local sep = args['sep'] or tostring(mw.html.create('br'))
	
	if not entityId then return nil end
	
	local titles = p.findOrigTitlesOfWork(entityId)
	return p.concatTitles(titles, sep)
end

return p