AjGenesis Generación de Código en .NET, Javascript y Ruby, Las Puertas Están Abiertas

Published on Author lopezLeave a comment

Tengo la costumbre de levantar temprano en la mañana. El martes pasado, me levanté algo más temprano, todavía, porque tenía una idea rondando en la cabeza. La semana pasada trabajé bastante con Javascript y Node.js, en mis proyectos personales, y había conseguido algo que ahora veía que podía fácilmente implementar en Ruby. No lo había hecho por meses, porque no me parecía que hubiera un camino claro, pero luego de mi experiencia de la semana pasada, tomé la decisión de cómo implementarlo. Estoy hablando de tener un motor de plantillas (“template engine”) para mi generador de código AjGenesis, ahora en Ruby. Puse manos a la obra, y en tres horas tuve algo andando, armado usando TDD (con “commits” frecuentes que pueden ver en el log de GitHub).

El resultado quedón en mi cuenta de GitHub:

https://github.com/ajlopez/AjGenesisRb

Inicialmente, había planeado (el año pasado) usar uno de los motores de plantillas ya disponibles en Ruby, como Haml. Pero preferí escribir mi propia implementación, más alineada con el AjGenesis original. Esto lo tomé luego de la buena experiencia que tuve la semana pasada cuando escribí AjGenesis en Javascript/NodeJs, ver:

https://github.com/ajlopez/AjGenesisNode

En ese proyecto, separé el motor de plantilla en otro paquete, ya publicado en NPM:

https://github.com/ajlopez/SimpleTpl

De esta manera pude reusar el formato de plantilla en otro proyecto Javascript sobre Express,:

https://github.com/ajlopez/SimpleMvc

una simple implementación de MVC (Model View Controller).

Entonces, ahora tengo tres proyectos:

El clásico AjGenesis, implementado en .NET (ver el directorio de ejemplos)
AjGenesis en Javascript/Node, usando la SimpleTpl template engine, con interpolación de expresiones Javascript y con soporte de comandos Javascript embebidos en el medio de la plantilla (ver directorio samples)
AjGenesis en Ruby, con un motor interno de plantillas similar al anterior, con soporte de expresiones y comandos Ruby embebidos (ver directorio samples)

AjGenesis en Javascript fue publicado en npm (Node Package Manager) como beta.

AjGenesis en Ruby no está todavía como gema.

RECUERDEN: todos estos proyectos GENERAN los artefactos de texto QUE QUIERAN. No son sólo para un lenguaje. Por ejemplo, desde AjGenesis en Javascript generé una solución para .NET, ver los ejemplos.

Es muy interesante ver cómo ideas simples pero poderosas pueden ser reimplementadas en lenguajes dinámicos (de ahí mi temprano interés en tener desde hace años a AjBasic y más recientemente, a AjSharp). Próximos pasos: más ejemplos, línea de comando, gema ruby, release de paquete node (ya no beta), y sitio web implementando “Code Generation as a Service” (ASP.NET implementation commented in my old post). (ver también AjGenesis: Basis of Its Implementation).

Otros lenguajes de implementación pendiantes: Python, quizás Java.

(La foto original desde: http://commons.wikimedia.org/wiki/File:Table_Rock_Dam_during_April_2008_White_River_Flood.jpg)

Nos leemos!

Angel “Java” Lopez
http://www.ajlopez.com
http://twitter.com/ajlopez

Leave a Reply

Your email address will not be published. Required fields are marked *