UWAGA
Strona jest ponownie oddana do uzytku po zabiegach konfiguracyjnych. Jeśli zobaczą Państwo na niej jakieś błedy techniczne, prosimy o ich zgłoszenie.

Większość artykułów w portalu to nasze własne teksty z kluczowych dziedzin związanych z naszą misją. Spora część materiałów pochodzi też z polskiej wersji Wikipedii, gdzie były odrzucone ze względu na politykę redaktorów (przeczytaj o krytyce Wikipedii). Są też i takie, które zostały przeniesione na nasze strony, gdyż stanowią istotne uzupełnienie merytorycznej treści naszego serwisu. Wszystkie artykuły podlegają edycji przez naszych Użytkowników, dlatego ich wersje mogą się różnić od prezentowanych na innych witrynach.

Moduł:Wikidane/format/qualifiers

Z Wedapedia
Przejdź do nawigacji Przejdź do wyszukiwania

Dokumentacja dla tego modułu może zostać utworzona pod nazwą Moduł:Wikidane/format/qualifiers/opis

local format = require("Moduł:Wikidane/format/snak").format

local function SELECT(prop, options, name, prefix, separator, lastSeparator)
	if prop.qualifiers and prop.qualifiers[name] then
		local items = {}
		for _, v in ipairs(prop.qualifiers[name]) do
			if v.snaktype == "value" then
				table.insert(items, format(v, options))
			end
		end

		if #items > 0 then
			return prefix..mw.text.listToText(items, separator, lastSeparator)
		end
	end
end

return {
	
wikiUL = function(prop, options, name)
	return SELECT(prop, options, name, "\n*", "\n*", "\n*")
end,

wikiOL = function(prop, options, name)
	return SELECT(prop, options, name, "\n#", "\n#", "\n#")
end,

BR = function(prop, options, name)
	return SELECT(prop, options, name, "", "<br />", "<br />")
end,

AND = function(prop, options, name)
	return SELECT(prop, options, name, "", ", ", " i\194\160")
end,

OR = function(prop, options, name)
	return SELECT(prop, options, name, "", ", ", " lub\194\160")
end,

MINTIME = function(prop, options, name)
	if prop.qualifiers and prop.qualifiers[name] then
		-- select minimum date
		local time = false
		local novalue = false
		local somevalue = false
		for _, v in ipairs(prop.qualifiers[name]) do
			if v.snaktype == "value" then
				if not time or (v.datavalue.value.time < time.datavalue.value.time) then
					time = v
				end
			elseif v.snaktype == "novalue" then
				novalue = v
			elseif v.snaktype == "somevalue" then
				somevalue = v
			end
		end

		local result = time or novalue or somevalue
		if result then
			return options.naked == true and result or format(result, options)
		end
	end
end,

MAXTIME = function(prop, options, name)
	if prop.qualifiers and prop.qualifiers[name] then
		-- select maximum date
		local time = false
		local novalue = false
		local somevalue = false
		for _, v in ipairs(prop.qualifiers[name]) do
			if v.snaktype == "value" then
				if not time or (time.datavalue.value.time < v.datavalue.value.time) then
					time = v
				end
			elseif v.snaktype == "novalue" then
				novalue = v
			elseif v.snaktype == "somevalue" then
				somevalue = v
			end
		end

		local result = time or novalue or somevalue
		if result then
			return options.naked == true and result or format(result, options)
		end
	end
end,

TEXT1 = function(prop, langs, name)
	if prop.qualifiers and prop.qualifiers[name] then
		-- use pl as default if none is given
		if not langs or (#langs == 0) then
			langs = { "pl" }
		end
		
		-- list first occurance of all languages
		local texts = {}
		for _, v in ipairs(prop.qualifiers[name]) do
			if (v.snaktype == "value") and (v.datatype == "monolingualtext") and v.datavalue and (v.datavalue.type == "monolingualtext") and v.datavalue.value then
				local language = v.datavalue.value.language
				local text = v.datavalue.value.text
				if language and text and (#text > 0) and not texts[language] then
					texts[language] = text
				end
			end
		end
	
		-- return first available language
		for _, v in ipairs(langs) do
			if texts[v] then
				return texts[v]
			end
		end
	end
end,

QUALITY = function(prop)
	local name = "P1480"
	local i18n = {
		Q5727902 = "ok.", -- skrót
		Q30230067 = "być może", -- zmiana nazwy
	}
	
	local results = {}
	if prop.qualifiers and prop.qualifiers[name] then
		for _, v in ipairs(prop.qualifiers[name]) do
			if (v.snaktype == "value") and (v.datatype == "wikibase-item") and (v.datavalue.type == "wikibase-entityid") then
				local label = i18n[v.datavalue.value.id] or mw.wikibase.getLabelByLang( v.datavalue.value.id, "pl" )
				if label and (#label > 0) then
					table.insert(results, label)
					table.insert(results, " ")
				end
			end
		end
	end

	return table.concat(results, "") or ""
end,

}