Impostazioni base di un modulo LUA
[modifica]Funzione unica multi-purpose
[modifica]local function tablelength(T) local count = 0 for _ in pairs(T) do count = count + 1 end return count end local p = {} function p.Marker(frame) local args = frame.args frame = mw.getCurrentFrame():getParent() if frame and (tablelength( frame.args ) > 0) then --WIKI-TEMPLATE CASE args = frame.args else frame = mw.getCurrentFrame() --INVOKE CASE end ... end return p
Funzioni separate "monouso"
[modifica]Oggetto frame necessario
[modifica]local function _Marker(frame) local args = frame.args ... end local p = {} function p.MarkerTemplate(frame) return _Marker(frame:getParent()) end function p.MarkerInvoke(frame) return _Marker(frame) end function p.MarkerModule(frame) local Cframe = mw.getCurrentFrame() Cframe.args = frame.args return _Marker(Cframe) end return p
Interfaccia per valore scalare
[modifica]function p.IsInCatVal(value) local Cframe = mw.getCurrentFrame() Cframe.args = {value} return _IsInCat(Cframe) end
Tabella args sufficiente
[modifica]local function _avviso(frame) local args = frame.args ... end local p = {} function p.avvisoTemplate(frame) return _avviso(frame:getParent()) end function p.avviso(frame) return _avviso(frame) end return p
Interfaccia per valore scalare
[modifica]function p.IsRedirectVal(value) return p.IsRedirect{args={value}} end
Debug
[modifica]Esempio di test da console
[modifica]local frame = {args={...}} local output = p.nomeFunzione(frame) print( output ) --mw.logObject( output )
Stampa tabella a console
[modifica]local function printTable( tab, separator ) tab = tab or {} local output = '' separator = separator or ', ' for key, val in pairs( tab ) do output = output .. tostring(key) .. '=' .. (val and tostring(val) or 'nil') .. separator end local lastchar = ((#output - #separator)<0) and #output or (#output - #separator) return string.sub( output, 1 , lastchar) end ... output = "§§§>>>\n" .. printTable( args, "\n" ) .. '\n<<<§§§' print( output )