Moduł:Brudnopis/Paweł Ziemian/Wikidane/formatQualifiers

Z Wikipedii, wolnej encyklopedii

Dokumentacja dla tego modułu może zostać utworzona pod nazwą Moduł:Brudnopis/Paweł Ziemian/Wikidane/formatQualifiers/opis

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

local function SELECT(prop, options, name, 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 mw.text.listToText(items, separator, lastSeparator)
		end
	end
end

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

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

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

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

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

local function MINTIME(prop, options, name)
	if prop.qualifiers and prop.qualifiers[name] then
		-- select minimum date
		local time = 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
			end
		end

		if time then
			return format(time, options)
		end
	end
end

local function MAXTIME(prop, options, name)
	if prop.qualifiers and prop.qualifiers[name] then
		-- select maximum date
		local time = 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
			end
		end

		if time then
			return format(time, options)
		end
	end
end

return {
	
P585 = function(prop, options)
	return MAXTIME(prop, options, "P585")
end,

P518 = function(prop, options)
	return AND(prop, options, "P518")
end,

P1319 = function(prop, options)
	return MINTIME(prop, options, "P1319")
end,

P1326 = function(prop, options)
	return MAXTIME(prop, options, "P1326")
end,

}