Modul:Switch by pattern

Izvor: Hrvatska internetska enciklopedija
Inačica 754526 od 16. travanj 2026. u 11:46 koju je unio WikiSysop (razgovor | doprinosi)
Prijeđi na navigaciju Prijeđi na pretraživanje
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