Moduł:Sandbox/Draco flavus/TestFields
Wygląd
Dokumentacja dla tego modułu może zostać utworzona pod nazwą Moduł:Sandbox/Draco flavus/TestFields/opis
local p = {}
function p.FindFields(frame)
-- Wywołanie: {{#invoke: Sandbox/Draco flavus/TestFields | FindFields | 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}}
-- każde pole szablonu źródłowego {{Dane tekstu}} musi być w osobnej linii (tak zazwyczaj robimy dla przejrzystości, tu jest to wymóg techniczny)
-- a więc 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
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)
for k,v in pairs(frame.args) do
if k ~= 1
then
if (string.find(PageResult, "| *" .. k .." *=[^|]*") ~= nil)
then
PageResult=PageResult:gsub("| *" .. k .. " *=[^\n]*", "| " .. k .. " = " .. v:gsub("^%s+","") )
else
PageResult = PageResult .. " | ".. k .. " = " .. v:gsub("^%s+","") .. string.char(10)
end
end
end
return frame:preprocess("{{Dane tekstu" .. PageResult .. "}}")
-- FOR TESTS return PageResult
end
return p