Moduł:Sandbox/Draco flavus/TestFields3
Dokumentacja dla tego modułu może zostać utworzona pod nazwą Moduł:Sandbox/Draco flavus/TestFields3/opis
function FindFields3( frame )
-- Wywołanie: {{#invoke: Sandbox/Draco flavus/TestFields2 | FindFields2 | Ostatnia brygada | pattern1 | pattern2| pattern3 | … }}
-- Przeznaczenie znajduje na jakiejś stronie szablon {{:Dane tekstu}} kopiuje go, ale podmienia lub dodaje dodatkowe pola
-- tj. te wymienione w dalszych parametrach (pattern1, pattern2, pattern3 … )
-- Wynik: na nowo ewaluowany szablon {{Dane tekstu}}
-- pola szablonu źródłowego {{Dane tekstu}} nie muszą być w osobnej linii (tak zazwyczaj robimy dla przejrzystości, ale nie jest to wymóg techniczny)
-- Na przykład chcąc zrezygnować z okładki napiszemy | okładka = | strona z okładką =
-- chcąc dodać pole pochodzenie napiszemy | pochodzenie = tutaj skąd pochodzi
-- UWAGA by zapobiec ewaluacji szablonu podawanego jako jeden z argumentów np. inne = {{epub}} należy wstawić pipesign po parze nawiasów
-- a więc inne = {{|epub}}
local PageResult = ""
local PageName = frame.args[1]
local PageContent= mw.title.new(PageName):getContent()
local i = 0
local j = 0
local k = ""
local v = ""
i, j = string.find(PageContent, "%b{}" )
PageResult = " " .. string.sub(PageContent, i, j-2):gsub("[^|]*","",1) .. "|"
PageResult = PageResult:gsub("%b{}",
function(s1) return string.gsub(s1,"|", "🐉") end)
PageResult = PageResult:gsub("%b[]",
function(s1) return string.gsub(s1,"|", "🐉") end)
for k,v in pairs(frame.args) do
if k ~= 1
then
if (string.find(PageResult, "| *" .. k .." *=[^|]*") ~= nil)
then
PageResult=PageResult:gsub("| *" .. k .. " *=[^|]*", "| " .. k .. " = " .. v:gsub("^%s+",""):gsub("|","🐉") )
else
PageResult = PageResult .. k .. " = " .. v:gsub("^%s+",""):gsub("|","🐉") .." |".. string.char(10)
end
end
end
PageResult = PageResult:gsub("🐉","|")
PageResult = PageResult:gsub("{{|","{{")
PageResult = PageResult:gsub("<|","<")
PageResult = PageResult:gsub("|\n?$","\n")
return frame:preprocess(frame:preprocess("{{Dane tekstu" .. PageResult .. "}}"))
-- return PageResult
end
local p = {}
function p.FindFields2( frame )
return FindFields3( frame:getParent() )
end
return p