Moduł:Sandbox/Draco flavus/TestAllPagesUnivRangeUniv

Dokumentacja dla tego modułu może zostać utworzona pod nazwą Moduł:Sandbox/Draco flavus/TestAllPagesUnivRangeUniv/opis

local p = {}

local function ifisempty(s)
	if s==nil or s=='' then
		return "???"
	else
		return s
	end
end

function p.sections_in_range(frame)

-- Wywołanie: {{#invoke: Sandbox/Draco flavus/TestAllPagesUnivRangeUniv | sections_in_range | Strona:PL Encyklopedyja powszechna 1860 T1.djvu|start|end|pattern}}
-- Wynik: jeśli w danym zakresie stron występuje dany string zwraca go 
-- do wykorzystania w szablonie

    local SubPageResult = frame.args[4]..string.char(10)..string.char(10)
    local n = tonumber(frame.args[2])
    local m = tonumber(frame.args[3])
    local SubPageName=""
    local Items=""
    local FirstPage={}
    local LastPage={}
    local ListOfItems="◇"
    -- local Test=""
    while (n <= m) do
    	
    	--
    
    	SubPageName=frame.args[1] .. "/" .. n
    
    
    	
    	if (string.match(mw.title.new(SubPageName):getContent(), frame.args[4]) ~= nil ) then
    		SubPageResult = SubPageResult .. string.char(10) .. string.char(10) .. "𝕬".. n .. "◇"
    		for w in  string.gmatch(mw.title.new(SubPageName):getContent(), frame.args[4]) do
    			w = w:gsub("section begin=" .. string.char(34), "𝕭")
    			w = w:gsub("section end=" .. string.char(34), "𝕰")
    			w = w:gsub(string.char(34) .. string.char(32), "𝖅")
    			w = w .. n .. "◇"
        		SubPageResult = SubPageResult .. w
    		end
    	end
	
    	--
		n=n+1
		SubPageName=frame.args[1] .. "/" .. n
    end
    for k, v in string.gmatch(SubPageResult, "𝕭([^𝖅]*)𝖅(%d*)◇") do
    	-- Items=Items .. k .. v
    	if FirstPage[k]==nil then
    		FirstPage[k]=v
    		ListOfItems=ListOfItems .. k .. "◇"
    	end
    end
    for k, v in string.gmatch(SubPageResult, "𝕰([^𝖅]*)𝖅(%d*)◇") do
    	-- Items=Items .. k .. v
    	LastPage[k]=v
    end
	-- return SubPageResult
	-- return Items
	
	for m in string.gmatch(ListOfItems, "◇([^◇][^◇]*)") do
		Items = Items .. m .. string.char(32) .. FirstPage[m] .. string.char(32) .. ifisempty(LastPage[m]) .. "<br>" .. string.char(10)
		-- Test = Test .. m .. "★"
	end
	return Items 

end

return p