En este ejemplo vamos a ver cómo podemos crear una página web HTML mediante Groovy. Vamos a generar un código HTML de una forma muy sencilla apoyándonos en Groovy.
Para poder crear la página HTML vamos a utilizar la clase MarkupBuilder, la misma que utilizábamos para crear un documento XML con Groovy. Lo que sucede en este caso es que con MarkupBuilder vamos a crear los tags de HTML.
Así, lo primero será definir nuestro MarkupBuilder y su respectiva StringWriter que será dónde dejemos el contenido de la página web HTML.
def sw = new StringWriter();
def paginaweb = new groovy.xml.MarkupBuilder(sw)
Ahora, mediante los métodos dinámicos del MarkupBuilder vamos creando la estructura HTML. Hay que recordar que para crear un nodo de la página web HTML haremos lo siguiente:
paginaweb.elemento(atributos,contenido){elementos_hijo}
Vamos a crear el elemento raiz HTML.
paginaweb.html({})
Vemos que como no tiene ni atributos, ni contenido, ni elementos hijo (todavía), lo construimos vacío.
Pero, ahora vamos a insertarle la cabecera o HEAD y el cuerpo o BODY.
paginaweb.html({
head({
title("Pagina Web Generada Con Groovy")
})
body({})
})
Vemos que cada elemento de nuestra página web HTML tiene un método asociado. Y que en el caso del título de la página o TITLE lleva contenido, dicho contenido lo hemos metido como parámetro del metodo.
Ahora vamos a poner un elemento con atributos, por ejemplo, un texto que tenga un enlace. Para ello utilizamos un elemento A y su atributo href.
paginaweb.html({
head({
title("Pagina Web Generada Con Groovy")
})
body({
a(href:"https://lineadecodigo.com","Linea de Codigo")
})
})
Vemos que es muy sencillo ir creando elementos HTML con nuestro MarkupBuilder. De eta forma, el código completo de la página quedará de la siguiente forma:
paginaweb.html({
head({
title("Pagina Web Generada Con Groovy")
})
body({
h1("Pagina creada con Groovy")
p("Esto es una pagina generada mediante un programa Groovy")
hr()
a(href:"https://lineadecodigo.com","Linea de Codigo")
})
})
Ya solo nos quedará crear un fichero .html para volcar el contenido. En este caso utilizamos la clase File para volcar la página web HTML.
def fichero = new File("index.html")
fichero.write(sw.toString())