Moduł:Prawdy i zdrowego rozsądku
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