Crea un archivo hello.luan que contenga:
%>
Hello World
<%
Para ejecutar esto, escribe luan hello.luan en la línea de comandos. Esto debería imprimir Hello World.
La sintaxis aquí está basada en JSP. Cambiémoslo un poco:
local name = "Bob"
%>
Hello <%= name %>
<%
Esto debería imprimir Hello Bob. Ahora intentemos un enfoque más convencional:
local Io = require "luan:Io.luan"
local print = Io.print
print("Hello World")
En Luan, una llamada a función con un argumento de cadena no requiere paréntesis, así que print("Hello World") es lo mismo que print "Hello World" y require "luan:Io.luan" es lo mismo que require("luan:Io.luan"). Tanto require como print son funciones.
La función require toma un URI como argumento. Ejemplos de URIs son luan:Io.luan y file:hello.luan. require se usa para importar un módulo, que es devuelto por la llamada a la función require. En el caso anterior, asignamos el módulo a la variable local Io. La función print es un miembro de este módulo. Podríamos haber hecho Io.print("Hello World") pero en su lugar elegimos asignar print a una variable local y usar eso para llamar a la función.
Luan comienza con solo una función definida: require. Usarás require para importar lo que necesites. Esto es un poco más de trabajo, pero hace claro en cada archivo de dónde proviene cada función.
Hagamos una versión más elegante:
local Io = require "luan:Io.luan"
local print = Io.print
local function hello(name)
print("Hello "..name)
end
hello("Bob")
El operador .. hace concatenación. Esto imprimirá Hello Bob.
Ahora hagamos una página web. Primero necesitamos un directorio para nuestro sitio web. Así que crea un directorio src. En este directorio, crea un archivo hi.html.luan que contenga:
local Io = require "luan:Io.luan"
local Http = require "luan:http/Http.luan"
return function()
Io.stdout = Http.response.text_writer()
%>
<!doctype html>
<html>
<body>
Hello World
</body>
</html>
<%
end
Ahora vuelve al directorio padre y haz luan luan:http/serve.luan src. Esto ejecutará el servidor web de Luan en el puerto 8080. Intenta ir a http://localhost:8080/. Deberías ver el directorio. Si haces clic en hi.html.luan verás el código fuente. Pero si quitas el .luan y solo vas a http://localhost:8080/hi.html entonces ejecutarás el programa que generará la página web. De hecho, la página que estás viendo actualmente tutorial.html se genera a partir de tutorial.html.luan.
El servidor web de Luan espera que el archivo devuelva una función y la llama para generar la página. El código de la forma %>...<% escribe su salida en Io.stdout que por defecto es la salida estándar de la línea de comandos. Así que en la función devuelta uno usualmente comienza configurando Io.stdout a un text_writer que escribe su salida en la respuesta HTTP (al navegador web).
Puedes encontrar este ejemplo y otros en el directorio de ejemplos. Echa un vistazo a hi2.html.luan a continuación. Recuerda quitar el .luan de la URL para ejecutar el código.
Así que ahora has construido tu sitio web y quieres publicarlo en la web. Si tienes tu propio dominio, crea un registro CNAME para él apuntando a s1.luan.software. Si no tienes un dominio, simplemente usa un dominio como bob.s1.luan.software (cualquier cosa de la forma *.s1.luan.software). Suponiendo que tu directorio es src y usarás la contraseña secret, haz lo siguiente desde la línea de comandos:
luan luan:host/push.luan bob.s1.luan.software secret src
La forma es luan luan:host/push.luan domain password directory. Si cambias tu sitio, simplemente ejecuta esto de nuevo y tu sitio se actualizará. Para eliminar tu sitio, haz luan luan:host/delete.luan domain password.
Esperamos que este breve tutorial te haya dado una idea de cómo usar Luan para hacer un sitio web.