Moduł:Staropolski
Ten moduł wykorzystuje dość skomplikowane cechy mechanizmów MediaWiki. Nie zaleca się jego modyfikacji osobom niedoświadczonym.
Osoba proponująca zmiany powinna być przygotowana do naprawienia wszelkich niepożądanych ubocznych efektów swoich działań. Eksperymenty należy prowadzić w brudnopisie. Moduł nadzorowany jest przez Wikiskryba:Zdzislaw |
Moduł obsługuje Szablony {{Staropolski}} oraz {{Staropolski_L}}.
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 = "M. Arcta Słownik Staropolski"
local stronaI = "M. Arcta Słownik Staropolski.djvu"
local tytul_t = "[[M. Arcta Słownik Staropolski]]"
local wydawnictwo_t = "M. Arct"
local rok_t = "ok. 1920"
local miejsce_t = "Warszawa"
local zrodlo_t = "[[commons:File:M. Arcta Słownik Staropolski.djvu|skany na Commons]]"
local autor_t = "[[Autor:Antoni Krasnowolski|Antoni Krasnowolski]],<br>[[Autor:Władysław Niedźwiedzki|Władysław Niedźwiedzki]]"
local lic_t = '{{MixPD|a1=Antoni Krasnowolski|a2=Władysław Niedźwiedzki}}'
local separator = "<br%s?[/]?><br%s?[/]?>"
local obejma = "'''"
local num_stron = 4
local omijaj = {503, 504, 505, 506}
-- /parametry
local blad_k = "\n[[Kategoria:M. Arcta Słownik Staropolski "
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 = string.rep( "0", num_stron - string.len(tostring((tonumber(strona) - 1))) ) .. tostring((tonumber(strona) - 1))
for i, v in ipairs( omijaj ) do
if strona_rp == string.rep( "0", num_stron - string.len(tostring((tonumber(omijaj[#omijaj+1-i])))) ) .. tostring((tonumber(omijaj[#omijaj+1-i]))) then
strona_rp = string.rep( "0", num_stron - string.len(tostring((tonumber(strona_rp) - 1))) ) .. tostring((tonumber(strona_rp) - 1))
end
end
local strona_rn = string.rep( "0", num_stron - string.len(tostring((tonumber(strona) + 1))) ) .. tostring((tonumber(strona) + 1))
for i, v in ipairs( omijaj ) do
if strona_rn == string.rep( "0", num_stron - string.len(tostring((tonumber(v)))) ) .. tostring((tonumber(v))) then
strona_rn = string.rep( "0", num_stron - string.len(tostring((tonumber(strona_rn) + 1))) ) .. 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] = string.rep( "0", num_stron - string.len(tostring((tonumber(strona_rn) + 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] == string.rep( "0", num_stron - string.len(tostring((tonumber(v)))) ) .. tostring((tonumber(v))) then
strona_rnd[licznik] = string.rep( "0", num_stron - string.len(tostring((tonumber(strona_rnd[licznik]) + 1))) ) .. 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] = string.rep( "0", num_stron - string.len(tostring((tonumber(strona_rnd[licznik]) + 1))) ) .. tostring((tonumber(strona_rnd[licznik]) + 1))
end
end
--/dodatkowe strony
slowo_r = string.gsub( slowo_r, '<[nN][oO][iI][nN][cC][lL][uU][dD][eE]>.-</[nN][oO][iI][nN][cC][lL][uU][dD][eE]>', '') --usunięcie z zawartości "unparsed" sekcje <noinclude>
slowo_r = "\n" .. string.gsub( slowo_r, '<[sS][eE][cC][tT][iI][oO][nN] (.-)/>', '\n<section %1/>\n') -- nie usuwam znaczników section, wydzielam je do nowych linii
local pocz = string.find( slowo_r, '\n' .. obejma .. slowo .. obejma, 1, true)
if pocz == nil then
--łata dla Korekta
pocz = string.find( slowo_r, '\n' .. obejma .. '{{[kK]ore?k?t?a?|[^|]-|' .. slowo .. '}}' .. obejma)
--/korekta
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
-- 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 ), obejma .. "\n")
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 + string.len(obejma) - 1)
pocz_p = string.find( slowo_p, obejma)
if pocz_p == nil then
slowo_p = ""
else
slowo_p = string.sub( slowo_p, 1, pocz_p - 1)
--usunięcie {{Korekta}} w poprzedni
slowo_p = string.gsub( slowo_p, '{{[kK]ore?k?t?a?|.-|', '' )
slowo_p = string.gsub( slowo_p, '}}', '' )
--/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 +1 ) --+ string.len(separator .. obejma)
local kon_n = string.find(slowo_n, obejma .. '.-' .. obejma)
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(obejma))
end
--/slowo_n
end
--slowo_n
if (nastepny_s == nil or nastepny_s == "") and slowo_n~= nil then
slowo_n = string.sub( slowo_n, 1, string.find( slowo_n, obejma) - 1)
--usunięcie {{Korekta}} w następny
slowo_n = string.gsub( slowo_n, '{{[kK]ore?k?t?a?|.-|', '' )
slowo_n = string.gsub( slowo_n, '}}', '' )
--Korekta
else
slowo_n = nastepny_s
end
--/slowo_n
slowo_r = string.sub( slowo_r, 1, kon - 1)
-- sprawdzenie czy treść hasła najduje się na stronie "strona" oraz kontunuacja na "strona_rn" - w tym przypadku dodanie znacznika strony kolejnej do treści i usunie 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="' .. stronaI .. '/' .. strona_rn .. '" to="' .. stronaI .. '/' .. 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="' .. stronaI .. '/' .. strona .. '" to="' .. stronaI .. '/' .. strona .. '" onlysection="nic" />'
local slowo_t = '{{JustowanieStart}}' .. trans_t .. '\n{{tab}}' .. slowo_r .. trans_t2 .. '{{JustowanieKoniec}}'
local dane_t = '{{Dane tekstu|autor=' .. autor_t ..'|tytuł=' .. tytul_t .. '|wydawca=' .. wydawnictwo_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=[[' .. nazwaI.. '/Indeks ' .. litera_t .. '|' .. litera_t .. ' – wykaz haseł]]<br>[[' .. nazwaI .. '/' .. litera_t .. ' (całość)|' .. litera_t .. ' – całość]]}}'
local tresc = dane_t .. '\n' .. slowo_t .. '\n{{clear}}\n' .. lic_t
return frame:preprocess{ text = tresc }
end
function p.litera ( frame )
--parametry Stron Indeksu
local nazwaI = "M. Arcta Słownik Staropolski"
local stronaI = "M. Arcta Słownik Staropolski.djvu"
local tytul_t = "[[M. Arcta Słownik Staropolski|Słownik Staropolski]]"
local wydawnictwo_t = "M. Arct"
local rok_t = "ok. 1920"
local miejsce_t = "Warszawa"
local zrodlo_t = "[[commons:File:M. Arcta Słownik Staropolski.djvu|Skany na Commons]]"
local autor_t = "[[Autor:Antoni Krasnowolski|Antoni Krasnowolski]]<br>[[Autor:Władysław Niedźwiedzki|Władysław Niedźwiedzki]]"
local kategorie = "\n[[Kategoria:M. Arcta Słownik Staropolski|**]]"
local lic_t = '{{MixPD|a1=Antoni Krasnowolski|a2=Władysław Niedźwiedzki}}'
local separator = "<br%s?[/]?><br%s?[/]?>"
local obejma = "'''"
local num_stron = 4
local omijaj = {503, 504, 505, 506}
table.sort( omijaj )
-- /parametry
local blad_k = "\n[[Kategoria:Strony z błędami skryptów]]"
local strona_od = frame.args[1]
local strona_do = frame.args[2]
local litera = frame.args[3]
local litera_p = frame.args[4]
local litera_n = frame.args[5]
local dt_inne = frame.args[6]
-- parametry opcjonalne
if litera_p~=nil and litera_p~="" then
litera_p = '../Indeks ' .. litera_p
end
if litera_n~=nil and litera_n~="" then
litera_n = '../Indeks ' .. litera_n
end
if dt_inne ~= nil and dt_inne ~= "" then
dt_inne = '[[' .. nazwaI.. '/' .. dt_inne .. ' (całość)|' .. dt_inne .. ' – całość]]'
else
dt_inne = '[[' .. nazwaI.. '/' .. litera .. ' (całość)|' .. litera .. ' – całość]]'
end
local hasla={}
local transk={}
local stronan = tonumber(strona_od)
local stronan_do = tonumber(strona_do)
while stronan <= stronan_do do
local strona_raw = mw.title.makeTitle( 'Strona', stronaI .. '/' .. string.rep( "0", num_stron - string.len(tostring(stronan)) ) .. tostring(stronan) )
if strona_raw.exists then
local strona_r = "\n" .. strona_raw:getContent()
strona_r = string.gsub( strona_r, '<[nN][oO][iI][nN][cC][lL][uU][dD][eE]>.-</[nN][oO][iI][nN][cC][lL][uU][dD][eE]>', '') --usunięcie z zawartości "unparsed" sekcje <noinclude>
strona_r = string.gsub( strona_r, '<[sS][eE][cC][tT][iI][oO][nN] (.-)/>', '\n<section %1/>\n') -- nie usuwam znaczników section, wydzielam je do nowych linii
local strona_rr = string.gsub( strona_r, "\n" .. obejma .. '{{[kK]ore?k?t?a?|[^|]-|%d?%p?%s?(' .. litera .. ')', "\n" .. obejma .. '%1' )
local pocz_h = string.find(strona_rr, "\n" .. obejma .. '%d?%p?%s?' .. litera ..'.-' .. obejma)
transk[#hasla] = '<pages index="' .. nazwaI .. '" from="' .. stronaI .. '/' .. string.rep( "0", num_stron - string.len(tostring(stronan)) ) .. tostring(stronan) .. '" to="' .. stronaI .. '/' .. string.rep( "0", num_stron - string.len(tostring(stronan)) ) .. tostring(stronan) .. '" onlysection="nic" />'
while pocz_h ~= nil do
strona_r = string.sub(strona_r, pocz_h + string.len(obejma) + 1)
local kon_h = string.find(strona_r, obejma)
table.insert (hasla, string.sub(strona_r, 1, kon_h - 1))
local pocz_sep = string.find(strona_r, separator)
if pocz_sep == nil then
pocz_sep = string.len(strona_r) - 5
end
strona_r = string.sub(strona_r, pocz_sep)
strona_rr = string.gsub( strona_r, "\n" .. obejma .. '{{[kK]ore?k?t?a?|[^|]-|%d?%p?%s?(' .. litera .. ')', "\n" .. obejma .. '%1' )
pocz_h = string.find(strona_rr, "\n" .. obejma .. '%d?%p?%s?' .. litera ..'.-' .. obejma)
end
end
stronan = stronan + 1
for i, v in ipairs( omijaj ) do
if stronan == v then
stronan = stronan + 1
end
end
end
local naglowek
strona_raw = mw.title.makeTitle( 'Strona', stronaI .. '/' .. strona_od )
if strona_raw.exists then
naglowek = '<pages index="' .. nazwaI .. '" from="' .. stronaI .. '/' .. strona_od .. '" to="' .. stronaI .. '/' .. strona_od .. '" onlysection="' .. litera .. '" />'
end
if naglowek == nil or naglowek == "" then
-- jeżeli brak nagłówka lub brak strony z nagłówkiem stwórz własny
naglowek = '<center><big><big><big><big>' .. litera .. '.</big></big></big></big></center>'
end
if #litera>2 then --jeżeli dla > 1 litery
naglowek = '<center><big><big><span style="cursor: help;" title="Zawiera ' .. #hasla .. ' haseł.">Indeks haseł: \'\'' .. hasla[1] .. ' - ' .. hasla[#hasla] .. '\'\'.</span></big></big></center>'
end
local dane_t = '{{Dane tekstu|autor=' .. autor_t ..'|tytuł=' .. tytul_t .. '|wydawca=' .. wydawnictwo_t .. '|rok wydania=' .. rok_t .. '|miejsce wydania=' .. miejsce_t .. '|strona indeksu=' .. nazwaI .. '|źródło=' .. zrodlo_t .. '|poprzedni=' .. litera_p .. '|następny=' .. litera_n .. '|inne=' .. dt_inne .. '}}'
local wierszy = math.ceil( #hasla/4 )
local tresc = ""
tresc = tresc .. '<div>' .. '<table align="center"><tr><td colspan="4">' .. naglowek .. '<br></td></tr>\n<tr>'
for i,v in ipairs(hasla) do
if (i % (wierszy)) == 1 then
tresc = tresc .. '\n<td width="25%" valign="top" style="padding-left:10px; padding-right:10px;">'
end
local v_bezKorekta = string.gsub( v, '{{[kK]ore?k?t?a?|.-|', '' )
v_bezKorekta = string.gsub( v_bezKorekta, '}}', '' )
tresc = tresc .. "[[" .. nazwaI .. "/" .. v_bezKorekta .. "|" .. v .. "]] \n\n"
if transk[i - 1] then
tresc = tresc .. transk[i - 1]
end
if (i % (wierszy)) == 0 then
tresc = tresc .. '</td>'
end
end
tresc = tresc .. '</td></tr></table></div>' .. '\n{{clear}}\n'
--sprawdzam czy w treści znajduje się przypis
if string.find( tresc, "<[rR][eE][fF]") or string.find(tresc, "{{[pP]w") or mw.ustring.find( tresc, "{{[bB]łąd w druku") or string.find( tresc, "{{[bB]wd") then
lic_t = '{{Przypisy}}' .. '\n' .. lic_t
end
local tresc_I = dane_t .. '<br>\n' .. tresc .. lic_t .. kategorie
return ((frame:preprocess{ text = '{{NAMESPACENUMBER}}' } == '1') and '<pre>' .. mw.text.nowiki( tresc_I ) .. '</pre>' or frame:preprocess{ text = tresc_I })
end
return p