Módulo:Exemplo

Fonte: Enciclopédia de conhecimento da Igreja de Deus
Saltar para a navegação Saltar para a pesquisa

A documentação para este módulo pode ser criada na página Módulo:Exemplo/doc

local p = {};
	-- Todos os módulos Lua na Wikipédia devem começar definindo uma variável que manterá suas funções acessíveis externamente. Tais variáveis podem ter o nome que você quiser e podem também conter vários dados, bem como funções.
p.ola = function( frame )
	-- Na linha anterior, foi adicionada uma função ("ola") para "p".  Tais funções podem ser chamadas na Wikipédia através  do comando #invoke. "frame" conterá os dados que a Wikipedia envia à esta função quando ela é executada.
	-- "ola" é um nome de sua escolha. O mesmo nome precisa ser referido quando o módulo é usado.
				
				local str = "Olá mundo!"
	-- Na linha anterior foi declarada uma variável local ("str") definida igual a "Olá mundo!".  
				
				return str
	-- A linha anterior nos diz para sair desta função e enviar as informações contidas na variável local "str" de volta à Wikipédia.
				
end
	-- Na linha anterior está o fim da função "ola"
function p.ola_para(frame)
	-- Na linha anterior foi adicionada outra função ("ola_para").
				local nome = frame.args[1]
	-- Na linha anterior foi declarada uma variável local ("nome") definida igual a "frame.args[1].
	-- Para acessar os argumentos passados para um módulo, usamos `frame.args`. `frame.args[1]` refere-se ao primeiro parâmetro não nomeado dado ao módulo.
																												
				return "Olá, " .. nome .. "!"
	-- `..` concatena strings. A linha anterior retornará uma saudação personalizada dependendo do nome fornecido, como "Olá, Fred!"
				
end
	-- Na linha anteior está o fim da função "ola_para".
function p.contar_frutas(frame)
	-- Na linha anterior foi adicionada outra função ("contar_frutas").
	
				local num_bananas = frame.args.bananas
	-- Na linha anterior foi declarada uma variável local ("num_bananas") definida igual a "frame.args.bananas".
	
				local num_macas = frame.args.macas
	-- Na linha anterior foi declarada uma variável local ("num_macas") definida igual a "frame.args.macas".
	-- Argumentos nomeados ({{#invoke:Exemplo|contar_frutas|comida=quantidade}}) são igualmente acessados indexando `frame.args` ao nome (`frame.args["bananas"]`e `frame.args["macas"]`ou, equivalentemente,  `frame.args.bananas` e `frame.args.macas`).
	
				return 'Eu tenho ' .. num_bananas .. ' bananas e ' .. num_macas .. ' maçãs'
	-- Alinha acima, como na função anterior, concatena um monte de strings para produzir uma frase baseada nos argumentos apresentados.
	
end
	-- Na linha anterior está o fim da função "contar_frutas".
local function sortudo(a, b)
	-- É possível definir funções personalizadas para uso. Na linha anterior definimos uma função "sortudo" que tem duas entradas "a" e "b". Os nomes são de sua escolha.
	
				if b == 'sim' then
	-- Na linha anterior temos uma condição: se "b" for a string "sim", então passaremos para a próxima linha. Strings requerem aspas ('). Lembre-se de incluir  "then".
	
								return a .. ' é o meu número da sorte.'
	-- A linha anterior gera a string ""a" é o meu número da sorte." se a condição acima for atendida. O operador de concatenação de strings é indicado por 2 pontos (..).
	
				else
	-- Na linha anterior está a alternativa se a condição da seção "if" não foi(r) atendida. Ou seja, se "b" for qualquer outra coisa diferente de "sim", a saída especificada na próxima linha é gerada.  "else" não deve ter "then".
	
								return a
	-- A linha anterior simplesmente gera um "a".
	
				end
	-- Na linha anterior está o fim da seção "if". A seção "if" deve terminar com "end".
	
end
	-- Na linha anterior está o fim da função "contar_frutas". A função deve terminar com "end".
function p.nome2(frame)
	-- Na linha anterior foi adicionada outra função ("nome2").
	-- As próximas cinco linhas são apenas para conveniência e podem ser usadas como estão para o seu módulo. As condições da saída começam na linha 91.
	
				local pf = frame:getParent().args
	-- Na linha anterior foi declarada uma variável local ("pf") definida igual a "frame:getParent().args".
	-- Essa linha permite que os parâmetros da predefinição sejam usados neste código facilmente. O sinal de igual é usado para definir variáveis. "pf" pode ser substituído por uma palavra de sua escolha.
	
				local f = frame.args
	-- Na linha anterior foi declarada uma variável local ("f") definida igual a "frame.args".
	-- Essa linha permite que os parâmetros de {{#invoke:}} sejam usados facilmente. "f" pode ser substituído por uma palavra de sua escolha.
	
				local M = f[1] or pf[1]
	-- Na linha anterior foi declarada uma variável local ("M") definida igual a "f[1] or pf[1]".
	-- "f[1]" e "pf[1]", que acabamos de definir, referem-se ao primeiro parâmetro. Essa linha encurta-os como "M" por conveniência. Você pode usar os nomes das variáveis originais.
	
				local m = f[2] or pf[2]
	-- Na linha anterior foi declarada uma variável local ("m") definida igual a "f[2] or pf[2]".
	-- Assim temos, nessa linha, o segundo parâmetro encurtado como "m".
	
				local s = f.sortudo or pf.sortudo
	-- Na linha anteior foi declarada uma variável local ("s") definida igual a "f.sortudo or pf.sortudo".
	-- Um parâmetro nomeado "sortudo" é abreviado como "s". Observe que a sintaxe é diferente dos parâmetros não nomeados.
	
				if m == nil then
	-- Na linha anterior temos uma condição: se o segundo parâmetro não for usado (ou seja, se estiver nulo), passamos para a próxima linha.
	
								return 'Sozinho'
	-- A linha anterior gera a string "Sozinho" se a primeira condição for atendida.
	
				elseif M > m then
	-- A linha anterior testa uma segunda condição se a primeira condição não foi(r) atendida: se "M" é maior que "m". Se essa segunda condição foi(r) atendida, passamos para a próxima linha.
	
								return sortudo(M - m, s)
	-- Na linha anterior a diferença é calculada e passada para a função autodefinida junto com "s". A saída depende se "s" está definido como "sim".
	
				else
	-- Na linha anterior está a alternativa se a segunda condição (da seção "elseif") não foi(r) atendida: a próxima linha.
	
								return 'Seja positivo!'
	-- A linha anterior retorna a string "Seja positivo".
								
				end
	-- Na linha anterior está o fim da seção "if".
	
end
	-- Na linha anterior está o fim da função "nome2".
return p
	-- Na linha anterior está o fim do módulo. Todos os módulos terminam retornando a variável contendo suas funções para a Wikipédia.
	
	-- Agora podemos usar este módulo chamando {{#invoke: Exemplo | ola }}, {{#invoke: Exemplo | ola_para | foo }}, ou {{#invoke:Exemplo|contar_frutas|bananas=5|macas=6}}.
	
-- Observe que a primeira parte da chamada é o nome da página wiki do Módulo, e a segunda parte é o nome de uma das funções anexadas à variável que você retornou.
	-- A função "print" não é permitida na Wikipédia. Toda a saída é realizada através de strings "retornadas" à Wikipédia.