Utente:Andyrom75/Sandbox3
Aspetto
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 )