Módulo:Exemplo
Aspeto
Este módulo pode ter sua documentação deficiente. Por favor, documente-o ou melhore suas explicações caso o saiba usar ou tenha conhecimentos para tal. |
Esta página não é uma página de testes. Ela não deve ser usada para edição de teste. Para experimentar, por favor use as páginas de testes da Wikipédia, sua página de testes de usuário, ou as outras páginas de testes. |
Esta é uma documentação de exemplo para o módulo, usada para demonstrações e afins.
Ver também
[editar código-fonte]- Módulo:Testes: Para módulos de práticas/experimentos/testes.
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.