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]

Modulo:Marker

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]

Modulo:IsInCat

function p.IsInCatVal(value) 	local Cframe = mw.getCurrentFrame() 	Cframe.args = {value} 	return _IsInCat(Cframe) end 

Tabella args sufficiente

[modifica]

Modulo:Avviso

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]

Modulo:IsRedirect

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  )