Przejdź do zawartości

Moduł:Prawdy i zdrowego rozsądku

Z Wikiźródeł, wolnej biblioteki

Dokumentacja dla tego modułu może zostać utworzona pod nazwą Moduł:Prawdy i zdrowego rozsądku/opis

--na podstawie modułu https://pl.wikisource.org/wiki/Module:Staropolski
local p = {}

function strona_istnieje (nazwaS)
	local strona = mw.title.makeTitle( 'Strona', nazwaS )
	if strona.exists then
		return true
	end
	return false
end

function p.haslo( frame )
--parametry Stron Indeksu
	local nazwaI = "Kazimierz Bartoszewicz - Słownik prawdy i zdrowego rozsądku.djvu"
	local stronaI = "Kazimierz Bartoszewicz - Słownik prawdy i zdrowego rozsądku.djvu"
	local stronaG = "Słownik prawdy i zdrowego rozsądku"
	local tytul_t = "[[" .. stronaG .. "]]"
--	local wydawnictwo_t = ""
	local rok_t = "1905"
	local miejsce_t = "Warszawa"
	local zrodlo_t = "[[commons:File:Kazimierz Bartoszewicz - Słownik prawdy i zdrowego rozsądku.djvu|Skany na Commons]]"
	local autor_t = "Kazimierz Bartoszewicz"
	local lic_t = '{{MixPD|Kazimierz Bartoszewicz}}'
	local separator = "{{tab}}{{Rozstrzelony|"
	local obejmal = "{{tab}}{{Rozstrzelony|"
	local obejmap = "}}"
	local num_stron = 3
	local omijaj = { }
-- /parametry
	local blad_k = "\n[[Kategoria:Słownik prawdy i zdrowego rozsądku "
	local strona = frame.args[1]
	local slowo = frame.args[2]
	local wikipedia = frame.args[3]
	local wiktionary = frame.args[4]
	local nastepny_s = frame.args[6]
	local slowo_p = frame.args[5]
	local dodatkowe_strony = frame.args[7]
	local litera_t =  mw.ustring.sub(string.gsub(slowo, '%d?%p?%s?„?', ''), 1, 1)
-- parametry  opcjonalne
	if wiktionary == nil or wiktionary == "" then
		wiktionary = mw.ustring.lower(string.gsub(slowo, '^%d%p%s?', ''))
	end
	if wikipedia == ".brak." then
		wikipedia = ""
	end
	if wiktionary == ".brak." then
		wiktionary = ""
	end
