Modul:Switch by pattern: razlika između inačica
Prijeđi na navigaciju
Prijeđi na pretraživanje
mNema sažetka uređivanja |
mNema sažetka uređivanja |
||
| Redak 1: | Redak 1: | ||
local p = {} | local p = {} | ||
function p.found_in(frame) | function p.found_in(frame) | ||
local args = {} | local args = {} | ||
-- Sigurno dohvaćanje roditeljskih argumenata | |||
local parent = frame:getParent() | local parent = frame:getParent() | ||
local p_args = parent and parent.args or {} | local p_args = parent and parent.args or {} | ||
local f_args = frame.args or {} | |||
-- Logika: | -- Logika odabira izvora: | ||
-- Inače | -- Ako roditelj ima _input, koristi roditelja. Inače koristi frame. | ||
local source = (p_args["_input"] and p_args["_input"] ~= "") and p_args or f_args | local source = (p_args["_input"] and p_args["_input"] ~= "") and p_args or f_args | ||
for k, v in pairs(source) do | -- KLJUČNI POPRAVAK: Provjera je li source tablica prije 'pairs' | ||
if type(source) == "table" then | |||
for k, v in pairs(source) do | |||
args[k] = v | |||
end | |||
end | end | ||
-- Provjera imamo li uopće ulazne podatke | |||
if args["_input"] and args["_input"] ~= "" then | if args["_input"] and args["_input"] ~= "" then | ||
return p._found_in(args) | return p._found_in(args) | ||
| Redak 58: | Redak 27: | ||
return args["_default"] or "" | return args["_default"] or "" | ||
end | end | ||
return p | return p | ||
Inačica od 16. travanj 2026. u 11:46
Dokumentacija modula
Kao funkcija parsera switch, ali pronalazi dijelove ili Luaine uzorke, a ne samo pune vrijednosti.
Upotreba
{{#invoke:Switch by pattern|found_in|_input= |patterns1|patterns2|patterns3|keyA=patternsA |keyB=patternsB |_respectcase= |_returnall= |_sep= |_outputsep= |_#default= }}
Primjeri
{{#invoke:Switch by pattern|found_in|_input=[[Animalia|Životinje]]|dark gray=vir|pink=život#animal|lightblue=fung}}→ Lua error at line 24: attempt to call field '_found_in' (a nil value).
{{#invoke:Switch by pattern|found_in|_input=[[Riboviria]]|dark gray=vir|pink=život#animal|lightblue=fung}}→ Lua error at line 24: attempt to call field '_found_in' (a nil value).
{{#invoke:Switch by pattern|found_in|ima jednu znamenku=%D%d$|_input=vrijednost12|ima dvije znamenke=%D%d%d$}}→ Lua error at line 24: attempt to call field '_found_in' (a nil value).
local p = {}
function p.found_in(frame)
local args = {}
-- Sigurno dohvaćanje roditeljskih argumenata
local parent = frame:getParent()
local p_args = parent and parent.args or {}
local f_args = frame.args or {}
-- Logika odabira izvora:
-- Ako roditelj ima _input, koristi roditelja. Inače koristi frame.
local source = (p_args["_input"] and p_args["_input"] ~= "") and p_args or f_args
-- KLJUČNI POPRAVAK: Provjera je li source tablica prije 'pairs'
if type(source) == "table" then
for k, v in pairs(source) do
args[k] = v
end
end
-- Provjera imamo li uopće ulazne podatke
if args["_input"] and args["_input"] ~= "" then
return p._found_in(args)
end
return args["_default"] or ""
end
return p