Módulo: Ejemplo

local  p  =  {}  --Todos los módulos Lua en Wikipedia deben comenzar definiendo una variable --que contendrá sus funciones accesibles externamente. --Estas variables pueden tener cualquier nombre que desee y pueden --también contener varios datos además de funciones. p . hello = function ( frame ) --Agrega una función a "p". --Estas funciones se pueden llamar en Wikipedia --mediante el comando #invoke. --"frame" contendrá los datos que Wikipedia --envía a esta función cuando se ejecuta. -- 'Hello' es un nombre de su elección. Se debe hacer referencia al mismo nombre cuando se usa el módulo. local str = "¡Hola mundo!" --Declara una variable local y configúrala como --"¡Hola mundo!". return str --Esto nos indica que abandonemos esta función y enviemos la información en --"str" ​​de vuelta a Wikipedia. end --fin de la función "hello" function p . hello_to ( frame ) --Agrega otra función local name = frame . args [ 1 ] -- Para acceder a los argumentos pasados ​​a un módulo, use `frame.args` -- `frame.args[1]` se refiere al primer parámetro sin nombre -- dado al módulo return "Hola, " .. name .. "!" -- `..` concatena cadenas. Esto devolverá un saludo personalizado -- dependiendo del nombre dado, como "¡Hola, Fred!" end function p . count_fruit ( frame ) local num_bananas = tonumber ( frame . args . bananas ) or 0 -- Argumentos nombrados ({{#invoke:Example|count_fruit|foo=bar}}) local num_apples = tonumber ( frame . args . apples ) or 0 -- también se accede indexando `frame.args` por nombre (`frame.args["bananas"]`, -- o equivalentemente `frame.args.bananas`.conj_bananas local = num_bananas == 1 y 'banana' o 'bananas' conj_apples local = num_apples == 1                                                                    y  'manzana'  o  'manzanas' -- Los operadores ternarios asignan valores basados ​​en una condición de una manera compacta. -- Aquí, `conj_bananas` obtiene `'banana'` si `num_bananas` es 1, de lo contrario `'bananas'`. -- De manera similar, `conj_apples` obtiene `'manzana'` si `num_apples` es 1, de lo contrario `'manzanas'`. return 'Tengo ' .. num_bananas .. ' ' .. conj_bananas .. ' y ' .. num_apples .. ' ' .. conj_apples -- Como arriba, concatena un montón de cadenas para producir -- una oración basada en los argumentos dados. end local function lucky ( a , b ) -- Se pueden definir funciones personalizadas para su uso. Aquí definimos una función 'lucky' que tiene dos entradas a y b. Los nombres son de su elección. if b == 'yeah' then -- Condición: si b es la cadena 'yeah'. Las cadenas requieren comillas. Recuerde incluir 'then'. return a .. ' es mi número de la suerte.' -- Muestra 'a es mi número de la suerte.' si se cumple la condición anterior. El operador de concatenación de cadenas se denota por 2 puntos. else -- Si no se cumplen las condiciones, es decir, si b es cualquier otra cosa, la salida especificada en la siguiente línea. 'else' no debe tener 'then'. return a -- Simplemente muestra a. end -- La sección 'if' debe terminar con 'end'. end -- Como debería hacerlo 'function'. function p . Name2 ( frame ) -- Las siguientes cinco líneas son principalmente para conveniencia y se pueden usar tal cual para su módulo. Las condiciones de salida comienzan en la línea 50. local pf = frame : getParent (). args -- Esta línea permite que los parámetros de plantilla se usen en este código fácilmente. El signo igual se usa para definir variables. 'pf' se puede reemplazar con una palabra de su elección. local f = frame . args -- Esta línea permite que los parámetros de {{#invoke:}} se usen fácilmente. 'f' puede reemplazarse por una palabra de su elección. local M = f [ 1 ] o pf [ 1 ] -- f[1] y pf[1], que acabamos de definir, hacen referencia al primer parámetro. Esta línea los abrevia como 'M' para mayor comodidad.Podrías utilizar los nombres de variables originales. local m =                                                        f [ 2 ]  o  pf [ 2 ]  -- Segundo abreviado como 'm'. local l = f . lucky o pf . lucky -- Un parámetro nombrado 'lucky' se abrevia como l. Tenga en cuenta que la sintaxis es diferente de los parámetros sin nombre. if m == nil then -- Si no se utiliza el segundo parámetro. return 'Lonely' -- Genera la cadena 'Lonely' si se cumple la primera condición. elseif M > m then -- Si no se cumple la primera condición, esta línea prueba una segunda condición: si M es mayor que m. return lucky ( M - m , l ) -- Si se cumple la condición, se calcula la diferencia y se pasa a la función autodefinida junto con l. La salida depende de si l está configurado en 'yeah'. else return 'Be positive!' end end return p --Todos los módulos terminan devolviendo la variable que contiene sus funciones a Wikipedia. -- Ahora podemos usar este módulo llamando a {{#invoke: Example | hello }}, -- {{#invoke: Example | hello_to | foo }}, o {{#invoke:Example|count_fruit|bananas=5|apples=6}} -- Tenga en cuenta que la primera parte de la invocación es el nombre de la página wiki del módulo, -- y la segunda parte es el nombre de una de las funciones adjuntas a la -- variable que ha devuelto. -- La función "imprimir" no está permitida en Wikipedia. Toda la salida se logra -- a través de cadenas "devueltas" a Wikipedia.                          
Obtenido de "https://es.wikipedia.org/w/index.php?title=Módulo:Ejemplo&oldid=1256858646"