Moduł:Sandbox/Draco flavus/SectionBorders
Dokumentacja dla tego modułu może zostać utworzona pod nazwą Moduł:Sandbox/Draco flavus/SectionBorders/opis
-- Jeśli konsekwentnie tworzone są granice rozdziałów przy pomocy pustych sekcji (bezpośrednio przed następnym rozdziałem - po ostatnim rozdziale ewentualnie -na końcu)
-- Mają one nazwę X (i nie ma dwóch początków rozdziałów na jednej stronie)
-- można półautomatycznie tworzyć rozdziały, kontrolując jednak zawsze poprawność utworzeonego (traksludowanego) rozdziału
local p = {}
local escape_lua_pattern
do
local matches =
{
["^"] = "%^";
["$"] = "%$";
["("] = "%(";
[")"] = "%)";
["%"] = "%%";
["."] = "%.";
["["] = "%[";
["]"] = "%]";
["*"] = "%*";
["+"] = "%+";
["-"] = "%-";
["?"] = "%?";
}
escape_lua_pattern = function(s)
return (s:gsub(".", matches))
end
end
local function PrepareListOfSections(page,number_start,number_end,index_name,chapter)
local SubPageResult = ""
local n = tonumber(number_start)
local m = tonumber(number_end)
local p = '<section *begin *= *"?X"? */><section *end *= *"?X"? */>.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?.?'
local q = '[^A-Za-z0-9=]' .. chapter .. '[^A-Za-z0-9%%]'
local SubPageName=""
local FirstPage={}
local LastPage={}
local ListOfItems="◇"
local position=0
local wynik=''
local wynik1=''
local wynik2=''
local ListOfPages={}
while (n <= m) do
--
SubPageName='Strona:' .. page .. "/" .. n
if mw.title.new(SubPageName):getContent() ~= nil then
if (string.match(mw.title.new(SubPageName):getContent(), p) ~= nil ) then
SubPageResult = SubPageResult .. string.char(10) .. string.char(10) .. "𝕬".. n .. "◇" .. string.match(mw.title.new(SubPageName):getContent(), p ) .. '𝖅'
end
end
--
n = n + 1
SubPageName=page .. "/" .. n
end
wynik = string.match(SubPageResult, '𝕬[^𝕬]*'.. q .. '.-◇')
wynik1 = string.gsub(wynik, '𝕬(%d*)◇.-𝕬%d*◇', '%1')
wynik2 = string.gsub(wynik, '𝕬%d*◇.-𝕬(%d*)◇', '%1')
if page ~=index_name then
wynik1 = '"' .. page .. '/' .. wynik1 .. '"'
wynik2 = '"' .. page .. '/' .. wynik2 .. '"'
end
return '<pages index="' .. index_name .. '" from=' .. wynik1 .. ' to=' .. wynik2 .. ' fromsection="X" tosection="X" />'
end
local function only_last_part(nazwa)
local wynik
wynik = string.gsub(nazwa,'.*[/ ]([^ ]*)','%1')
return wynik
end
function p.all(frame)
local s=PrepareListOfSections(frame.args[1],frame.args[2],frame.args[3],frame.args[4], only_last_part(frame.args[5]))
-- s = only_last_part(frame.args[5])
return s
end
return p