Moduł:Poczekalnia

Z Wikipedii, wolnej encyklopedii
 Dokumentacja modułu [zobacz] [edytuj] [historia] [odśwież]

Użycie[edytuj kod]

Moduł jest używany na stronie Wikipedia:Poczekalnia/editnotice i służy do doprecyzowania zawartej tam wiadomości. Bez użycia Lua nie ma możliwości rozpoznania po nazwie podstrony, czego dotyczy dyskusja.

{{#invoke:Poczekalnia|Nazwa}}[edytuj kod]

Funkcja zwracająca pełną nazwę artykułu, kategorii, szablonu lub innej strony wraz z prefiksem przestrzeni nazw dyskutowanej w Poczekalni. Nie przyjmuje żadnych parametrów. Wywołana poza poczekalnią zwraca pusty tekst.

{{#invoke:Poczekalnia|Nad}}[edytuj kod]

Funkcja zwracająca fragment tekstu linkującego do tematu dyskusji w Poczekalni. Nie przyjmuje żadnych parametrów. Wywołana poza Poczekalnią zwraca pusty tekst.

Błędy[edytuj kod]

Błędy należy zgłaszać na stronie Wikipedia:Kawiarenka/Kwestie techniczne.
local function PageName()
	local restorePageName = {
		"^Wikipedia:Poczekalnia/artykuły/%d%d%d%d:%d%d:%d%d:(.+)$",
		"^Wikipedia:Poczekalnia/biografie/%d%d%d%d:%d%d:%d%d:(.+)$",
		"^Wikipedia:Poczekalnia/naprawa/%d%d%d%d:%d%d:%d%d:(.+)$",
		"^Wikipedia:Poczekalnia/kwestie techniczne/%d%d%d%d:%d%d:%d%d:(.+)$",
	}
	
	local title = mw.title.getCurrentTitle().prefixedText
	for _, v in ipairs(restorePageName) do
		local pageName = mw.ustring.match(title, v)
		if pageName then
			return pageName
		end
	end
end

local function searchDnuPrefix(date, subjectPattern)
	
	local function scanContent(titleText, pattern)
		local archiveTitle = mw.title.new(titleText)
		if not archiveTitle.exists then
			return false
		end

		local result = mw.ustring.match(archiveTitle:getContent(), pattern)
		return result
	end
	
	local roots = {
		{ "Wikipedia:Poczekalnia/Załatwione artykuły ", "Wikipedia:Poczekalnia/artykuły/%d%d%d%d:%d%d:%d%d:" },
		{ "Wikipedia:Poczekalnia/Załatwione biografie ", "Wikipedia:Poczekalnia/biografie/%d%d%d%d:%d%d:%d%d:" },
		{ "Wikipedia:Poczekalnia/Załatwione naprawa ", "Wikipedia:Poczekalnia/naprawa/%d%d%d%d:%d%d:%d%d:" },
		{ "Wikipedia:Poczekalnia/Załatwione kwestie techniczne ", "Wikipedia:Poczekalnia/kwestie techniczne/%d%d%d%d:%d%d:%d%d:" },
	}

	local baseDate = mw.getContentLanguage():formatDate("F Y", date, true)
	for _, v in ipairs(roots) do
		local pattern = "{{("..v[2]..")"..subjectPattern.."}}"
		local result = scanContent(v[1].."("..baseDate..")", pattern)
		if result then
			return result
		end
		
		local i = 1
		while i < 9 do
			result = scanContent(v[1].."("..baseDate.."/"..tostring(i)..")", pattern)
			if result then
				return result
			end

			if result == false then
				break
			end
			
			i = i + 1
		end
	end
end

return {
	
["Nazwa"] = PageName,
	
["Nad"] = function()
	local format = {
		-- article
		[0] = function(title)
			return "artykułu „[["..title.text.."]]”"
		end,
		
		-- Template
		[10] = function(title)
			return "szablonu <tt>{{[["..title.prefixedText.."|"..title.text.."]]}}</tt>"
		end,
		
		-- Category
		[14] = function(title)
			return "kategorii „[[:"..title.prefixedText.."|"..title.text.."]]”"
		end,
		
		-- otherwise
		[false] = function(title)
			return "strony „[["..title.prefixedText.."]]”"
		end,
	}
	
	local pageName = PageName()
	if pageName then
		local title = mw.title.new(pageName)
		local formatter = format[title.namespace] or format[false]
		return formatter(title)
	end
end,

["Znajdź DNU"] = function()
	local currentTitle = mw.title.getCurrentTitle()
	if not currentTitle.isTalkPage then
		-- to nie dyskusja
		return 
	end
	
	local subjectTitle = currentTitle.subjectPageTitle
	if subjectTitle.namespace ~= 0 then
		-- dyskusja nie dotyczy artykułu
		return 
	end
	
	if subjectTitle.exists then
		-- artykuł istnieje
		return 
	end

	local subjectPattern = mw.ustring.gsub(require("Moduł:String")._escapePattern(subjectTitle.text), " ", "[ _]")
	local timestamp = mw.getContentLanguage():formatDate("Y-m-d", nil, true)
	local result = searchDnuPrefix(timestamp, subjectPattern)
		or searchDnuPrefix(timestamp.." -1 month", subjectPattern)
		or searchDnuPrefix(timestamp.." -2 months", subjectPattern)
	
	if result then
		return result..subjectTitle.text
	end
end,

}