Moduł:Lista newsów: Różnice pomiędzy wersjami

Z Nonsensopedii, polskiej encyklopedii humoru
M
M (opcjonalny parametr limit)
Linia 15: Linia 15:
local rawMonth = frame.args[2]
local rawMonth = frame.args[2]
local month
local month
local limit = frame.args['limit'] or 500
if rawMonth == "+" then
if rawMonth == "+" then
Linia 37: Linia 38:
local eyear = frame.args[3]
local eyear = frame.args[3]
local query = mw.smw.ask{"[[NonNews:+]] [[Ma dzień::" .. day .. "]] [[Ma miesiąc::" .. month .. "]]", "?Ma dzień=dzień", "?Ma miesiąc=miesiąc", "?Ma rok=rok", limit = 500}
local query = mw.smw.ask{"[[NonNews:+]] [[Ma dzień::" .. day .. "]] [[Ma miesiąc::" .. month .. "]]", "?Ma dzień=dzień", "?Ma miesiąc=miesiąc", "?Ma rok=rok", limit = limit, order = 'rand'}
if query then
if query then
local map = {}
local map = {}

Wersja z 18:11, 27 wrz 2021

Dokumentacja dla tego modułu może zostać utworzona pod nazwą Moduł:Lista newsów/opis

local monthNames = {"styczeń", "luty", "marzec", "kwiecień", "maj", "czerwiec", "lipiec", "sierpień", "wrzesień", "październik", "listopad", "grudzień"}

local function tfind(t, what)
	for k, v in ipairs(t) do
		if v == what then
			return k
		end
	end
	return nil
end

local p = {}
function p.list(frame)
	local day = frame.args[1]
	local rawMonth = frame.args[2]
	local month
	local limit = frame.args['limit'] or 500
	
	if rawMonth == "+" then
		month = rawMonth
	else
		local n = tonumber(rawMonth)
		if n ~= nil then
			if n > 0 and n <= #monthNames then
				month = monthNames[n]
			else
				return mw.smw.info('Niepoprawny numer miesiąca', 'error')
			end
		else
			local find = tfind(monthNames, mw.ustring.lower(rawMonth))
			if find ~= nil then
				month = mw.ustring.lower(rawMonth)
			else
				return mw.smw.info('Niepoprawna nazwa miesiąca', 'error')
			end
		end
	end
			
	local eyear = frame.args[3]
	local query = mw.smw.ask{"[[NonNews:+]] [[Ma dzień::" .. day .. "]] [[Ma miesiąc::" .. month .. "]]", "?Ma dzień=dzień", "?Ma miesiąc=miesiąc", "?Ma rok=rok", limit = limit, order = 'rand'}
	if query then
		local map = {}
		for k, v in pairs(query) do
			--[[
			mw.log(k)
			mw.logObject(v)
			--]]
			
			map[v.rok] = map[v.rok] or {}
			table.insert(map[v.rok], v)
		end
		
		local wikitext = ""
		for i = 2005, eyear do
			if #(map[i] or {}) ~= 0 then
				wikitext = wikitext .. "'''" .. i .. "'''\n"
				for k, v in pairs(map[i]) do
					wikitext = wikitext .. "* " .. v[1] .. "\n"
				end
			end
		end
		return frame:preprocess(wikitext)
	else
		return mw.smw.info('Błąd w zapytaniu SMW w module "Lista newsów z danego dnia".', 'error')
	end
end

return p