-- /opcjonalne
	local strona_raw = mw.title.makeTitle( 'Strona', stronaI .. '/' .. strona )
	if not strona_raw.exists then
		return "<br />Brak strony [[Strona:" .. stronaI .. "/" .. strona .. "]], która powinna zwierać hasło '''''" .. slowo .. "'''''." .. blad_k .. "(Błąd brak strony)]]"
	end	

	table.sort( omijaj )	
	local strona_rp = tostring((tonumber(strona) - 1))
	for i, v in ipairs( omijaj ) do
		if strona_rp == tostring((tonumber(omijaj[#omijaj+1-i]))) then
			strona_rp = tostring((tonumber(strona_rp) - 1))
		end
	end

	local strona_rn = tostring((tonumber(strona) + 1))	
	for i, v in ipairs( omijaj ) do
		if strona_rn == tostring((tonumber(v))) then
			strona_rn = tostring((tonumber(strona_rn) + 1))
		end
	end

	local slowo_r = "\n" .. strona_raw:getContent()
	local strona_raw_p = mw.title.makeTitle( 'Strona', stronaI .. '/' .. strona_rp )
	if strona_raw_p.exists then
		slowo_r = strona_raw_p:getContent() .. slowo_r
	end
	local strona_raw_n = mw.title.makeTitle( 'Strona', stronaI .. '/' .. strona_rn )
	if strona_raw_n.exists then
		slowo_r = slowo_r .. '\127NSSN\127' .. strona_raw_n:getContent()  --dodany znacznik kolejnej strony
	end
	--jeśli hasło jest dłuższe niż strona bieżąca i następna o liczbę stron w zmiennej 'dodatkowe_strony'
	local strona_rnd = {}
	if dodatkowe_strony ~= nil and dodatkowe_strony ~= "" then
		strona_rnd[1] = tostring((tonumber(strona_rn) + 1))	
		for  licznik = 1, dodatkowe_strony do
			--sprawdź czy nie są do ominięcia
			for i, v in ipairs( omijaj ) do
				if strona_rnd[licznik] == tostring((tonumber(v))) then
					strona_rnd[licznik] = tostring((tonumber(strona_rnd[licznik]) + 1))
				end
			end
			local strona_raw_nd = mw.title.makeTitle( 'Strona', stronaI .. '/' .. strona_rnd[licznik] )
			if strona_raw_nd.exists then
				slowo_r = slowo_r .. '\127NSSN\127' .. strona_raw_nd:getContent()  --dodany znacznik kolejnej strony
			end
			strona_rnd[licznik + 1] = tostring((tonumber(strona_rnd[licznik]) + 1))	
		end
	end
	--/dodatkowe strony
--usunięcie z zawartości "unparsed" sekcje <noinclude>
	slowo_r = string.gsub( slowo_r, '<[nN][oO][iI][nN][cC][lL][uU][dD][eE]>.-</[nN][oO][iI][nN][cC][lL][uU][dD][eE]>', '')
-- nie usuwam znaczników section, wydzielam je do nowych linii
	slowo_r = "\n" .. string.gsub( slowo_r, '<[sS][eE][cC][tT][iI][oO][nN] (.-)/>', '\n<section %1/>\n')
	local pocz = string.find( slowo_r, '\n' .. obejmal  .. slowo .. obejmap, 1, true)
	if pocz == nil then
		--łata dla Korekta
		pocz = string.find( slowo_r, '\n' .. obejmal .. '{{[kK]ore?k?t?a?|[^|]-|' .. slowo .. '}}' .. obejmap, 1, true )
		--/korekta
		if pocz == nil then
			--łata dla problemu "wyrzucenia" ostatniej litery za szablon {{Rozstrzelony|}}
				pocz = string.find( slowo_r, '\n' .. obejmal .. mw.ustring.sub( slowo, 0, -2 ) .. obejmap .. mw.ustring.sub( slowo, -1), 1, true )
			--/inter
			if pocz == nil then
				return "<br />Nie znaleziono hasła '''''" .. slowo .. "''''' na stronie [[Strona:" .. stronaI .. "/" .. strona .. "]]." .. blad_k .. "(Błąd brak hasła)]]"
			end
		end
	end
-- slowo_p sprawdzenie czy słowo poprzednie znajduje się na stronie
	if slowo_p == nil or slowo_p == "" then
		slowo_p = string.sub( slowo_r, 1, pocz - 1)
		local pocz_p = string.find( string.reverse( "\n" .. slowo_p ), string.reverse( "\n" .. obejmal ) )
		if pocz_p == nil then
			-- komunikat gdy poprzednia nie jest sprofreadowana
			slowo_p = ""
		else
			slowo_p = string.sub( slowo_p, string.len( slowo_p ) - pocz_p + 2 )
			pocz_p = mw.ustring.find( slowo_p, obejmap )
			if pocz_p == nil then
				slowo_p = ""
			else
				slowo_p = mw.ustring.sub( slowo_p, 1, pocz_p + 3)
				--usunięcie {{Korekta}} w poprzedni
				slowo_p = string.gsub( slowo_p, '{{[kK]ore?k?t?a?|.-|', '' )
				slowo_p = string.gsub( slowo_p, '}}', '' )
-- usunięcie obejmu wraz z interpukcją przy ostatniej literze za szablonem Roz
				slowo_p = mw.ustring.gsub( mw.ustring.gsub( slowo_p, '[%p%s][%a—]?$', '' ), '[%p%s][%a—]?$', '' )
				--/Korekta
			end
		end
	end
--/slowo_p
	slowo_r = string.sub( slowo_r, pocz + 1)
	local kon = string.find( slowo_r, separator, 2)
	local slowo_n
	if kon == nil then
			return "<br />Nie znaleziono kontynuacji hasła '''''" .. slowo .. "''''' ze strony [[Strona:" .. stronaI .. "/" .. strona .. "]], na stronie [[Strona:" .. stronaI .. "/" .. strona_rn .. "]]." .. blad_k .. "(Błąd kontynuacji)]]"
	else
		--slowo_n
		slowo_n = string.sub( slowo_r, kon ) --+ string.len( separator .. obejmal )
		local kon_n = string.find( slowo_n, obejmal .. '.-' .. obejmap )
		if kon_n == nil then
				--komunikat dla braku sproofreadowanej strony następnej, w przypadku gdy tam znajduje się następne hasło (na razie nastepny=strona indeksu głównego
				slowo_n = nil
		else
			slowo_n = string.sub( slowo_n, kon_n + string.len( obejmal ) )
		end
		--/slowo_n
	end
--slowo_n
	if ( nastepny_s == nil or nastepny_s == "" ) and slowo_n ~= nil then
		slowo_n = mw.ustring.sub( slowo_n, 1, mw.ustring.find( slowo_n, obejmap ) + 3 )
--usunięcie {{Korekta}} w następny
		slowo_n = string.gsub( slowo_n, '{{[kK]ore?k?t?a?|.-|', '' )
		slowo_n = string.gsub( slowo_n, '}}', '' )
-- usunięcie obejmu wraz z interpukcją przy ostatniej literze za szablonem Roz
		slowo_n = mw.ustring.gsub( mw.ustring.gsub( slowo_n, '[%p%s][%a—]?$', '' ), '[%p%s][%a—]?$', '' )
--Korekta
	else
		slowo_n = nastepny_s
	end
--/slowo_n
	
	slowo_r = string.sub( slowo_r, 1, kon - 1 )
	
-- sprawdzenie czy treść hasła znajduje się na stronie "strona" oraz kontunuacja na "strona_rn" - w tym przypadku dodanie znacznika strony kolejnej do treści i usunięcie znacznika \127NSSN\127
	local trans_t2 = ''
	if string.find( slowo_r, "\127NSSN\127") then
		-- jeżeli dodatkowe strony ponad następną
		local strona_rn_to
		if #strona_rnd > 0 then
			strona_rn_to = strona_rnd[#strona_rnd - 1]
		else
			strona_rn_to = strona_rn 
		end
		-- /dodatkowe
		trans_t2 = '<pages index="' .. nazwaI .. '" from="' .. strona_rn .. '" to="' .. strona_rn_to .. '" onlysection="nic" />'
		slowo_r = string.gsub( slowo_r, "%s?\127NSSN\127", " ")
	end

	slowo_r = string.gsub( slowo_r, '\n?<section (.-)/>\n?', '<section %1/>') -- nie usuwam znaczników section, przywracam znaczniki bez \n
--sprawdzam czy w treści znajduje się przypis
	if string.find( slowo_r, "<[rR][eE][fF]") or string.find(slowo_r, "{{[pP]w") or mw.ustring.find( slowo_r, "{{[bB]łąd w druku") or string.find( slowo_r, "{{[bB]wd") then
		lic_t = '{{Przypisy}}' .. '\n' .. lic_t --frame:expandTemplate{ title = 'Przypisy', args = {} } .. '\n' .. lic_t
	end

	local trans_t = '<pages index="' .. nazwaI .. '" from="' .. strona .. '" to="' .. strona .. '" onlysection="nic" />'
	local slowo_t = '{{JustowanieStart}}' .. trans_t .. '\n' .. slowo_r .. trans_t2 .. '{{JustowanieKoniec}}'
	local dane_t = '{{Dane tekstu|autor=' .. autor_t ..'|tytuł=' .. tytul_t .. '|rok wydania=' .. rok_t .. '|miejsce wydania=' .. miejsce_t .. '|strona indeksu=' .. nazwaI .. '|źródło=' .. zrodlo_t .. '|poprzedni=../' .. slowo_p .. '|następny=../' .. slowo_n .. '|wikipedia=' ..  wikipedia .. '|wiktionary=' ..  wiktionary .. '|inne=[[' .. stronaG.. '/indeks ' .. litera_t .. '|' .. litera_t .. ' – wykaz haseł]]<br />[[' .. stronaG .. '/' ..  litera_t .. '|' .. litera_t .. ' – całość]]}}'
	local tresc = dane_t .. '\n' .. slowo_t .. '\n{{clear}}\n' .. lic_t
	return frame:preprocess{ text = tresc }
end

return p