Vai al contenuto

Utente:Andyrom75/Sandbox3

Da Wikivoyage.

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  )